Parent directory

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}