package dashboard import ( "net/http" "testing" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/domain" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/test" "gotest.tools/v3/assert" ) func TestController(t *testing.T) { mux := http.NewServeMux() controller := New() controller.MountTo(mux) t.Run("GET /dashboard", func(t *testing.T) { t.Run("when unauthenticated", func(t *testing.T) { t.Run("redirects to the home page", func(t *testing.T) { r, w := test.RequestResponse("GET", "/dashboard") mux.ServeHTTP(w, r) assert.Equal(t, http.StatusFound, w.Code) location := w.HeaderMap.Get("Location") assert.Equal(t, "/", location) }) }) t.Run("when authenticated", func(t *testing.T) { t.Run("renders a dashboard page", func(t *testing.T) { ctx := CurrentUserKey.With(t.Context(), &domain.User{}) r, w := test.RequestResponse("GET", "/dashboard", test.WithContext(ctx)) mux.ServeHTTP(w, r) assert.Equal(t, http.StatusOK, w.Code) assert.Equal(t, "text/html", w.Header().Get("Content-Type")) }) }) }) }