@@ -9,6 +9,7 @@ import (
11 "github.com/oauth2-proxy/oauth2-proxy/pkg/encryption"
11 "github.com/oauth2-proxy/oauth2-proxy/pkg/encryption"
12+ . "github.com/onsi/gomega"
12 "github.com/stretchr/testify/assert"
13 "github.com/stretchr/testify/assert"
@@ -16,6 +17,101 @@ func timePtr(t time.Time) *time.Time {
20+func TestString(t *testing.T) {
22+ created, err := time.Parse(time.RFC3339, "2000-01-01T00:00:00Z")
23+ g.Expect(err).ToNot(HaveOccurred())
24+ expires, err := time.Parse(time.RFC3339, "2000-01-01T01:00:00Z")
25+ g.Expect(err).ToNot(HaveOccurred())
27+ testCases := []struct {
29+ sessionState *SessionState
33+ name: "Minimal Session",
34+ sessionState: &SessionState{
35+ Email: "email@email.email",
37+ PreferredUsername: "preferred.user",
39+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user}",
42+ name: "Full Session",
43+ sessionState: &SessionState{
44+ Email: "email@email.email",
46+ PreferredUsername: "preferred.user",
49+ AccessToken: "access.token",
51+ RefreshToken: "refresh.token",
53+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user token:true id_token:true created:2000-01-01 00:00:00 +0000 UTC expires:2000-01-01 01:00:00 +0000 UTC refresh_token:true}",
56+ name: "With a CreatedAt",
57+ sessionState: &SessionState{
58+ Email: "email@email.email",
60+ PreferredUsername: "preferred.user",
63+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user created:2000-01-01 00:00:00 +0000 UTC}",
66+ name: "With an ExpiresOn",
67+ sessionState: &SessionState{
68+ Email: "email@email.email",
70+ PreferredUsername: "preferred.user",
73+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user expires:2000-01-01 01:00:00 +0000 UTC}",
76+ name: "With an AccessToken",
77+ sessionState: &SessionState{
78+ Email: "email@email.email",
80+ PreferredUsername: "preferred.user",
81+ AccessToken: "access.token",
83+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user token:true}",
86+ name: "With an IDToken",
87+ sessionState: &SessionState{
88+ Email: "email@email.email",
90+ PreferredUsername: "preferred.user",
93+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user id_token:true}",
96+ name: "With a RefreshToken",
97+ sessionState: &SessionState{
98+ Email: "email@email.email",
100+ PreferredUsername: "preferred.user",
101+ RefreshToken: "refresh.token",
103+ expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user refresh_token:true}",
107+ for _, tc := range testCases {
108+ t.Run(tc.name, func(t *testing.T) {
110+ gs.Expect(tc.sessionState.String()).To(Equal(tc.expected))
19func TestIsExpired(t *testing.T) {
115func TestIsExpired(t *testing.T) {
20 s := &SessionState{ExpiresOn: timePtr(time.Now().Add(time.Duration(-1) * time.Minute))}
116 s := &SessionState{ExpiresOn: timePtr(time.Now().Add(time.Duration(-1) * time.Minute))}
21 assert.Equal(t, true, s.IsExpired())
117 assert.Equal(t, true, s.IsExpired())