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}