auth_test.go
1720 bytes
1package ytrssil_test
2
3import (
4 "net/http"
5 "net/http/httptest"
6 "net/url"
7 "strings"
8 "testing"
9
10 "github.com/stretchr/testify/suite"
11)
12
13type AuthTestSuite struct {
14 EndpointsTestSuite
15}
16
17func TestAuthTestSuite(t *testing.T) {
18 suite.Run(t, new(AuthTestSuite))
19}
20
21func (s *AuthTestSuite) TestAuthPage() {
22 w := httptest.NewRecorder()
23 req, _ := http.NewRequest("GET", "/auth", nil)
24 s.server.Handler.ServeHTTP(w, req)
25
26 s.Equal(http.StatusOK, w.Code)
27 s.Contains(w.Body.String(), "Authentication")
28}
29
30func (s *AuthTestSuite) TestHandleAuthSuccess() {
31 form := url.Values{}
32 form.Add("token", s.cfg.AuthToken)
33
34 w := httptest.NewRecorder()
35 req, _ := http.NewRequest("POST", "/auth", strings.NewReader(form.Encode()))
36 req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
37 s.server.Handler.ServeHTTP(w, req)
38
39 s.Equal(http.StatusFound, w.Code)
40 cookies := w.Result().Cookies()
41 s.Require().Len(cookies, 1)
42 s.Equal("token", cookies[0].Name)
43 s.Equal(s.cfg.AuthToken, cookies[0].Value)
44 s.Equal("/", w.Header().Get("Location"))
45}
46
47func (s *AuthTestSuite) TestHandleAuthInvalidToken() {
48 form := url.Values{}
49 form.Add("token", "invalid-token")
50
51 w := httptest.NewRecorder()
52 req, _ := http.NewRequest("POST", "/auth", strings.NewReader(form.Encode()))
53 req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
54 s.server.Handler.ServeHTTP(w, req)
55
56 s.Equal(http.StatusBadRequest, w.Code)
57 s.Contains(w.Body.String(), "Invalid token")
58}
59
60func (s *AuthTestSuite) TestAuthMiddleware() {
61 w := httptest.NewRecorder()
62 req, _ := http.NewRequest("GET", "/", nil)
63 req.AddCookie(&http.Cookie{Name: "token", Value: s.cfg.AuthToken})
64 s.server.Handler.ServeHTTP(w, req)
65
66 s.Equal(http.StatusOK, w.Code)
67}