diff options
Diffstat (limited to 'internal/auth/auth_test.go')
-rw-r--r-- | internal/auth/auth_test.go | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/internal/auth/auth_test.go b/internal/auth/auth_test.go index 711dea78..ffaf5b6f 100644 --- a/internal/auth/auth_test.go +++ b/internal/auth/auth_test.go @@ -29,6 +29,18 @@ func defaultCookieStore() sessions.Store { return createCookieStore("something-very-secret") } +type domainMock struct { + projectID uint64 +} + +func (dm *domainMock) GetProjectID(r *http.Request) uint64 { + return dm.projectID +} + +func (dm *domainMock) ServeNotFoundAuthFailed(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotFound) +} + // Gorilla's sessions use request context to save session // Which makes session sharable between test code and actually manipulating session // Which leads to negative side effects: we can't test encryption, and cookie params @@ -180,10 +192,9 @@ func TestCheckAuthenticationWhenAccess(t *testing.T) { session, _ := store.Get(r, "gitlab-pages") session.Values["access_token"] = "abc" session.Save(r, result) - - contentServed, authFailed := auth.CheckAuthentication(result, r, 1000) + contentServed := auth.CheckAuthentication(result, r, &domainMock{projectID: 1000}) require.False(t, contentServed) - require.False(t, authFailed) + // content wasn't served so the default response from CheckAuthentication should be 200 require.Equal(t, 200, result.Code) } @@ -222,11 +233,10 @@ func TestCheckAuthenticationWhenNoAccess(t *testing.T) { session.Values["access_token"] = "abc" session.Save(r, result) - contentServed, authFailed := auth.CheckAuthentication(result, r, 1000) - require.False(t, contentServed) - require.True(t, authFailed) + contentServed := auth.CheckAuthentication(result, r, &domainMock{projectID: 1000}) + require.True(t, contentServed) // content wasn't served so the default response from CheckAuthentication should be 200 - require.Equal(t, 200, result.Code) + require.Equal(t, 404, result.Code) } func TestCheckAuthenticationWhenInvalidToken(t *testing.T) { @@ -263,9 +273,8 @@ func TestCheckAuthenticationWhenInvalidToken(t *testing.T) { session.Values["access_token"] = "abc" session.Save(r, result) - contentServed, authFailed := auth.CheckAuthentication(result, r, 1000) + contentServed := auth.CheckAuthentication(result, r, &domainMock{projectID: 1000}) require.True(t, contentServed) - require.False(t, authFailed) require.Equal(t, 302, result.Code) } @@ -303,9 +312,8 @@ func TestCheckAuthenticationWithoutProject(t *testing.T) { session.Values["access_token"] = "abc" session.Save(r, result) - contentServed, authFailed := auth.CheckAuthenticationWithoutProject(result, r) + contentServed := auth.CheckAuthenticationWithoutProject(result, r, &domainMock{projectID: 0}) require.False(t, contentServed) - require.False(t, authFailed) require.Equal(t, 200, result.Code) } @@ -342,9 +350,8 @@ func TestCheckAuthenticationWithoutProjectWhenInvalidToken(t *testing.T) { session.Values["access_token"] = "abc" session.Save(r, result) - contentServed, authFailed := auth.CheckAuthenticationWithoutProject(result, r) + contentServed := auth.CheckAuthenticationWithoutProject(result, r, &domainMock{projectID: 0}) require.True(t, contentServed) - require.False(t, authFailed) require.Equal(t, 302, result.Code) } |