@@ -511,23 +511,45 @@ func TestBasicAuthWithEmail(t *testing.T) {
511 assert.Equal(t, expectedEmailHeader, req.Header["Authorization"][0])
511 assert.Equal(t, expectedEmailHeader, req.Header["Authorization"][0])
512 assert.Equal(t, emailAddress, req.Header["X-Forwarded-User"][0])
512 assert.Equal(t, emailAddress, req.Header["X-Forwarded-User"][0])
516+func TestPassUserHeadersWithEmail(t *testing.T) {
517+ opts := NewOptions()
518+ opts.PassBasicAuth = false
515 opts.PassUserHeaders = true
519 opts.PassUserHeaders = true
520+ opts.PreferEmailToUser = false
523+ const emailAddress = "john.doe@example.com"
524+ const userName = "9fcab5c9b889a557"
526+ session := &sessions.SessionState{
528+ Email: emailAddress,
529+ AccessToken: "oauth_token",
530+ CreatedAt: time.Now(),
517− // PassUserHeaders takes predecense over the headers added by
518− // PassBasicAuth, thus we expect them to contain something else.
519 rw := httptest.NewRecorder()
533 rw := httptest.NewRecorder()
520− req, _ := http.NewRequest("GET", opts.ProxyPrefix+"/testCase2", nil)
534+ req, _ := http.NewRequest("GET", opts.ProxyPrefix+"/testCase0", nil)
521 proxy := NewOAuthProxy(opts, func(email string) bool {
535 proxy := NewOAuthProxy(opts, func(email string) bool {
522 return email == emailAddress
536 return email == emailAddress
525 proxy.addHeadersForProxying(rw, req, session)
538 proxy.addHeadersForProxying(rw, req, session)
526− // The user address here should still be an email.
527− assert.Equal(t, expectedEmailHeader, req.Header["Authorization"][0])
528− assert.Equal(t, emailAddress, req.Header["X-Forwarded-Email"][0])
529 assert.Equal(t, userName, req.Header["X-Forwarded-User"][0])
539 assert.Equal(t, userName, req.Header["X-Forwarded-User"][0])
542+ opts.PreferEmailToUser = true
544+ rw := httptest.NewRecorder()
545+ req, _ := http.NewRequest("GET", opts.ProxyPrefix+"/testCase1", nil)
547+ proxy := NewOAuthProxy(opts, func(email string) bool {
548+ return email == emailAddress
550+ proxy.addHeadersForProxying(rw, req, session)
551+ assert.Equal(t, emailAddress, req.Header["X-Forwarded-User"][0])
533type PassAccessTokenTest struct {
555type PassAccessTokenTest struct {