git.iko.soy/typeable/oauth2-proxy
on master help sign in
Adds tests for redeemCode and enrichSession
commitb6061f08036fee813556ad4981a5e2ed0d03409d authorNick Meves <nick.meves@greenhouse.io> dateSat 26 Sep 2020, 15:17 (6 years ago) parent0bd8eb3
1 file changed+72
oauthproxy_test.go+72
oauthproxy_test.go+72
@@ -404,6 +404,78 @@ func (tp *TestProvider) ValidateSessionState(ctx context.Context, session *sessi
404404 return tp.ValidToken
405405}
406406
407+func Test_redeemCode(t *testing.T) {
408+ opts := baseTestOptions()
409+ err := validation.Validate(opts)
410+ assert.NoError(t, err)
411+
412+ proxy, err := NewOAuthProxy(opts, func(string) bool { return true })
413+ if err != nil {
414+ t.Fatal(err)
415+ }
416+
417+ _, err = proxy.redeemCode(context.Background(), "www.example.com", "")
418+ assert.Error(t, err)
419+}
420+
421+func Test_enrichSession(t *testing.T) {
422+ const (
423+ sessionUser = "Mr Session"
424+ sessionEmail = "session@example.com"
425+ providerEmail = "provider@example.com"
426+ )
427+
428+ testCases := map[string]struct {
429+ session *sessions.SessionState
430+ expectedUser string
431+ expectedEmail string
432+ }{
433+ "Session already has enrichable fields": {
434+ session: &sessions.SessionState{
435+ User: sessionUser,
436+ Email: sessionEmail,
437+ },
438+ expectedUser: sessionUser,
439+ expectedEmail: sessionEmail,
440+ },
441+ "Session is missing Email and GetEmailAddress is implemented": {
442+ session: &sessions.SessionState{
443+ User: sessionUser,
444+ },
445+ expectedUser: sessionUser,
446+ expectedEmail: providerEmail,
447+ },
448+ "Session is missing User and GetUserName is not implemented": {
449+ session: &sessions.SessionState{
450+ Email: sessionEmail,
451+ },
452+ expectedUser: "",
453+ expectedEmail: sessionEmail,
454+ },
455+ }
456+
457+ for name, tc := range testCases {
458+ t.Run(name, func(t *testing.T) {
459+ opts := baseTestOptions()
460+ err := validation.Validate(opts)
461+ assert.NoError(t, err)
462+
463+ // intentionally set after validation.Validate(opts) since it will clobber
464+ // our TestProvider and call `providers.New` defaulting to `providers.GoogleProvider`
465+ opts.SetProvider(NewTestProvider(&url.URL{Host: "www.example.com"}, providerEmail))
466+ proxy, err := NewOAuthProxy(opts, func(string) bool { return true })
467+ if err != nil {
468+ t.Fatal(err)
469+ }
470+
471+ err = proxy.enrichSession(context.Background(), tc.session)
472+ assert.NoError(t, err)
473+ assert.Equal(t, tc.expectedUser, tc.session.User)
474+ assert.Equal(t, tc.expectedEmail, tc.session.Email)
475+ })
476+ }
477+}
478+
407479func TestBasicAuthPassword(t *testing.T) {
408480 providerServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
409481 logger.Printf("%#v", r)