diff options
author | Jaime Martinez <jmartinez@gitlab.com> | 2020-06-09 09:20:31 +0300 |
---|---|---|
committer | Jaime Martinez <jmartinez@gitlab.com> | 2020-07-06 02:13:51 +0300 |
commit | 2a23f2fb9bca74302dcdc40def50c748da4a5e06 (patch) | |
tree | 31698c64ca1b9b8dc370aa42d5015c63f5ca7fcb /internal/auth/auth_test.go | |
parent | 8e4dff76f1015bf10bdaedc295f726e80958bba1 (diff) |
Move serving 404 logic to domain package
Simplify responsibilities of auth package and reduce
complexity of app.go deciding which content to serve.
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) } |