Parent directory

api_setup_test.go

1176 bytes
 1package ytrssil_test
 2
 3import (
 4	"fmt"
 5	"log/slog"
 6	"net/http"
 7	"net/http/httptest"
 8	"os"
 9	"testing"
10	"time"
11
12	"github.com/gin-gonic/gin"
13	"github.com/stretchr/testify/suite"
14
15	"github.com/TheEdgeOfRage/ytrssil-api/config"
16	"github.com/TheEdgeOfRage/ytrssil-api/handler"
17	"github.com/TheEdgeOfRage/ytrssil-api/httpserver/ytrssil"
18)
19
20func init() {
21	// always use UTC
22	time.Local = time.UTC
23}
24
25type APITestSuite struct {
26	suite.Suite
27
28	cfg    config.Config
29	server *http.Server
30}
31
32func TestAPITestSuite(t *testing.T) {
33	suite.Run(t, new(APITestSuite))
34}
35
36func (s *APITestSuite) SetupSuite() {
37	l := slog.New(slog.NewTextHandler(os.Stderr, nil))
38	s.cfg = config.TestConfig()
39
40	handler := handler.New(
41		l,
42		nil,
43		nil,
44		nil,
45		nil,
46		s.cfg,
47	)
48
49	gin.SetMode(gin.TestMode)
50	router, err := ytrssil.SetupGinRouter(l, s.cfg, handler)
51	s.Require().NoError(err)
52
53	s.server = &http.Server{
54		Addr:    fmt.Sprintf(":%v", s.cfg.Port),
55		Handler: router,
56	}
57}
58
59func (s *APITestSuite) TestHealthz() {
60	w := httptest.NewRecorder()
61	req, _ := http.NewRequest("GET", "/healthz", nil)
62	s.server.Handler.ServeHTTP(w, req)
63
64	s.Equal(http.StatusOK, w.Code)
65	s.Equal("healthy", w.Body.String())
66}