diff options
Diffstat (limited to 'internal/middlewares/authelia_context_test.go')
| -rw-r--r-- | internal/middlewares/authelia_context_test.go | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/internal/middlewares/authelia_context_test.go b/internal/middlewares/authelia_context_test.go index bd857c835..3149c10a7 100644 --- a/internal/middlewares/authelia_context_test.go +++ b/internal/middlewares/authelia_context_test.go @@ -16,6 +16,62 @@ import ( "github.com/authelia/authelia/v4/internal/session" ) +func TestContentTypes(t *testing.T) { + testCases := []struct { + name string + setup func(ctx *middlewares.AutheliaCtx) (err error) + expected string + }{ + { + name: "ApplicationJSON", + setup: func(ctx *middlewares.AutheliaCtx) (err error) { + ctx.SetContentTypeApplicationJSON() + + return nil + }, + expected: "application/json; charset=utf-8", + }, + { + name: "ApplicationYAML", + setup: func(ctx *middlewares.AutheliaCtx) (err error) { + ctx.SetContentTypeApplicationYAML() + + return nil + }, + expected: "application/yaml; charset=utf-8", + }, + { + name: "TextPlain", + setup: func(ctx *middlewares.AutheliaCtx) (err error) { + ctx.SetContentTypeTextPlain() + + return nil + }, + expected: "text/plain; charset=utf-8", + }, + { + name: "TextHTML", + setup: func(ctx *middlewares.AutheliaCtx) (err error) { + ctx.SetContentTypeTextHTML() + + return nil + }, + expected: "text/html; charset=utf-8", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + mock := mocks.NewMockAutheliaCtx(t) + defer mock.Close() + + assert.NoError(t, tc.setup(mock.Ctx)) + + assert.Equal(t, tc.expected, string(mock.Ctx.Response.Header.ContentType())) + }) + } +} + func TestIssuerURL(t *testing.T) { testCases := []struct { name string @@ -44,8 +100,8 @@ func TestIssuerURL(t *testing.T) { mock := mocks.NewMockAutheliaCtx(t) defer mock.Close() - mock.Ctx.Request.Header.Set("X-Forwarded-Proto", tc.proto) - mock.Ctx.Request.Header.Set("X-Forwarded-Host", tc.host) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, tc.proto) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedHost, tc.host) if tc.base != "" { mock.Ctx.SetUserValue("base_url", tc.base) @@ -103,8 +159,8 @@ func TestShouldGetOriginalURLFromOriginalURLHeader(t *testing.T) { func TestShouldGetOriginalURLFromForwardedHeadersWithoutURI(t *testing.T) { mock := mocks.NewMockAutheliaCtx(t) defer mock.Close() - mock.Ctx.Request.Header.Set("X-Forwarded-Proto", "https") - mock.Ctx.Request.Header.Set("X-Forwarded-Host", "home.example.com") + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, "https") + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedHost, "home.example.com") originalURL, err := mock.Ctx.GetOriginalURL() assert.NoError(t, err) @@ -142,7 +198,7 @@ func TestShouldOnlyFallbackToNonXForwardedHeadersWhenNil(t *testing.T) { mock.Ctx.RequestCtx.Request.SetHost("localhost") mock.Ctx.RequestCtx.Request.Header.Set(fasthttp.HeaderXForwardedHost, "auth.example.com:1234") mock.Ctx.RequestCtx.Request.Header.Set("X-Forwarded-URI", "/base/2fa/one-time-password") - mock.Ctx.RequestCtx.Request.Header.Set("X-Forwarded-Proto", "https") + mock.Ctx.RequestCtx.Request.Header.Set(fasthttp.HeaderXForwardedProto, "https") mock.Ctx.RequestCtx.Request.Header.Set("X-Forwarded-Method", "GET") assert.Equal(t, []byte("https"), mock.Ctx.XForwardedProto()) |
