package test import ( "RenewCMS/api/handlers/article" domainArticle "RenewCMS/internal/domain/article" "RenewCMS/internal/infrastructure/useCases" "encoding/json" "net/http" "net/http/httptest" "testing" "github.com/go-chi/chi/v5" "github.com/go-chi/jwtauth/v5" validator "RenewCMS/api/pkg/validator" ) func newArticlesListRouter(articleRepo *mockArticleRepo, token *jwtauth.JWTAuth) *chi.Mux { userRepo := newVerifiedUserRepo() getUserUseCase := useCases.NewGetUserUseCase(userRepo) articleHandler := article.NewHandler( useCases.NewCreateArticleUseCase(articleRepo, &fakeBodyRenderer{}, discardRecorder, plainSites()), useCases.NewGetArticleUseCase(articleRepo, &fakeBodyRenderer{}), useCases.NewListArticlesUseCase(articleRepo, &fakeBodyRenderer{}, plainSites()), useCases.NewDeleteArticleUseCase(articleRepo, discardRecorder), useCases.NewUpdateArticleUseCase(articleRepo, &fakeBodyRenderer{}, discardRecorder, plainSites()), getUserUseCase, ) r := chi.NewRouter() r.Route("/v1", func(r chi.Router) { r.Route("/article", func(r chi.Router) { r.Use(jwtauth.Verifier(token)) r.Get("/", articleHandler.ListArticles) }) }) return r } func TestArticlesListHttp(t *testing.T) { validator.InitValidator() token := jwtauth.New("HS256", []byte("test-secret"), nil) t.Run("GET /v1/article/ items carry no images field now that images belong to the library", func(t *testing.T) { repo := newMockArticleRepo() repo.articles[4] = domainArticle.Article{ID: 4, Title: "Winter checklist for timber windows"} router := newArticlesListRouter(repo, token) req := httptest.NewRequest(http.MethodGet, "/v1/article/", nil) setJwtCookie(t, req, token, 1) rec := httptest.NewRecorder() router.ServeHTTP(rec, req) if rec.Code != http.StatusOK { t.Fatalf("expected status 200, got %d", rec.Code) } var got []map[string]any if err := json.Unmarshal(articleItemsJSON(rec.Body.Bytes()), &got); err != nil { t.Fatalf("failed to decode response: %v", err) } if len(got) != 1 { t.Fatalf("expected 1 article, got %d", len(got)) } if _, present := got[0]["images"]; present { t.Errorf("expected no images field, got %v", got[0]["images"]) } }) }