diff options
Diffstat (limited to 'app/controllers/sessions/controller_test.go')
| -rw-r--r-- | app/controllers/sessions/controller_test.go | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/app/controllers/sessions/controller_test.go b/app/controllers/sessions/controller_test.go index 9b701d6..00e3f4e 100644 --- a/app/controllers/sessions/controller_test.go +++ b/app/controllers/sessions/controller_test.go @@ -1,9 +1,6 @@ package sessions import ( - "encoding/base64" - "encoding/json" - "fmt" "net/http" "net/url" "testing" @@ -133,29 +130,28 @@ func TestSessions(t *testing.T) { return ck }) - cookie := x.Find(cookies, func(item *http.Cookie) bool { - return item.Name == xcfg.SessionCookie - }) - data, err := base64.URLEncoding.DecodeString(web.CookieValueFrom(cookie)) - require.NoError(t, err) - tokens := map[string]interface{}{} - require.NoError(t, json.Unmarshal(data, &tokens)) - t.Run("stores the id token in a session cookie", func(t *testing.T) { - require.NotEmpty(t, tokens["id_token"]) + cookie := x.Find(cookies, func(item *http.Cookie) bool { + return item.Name == xcfg.IDTokenCookie + }) - idToken := srv.Verify(tokens["id_token"].(string)) + require.NotNil(t, cookie) + + idToken := srv.Verify(cookie.Value) assert.Equal(t, user.Subject, idToken.Subject) }) t.Run("stores the access token in a session cookie", func(t *testing.T) { - assert.NotEmpty(t, tokens["access_token"]) - assert.Equal(t, "bearer", tokens["token_type"]) + cookie := x.Find(cookies, func(item *http.Cookie) bool { + return item.Name == xcfg.BearerTokenCookie + }) + + require.NotNil(t, cookie) keypair, err := mockoidc.DefaultKeypair() require.NoError(t, err) - token, err := keypair.VerifyJWT(tokens["access_token"].(string), nil) + token, err := keypair.VerifyJWT(cookie.Value, nil) require.NoError(t, err) sub, err := token.Claims.GetSubject() @@ -164,12 +160,15 @@ func TestSessions(t *testing.T) { }) t.Run("stores the refresh token in a session cookie", func(t *testing.T) { - assert.NotEmpty(t, tokens["refresh_token"]) + cookie := x.Find(cookies, func(item *http.Cookie) bool { + return item.Name == xcfg.RefreshTokenCookie + }) + require.NotNil(t, cookie) keypair, err := mockoidc.DefaultKeypair() require.NoError(t, err) - token, err := keypair.VerifyJWT(tokens["refresh_token"].(string), nil) + token, err := keypair.VerifyJWT(cookie.Value, nil) require.NoError(t, err) sub, err := token.Claims.GetSubject() @@ -183,11 +182,13 @@ func TestSessions(t *testing.T) { }) t.Run("applies the appropriate cookie settings", func(t *testing.T) { - assert.Equal(t, "/", cookie.Path) - assert.Equal(t, xcfg.SessionCookie, cookie.Name) - assert.True(t, cookie.HttpOnly) - assert.True(t, cookie.Secure) - assert.NotEmpty(t, cookie.Value) + x.Each(cookies, func(cookie *http.Cookie) { + t.Logf("%v: %v\n", cookie.Name, cookie.Value) + assert.Equal(t, "/", cookie.Path) + assert.NotEmpty(t, cookie.Name) + assert.True(t, cookie.HttpOnly) + assert.True(t, cookie.Secure) + }) }) }) }) @@ -204,7 +205,6 @@ func TestSessions(t *testing.T) { require.Equal(t, http.StatusOK, w.Code) items, err := serde.FromJSON[map[string]interface{}](w.Body) require.NoError(t, err) - fmt.Printf("%v\n", items) assert.Equal(t, srv.Issuer(), items["iss"]) }) @@ -219,7 +219,7 @@ func TestSessions(t *testing.T) { t.Run("POST /session/destroy", func(t *testing.T) { t.Run("clears the session cookie", func(t *testing.T) { - cookie := web.NewCookie(xcfg.SessionCookie, "value") + cookie := web.NewCookie(xcfg.IDTokenCookie, "value") r, w := test.RequestResponse("POST", "/session/destroy", test.WithCookie(cookie)) mux.ServeHTTP(w, r) @@ -229,7 +229,9 @@ func TestSessions(t *testing.T) { expected := []string{ "__csrf=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; HttpOnly; Secure", - "__s=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; HttpOnly; Secure", + "id_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; HttpOnly; Secure", + "bearer_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; HttpOnly; Secure", + "refresh_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; HttpOnly; Secure", } assert.ElementsMatch(t, expected, w.Header().Values("Set-Cookie")) }) |
