Merge pull request #715 from oauth2-proxy/session-nil-time
Ensure session times are not nil before printing them
This commit is contained in:
		
						commit
						9a338d8a34
					
				|  | @ -11,6 +11,7 @@ | ||||||
| 
 | 
 | ||||||
| ## Changes since v6.0.0 | ## Changes since v6.0.0 | ||||||
| 
 | 
 | ||||||
|  | - [#715](https://github.com/oauth2-proxy/oauth2-proxy/pull/715) Ensure session times are not nil before printing them (@JoelSpeed) | ||||||
| - [#714](https://github.com/oauth2-proxy/oauth2-proxy/pull/714) Support passwords with Redis session stores (@NickMeves) | - [#714](https://github.com/oauth2-proxy/oauth2-proxy/pull/714) Support passwords with Redis session stores (@NickMeves) | ||||||
| - [#719](https://github.com/oauth2-proxy/oauth2-proxy/pull/719) Add Gosec fixes to areas that are intermittently flagged on PRs (@NickMeves) | - [#719](https://github.com/oauth2-proxy/oauth2-proxy/pull/719) Add Gosec fixes to areas that are intermittently flagged on PRs (@NickMeves) | ||||||
| - [#718](https://github.com/oauth2-proxy/oauth2-proxy/pull/718) Allow Logging to stdout with separate Error Log Channel | - [#718](https://github.com/oauth2-proxy/oauth2-proxy/pull/718) Allow Logging to stdout with separate Error Log Channel | ||||||
|  |  | ||||||
|  | @ -52,10 +52,10 @@ func (s *SessionState) String() string { | ||||||
| 	if s.IDToken != "" { | 	if s.IDToken != "" { | ||||||
| 		o += " id_token:true" | 		o += " id_token:true" | ||||||
| 	} | 	} | ||||||
| 	if !s.CreatedAt.IsZero() { | 	if s.CreatedAt != nil && !s.CreatedAt.IsZero() { | ||||||
| 		o += fmt.Sprintf(" created:%s", s.CreatedAt) | 		o += fmt.Sprintf(" created:%s", s.CreatedAt) | ||||||
| 	} | 	} | ||||||
| 	if !s.ExpiresOn.IsZero() { | 	if s.ExpiresOn != nil && !s.ExpiresOn.IsZero() { | ||||||
| 		o += fmt.Sprintf(" expires:%s", s.ExpiresOn) | 		o += fmt.Sprintf(" expires:%s", s.ExpiresOn) | ||||||
| 	} | 	} | ||||||
| 	if s.RefreshToken != "" { | 	if s.RefreshToken != "" { | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/oauth2-proxy/oauth2-proxy/pkg/encryption" | 	"github.com/oauth2-proxy/oauth2-proxy/pkg/encryption" | ||||||
|  | 	. "github.com/onsi/gomega" | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -16,6 +17,101 @@ func timePtr(t time.Time) *time.Time { | ||||||
| 	return &t | 	return &t | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func TestString(t *testing.T) { | ||||||
|  | 	g := NewWithT(t) | ||||||
|  | 	created, err := time.Parse(time.RFC3339, "2000-01-01T00:00:00Z") | ||||||
|  | 	g.Expect(err).ToNot(HaveOccurred()) | ||||||
|  | 	expires, err := time.Parse(time.RFC3339, "2000-01-01T01:00:00Z") | ||||||
|  | 	g.Expect(err).ToNot(HaveOccurred()) | ||||||
|  | 
 | ||||||
|  | 	testCases := []struct { | ||||||
|  | 		name         string | ||||||
|  | 		sessionState *SessionState | ||||||
|  | 		expected     string | ||||||
|  | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			name: "Minimal Session", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "Full Session", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				CreatedAt:         &created, | ||||||
|  | 				ExpiresOn:         &expires, | ||||||
|  | 				AccessToken:       "access.token", | ||||||
|  | 				IDToken:           "id.token", | ||||||
|  | 				RefreshToken:      "refresh.token", | ||||||
|  | 			}, | ||||||
|  | 			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}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "With a CreatedAt", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				CreatedAt:         &created, | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user created:2000-01-01 00:00:00 +0000 UTC}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "With an ExpiresOn", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				ExpiresOn:         &expires, | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user expires:2000-01-01 01:00:00 +0000 UTC}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "With an AccessToken", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				AccessToken:       "access.token", | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user token:true}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "With an IDToken", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				IDToken:           "id.token", | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user id_token:true}", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			name: "With a RefreshToken", | ||||||
|  | 			sessionState: &SessionState{ | ||||||
|  | 				Email:             "email@email.email", | ||||||
|  | 				User:              "some.user", | ||||||
|  | 				PreferredUsername: "preferred.user", | ||||||
|  | 				RefreshToken:      "refresh.token", | ||||||
|  | 			}, | ||||||
|  | 			expected: "Session{email:email@email.email user:some.user PreferredUsername:preferred.user refresh_token:true}", | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, tc := range testCases { | ||||||
|  | 		t.Run(tc.name, func(t *testing.T) { | ||||||
|  | 			gs := NewWithT(t) | ||||||
|  | 			gs.Expect(tc.sessionState.String()).To(Equal(tc.expected)) | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func TestIsExpired(t *testing.T) { | func TestIsExpired(t *testing.T) { | ||||||
| 	s := &SessionState{ExpiresOn: timePtr(time.Now().Add(time.Duration(-1) * time.Minute))} | 	s := &SessionState{ExpiresOn: timePtr(time.Now().Add(time.Duration(-1) * time.Minute))} | ||||||
| 	assert.Equal(t, true, s.IsExpired()) | 	assert.Equal(t, true, s.IsExpired()) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue