From 7407fbd3a77c2beb98845773d95452137c5a9fc7 Mon Sep 17 00:00:00 2001 From: Nick Meves Date: Wed, 25 Nov 2020 18:55:16 -0800 Subject: [PATCH] Add more UserInfo test cases --- oauthproxy_test.go | 73 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 15 deletions(-) diff --git a/oauthproxy_test.go b/oauthproxy_test.go index bf76b2bd..6ed4b30c 100644 --- a/oauthproxy_test.go +++ b/oauthproxy_test.go @@ -1124,24 +1124,67 @@ func NewUserInfoEndpointTest() (*ProcessCookieTest, error) { } func TestUserInfoEndpointAccepted(t *testing.T) { - test, err := NewUserInfoEndpointTest() - if err != nil { - t.Fatal(err) + testCases := []struct { + name string + session *sessions.SessionState + expectedResponse string + }{ + { + name: "Full session", + session: &sessions.SessionState{ + User: "john.doe", + Email: "john.doe@example.com", + Groups: []string{"example", "groups"}, + AccessToken: "my_access_token", + }, + expectedResponse: "{\"user\":\"john.doe\",\"email\":\"john.doe@example.com\",\"groups\":[\"example\",\"groups\"]}\n", + }, + { + name: "Minimal session", + session: &sessions.SessionState{ + User: "john.doe", + Email: "john.doe@example.com", + Groups: []string{"example", "groups"}, + }, + expectedResponse: "{\"user\":\"john.doe\",\"email\":\"john.doe@example.com\",\"groups\":[\"example\",\"groups\"]}\n", + }, + { + name: "No groups", + session: &sessions.SessionState{ + User: "john.doe", + Email: "john.doe@example.com", + AccessToken: "my_access_token", + }, + expectedResponse: "{\"user\":\"john.doe\",\"email\":\"john.doe@example.com\"}\n", + }, + { + name: "With Preferred Username", + session: &sessions.SessionState{ + User: "john.doe", + PreferredUsername: "john", + Email: "john.doe@example.com", + Groups: []string{"example", "groups"}, + AccessToken: "my_access_token", + }, + expectedResponse: "{\"user\":\"john.doe\",\"email\":\"john.doe@example.com\",\"groups\":[\"example\",\"groups\"],\"preferredUsername\":\"john\"}\n", + }, } - startSession := &sessions.SessionState{ - User: "john.doe", - Email: "john.doe@example.com", - Groups: []string{"example", "groups"}, - AccessToken: "my_access_token", - } - err = test.SaveSession(startSession) - assert.NoError(t, err) + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + test, err := NewUserInfoEndpointTest() + if err != nil { + t.Fatal(err) + } + err = test.SaveSession(tc.session) + assert.NoError(t, err) - test.proxy.ServeHTTP(test.rw, test.req) - assert.Equal(t, http.StatusOK, test.rw.Code) - bodyBytes, _ := ioutil.ReadAll(test.rw.Body) - assert.Equal(t, "{\"user\":\"john.doe\",\"email\":\"john.doe@example.com\",\"groups\":[\"example\",\"groups\"]}\n", string(bodyBytes)) + test.proxy.ServeHTTP(test.rw, test.req) + assert.Equal(t, http.StatusOK, test.rw.Code) + bodyBytes, _ := ioutil.ReadAll(test.rw.Body) + assert.Equal(t, tc.expectedResponse, string(bodyBytes)) + }) + } } func TestUserInfoEndpointUnauthorizedOnNoCookieSetError(t *testing.T) {