46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
package externaladmin
|
|
|
|
import (
|
|
"bytes"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func TestExternalAuthResponsesAlwaysDisableCachingIncludingErrors(t *testing.T) {
|
|
gin.SetMode(gin.TestMode)
|
|
engine := gin.New()
|
|
RegisterExternalRoutes(engine.Group("/api/v1"), New(nil, nil, Config{}, nil), BusinessHandlers{})
|
|
|
|
tests := []struct {
|
|
name string
|
|
method string
|
|
path string
|
|
body string
|
|
}{
|
|
{name: "login validation error", method: http.MethodPost, path: "/api/v1/external/auth/login", body: `{}`},
|
|
{name: "me auth error", method: http.MethodGet, path: "/api/v1/external/auth/me"},
|
|
{name: "logout auth error", method: http.MethodPost, path: "/api/v1/external/auth/logout"},
|
|
{name: "change password auth error", method: http.MethodPost, path: "/api/v1/external/auth/change-password", body: `{}`},
|
|
}
|
|
for _, testCase := range tests {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
request := httptest.NewRequest(testCase.method, testCase.path, bytes.NewBufferString(testCase.body))
|
|
request.Header.Set("Content-Type", "application/json")
|
|
responseRecorder := httptest.NewRecorder()
|
|
engine.ServeHTTP(responseRecorder, request)
|
|
if responseRecorder.Code < http.StatusBadRequest {
|
|
t.Fatalf("expected error response, status=%d body=%s", responseRecorder.Code, responseRecorder.Body.String())
|
|
}
|
|
if got := responseRecorder.Header().Get("Cache-Control"); got != "no-store" {
|
|
t.Fatalf("Cache-Control = %q", got)
|
|
}
|
|
if got := responseRecorder.Header().Get("Pragma"); got != "no-cache" {
|
|
t.Fatalf("Pragma = %q", got)
|
|
}
|
|
})
|
|
}
|
|
}
|