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)
}
})
}
}