@@ -404,6 +404,7 @@ func TestBasicAuthPassword(t *testing.T) {
404404 opts.ClientSecret = "alkgret"
405405 opts.CookieSecure = false
406406 opts.PassBasicAuth = true
407+ opts.SetBasicAuth = true
407408 opts.PassUserHeaders = true
408409 opts.PreferEmailToUser = true
409410 opts.BasicAuthPassword = "This is a secure password"
@@ -1075,6 +1076,71 @@ func TestAuthOnlyEndpointSetXAuthRequestHeaders(t *testing.T) {
10751076 assert.Equal(t, "oauth_user@example.com", pcTest.rw.HeaderMap["X-Auth-Request-Email"][0])
10761077}
10771078
1079+func TestAuthOnlyEndpointSetBasicAuthTrueRequestHeaders(t *testing.T) {
1080+ var pcTest ProcessCookieTest
1081+
1082+ pcTest.opts = NewOptions()
1083+ pcTest.opts.SetXAuthRequest = true
1084+ pcTest.opts.SetBasicAuth = true
1085+ pcTest.opts.Validate()
1086+
1087+ pcTest.proxy = NewOAuthProxy(pcTest.opts, func(email string) bool {
1088+ return pcTest.validateUser
1089+ })
1090+ pcTest.proxy.provider = &TestProvider{
1091+ ValidToken: true,
1092+ }
1093+
1094+ pcTest.validateUser = true
1095+
1096+ pcTest.rw = httptest.NewRecorder()
1097+ pcTest.req, _ = http.NewRequest("GET",
1098+ pcTest.opts.ProxyPrefix+"/auth", nil)
1099+
1100+ startSession := &sessions.SessionState{
1101+ User: "oauth_user", Email: "oauth_user@example.com", AccessToken: "oauth_token", CreatedAt: time.Now()}
1102+ pcTest.SaveSession(startSession)
1103+
1104+ pcTest.proxy.ServeHTTP(pcTest.rw, pcTest.req)
1105+ assert.Equal(t, http.StatusAccepted, pcTest.rw.Code)
1106+ assert.Equal(t, "oauth_user", pcTest.rw.HeaderMap["X-Auth-Request-User"][0])
1107+ assert.Equal(t, "oauth_user@example.com", pcTest.rw.HeaderMap["X-Auth-Request-Email"][0])
1108+ expectedHeader := "Basic " + base64.StdEncoding.EncodeToString([]byte("oauth_user:"+pcTest.opts.BasicAuthPassword))
1109+ assert.Equal(t, expectedHeader, pcTest.rw.HeaderMap["Authorization"][0])
1110+}
1111+
1112+func TestAuthOnlyEndpointSetBasicAuthFalseRequestHeaders(t *testing.T) {
1113+ var pcTest ProcessCookieTest
1114+
1115+ pcTest.opts = NewOptions()
1116+ pcTest.opts.SetXAuthRequest = true
1117+ pcTest.opts.SetBasicAuth = false
1118+ pcTest.opts.Validate()
1119+
1120+ pcTest.proxy = NewOAuthProxy(pcTest.opts, func(email string) bool {
1121+ return pcTest.validateUser
1122+ })
1123+ pcTest.proxy.provider = &TestProvider{
1124+ ValidToken: true,
1125+ }
1126+
1127+ pcTest.validateUser = true
1128+
1129+ pcTest.rw = httptest.NewRecorder()
1130+ pcTest.req, _ = http.NewRequest("GET",
1131+ pcTest.opts.ProxyPrefix+"/auth", nil)
1132+
1133+ startSession := &sessions.SessionState{
1134+ User: "oauth_user", Email: "oauth_user@example.com", AccessToken: "oauth_token", CreatedAt: time.Now()}
1135+ pcTest.SaveSession(startSession)
1136+
1137+ pcTest.proxy.ServeHTTP(pcTest.rw, pcTest.req)
1138+ assert.Equal(t, http.StatusAccepted, pcTest.rw.Code)
1139+ assert.Equal(t, "oauth_user", pcTest.rw.HeaderMap["X-Auth-Request-User"][0])
1140+ assert.Equal(t, "oauth_user@example.com", pcTest.rw.HeaderMap["X-Auth-Request-Email"][0])
1141+ assert.Equal(t, 0, len(pcTest.rw.HeaderMap["Authorization"]), "should not have Authorization header entries")
1142+}
1143+
10781144func TestAuthSkippedForPreflightRequests(t *testing.T) {
10791145 upstream := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
10801146 w.WriteHeader(200)