@@ -1,6 +1,7 @@
1package options
1package options
6 . "github.com/onsi/ginkgo"
7 . "github.com/onsi/ginkgo"
@@ -259,4 +260,425 @@ var _ = Describe("Legacy Options", func() {
264+ Context("Legacy Headers", func() {
265+ const basicAuthSecret = "super-secret-password"
267+ type legacyHeadersTableInput struct {
268+ legacyHeaders *LegacyHeaders
269+ expectedRequestHeaders []Header
270+ expectedResponseHeaders []Header
273+ withPreserveRequestValue := func(h Header, preserve bool) Header {
274+ h.PreserveRequestValue = preserve
278+ xForwardedUser := Header{
279+ Name: "X-Forwarded-User",
280+ PreserveRequestValue: true,
281+ Values: []HeaderValue{
283+ ClaimSource: &ClaimSource{
290+ xForwardedEmail := Header{
291+ Name: "X-Forwarded-Email",
292+ PreserveRequestValue: true,
293+ Values: []HeaderValue{
295+ ClaimSource: &ClaimSource{
302+ xForwardedGroups := Header{
303+ Name: "X-Forwarded-Groups",
304+ PreserveRequestValue: true,
305+ Values: []HeaderValue{
307+ ClaimSource: &ClaimSource{
314+ xForwardedPreferredUsername := Header{
315+ Name: "X-Forwarded-Preferred-Username",
316+ PreserveRequestValue: true,
317+ Values: []HeaderValue{
319+ ClaimSource: &ClaimSource{
320+ Claim: "preferred_username",
326+ basicAuthHeader := Header{
327+ Name: "Authorization",
328+ PreserveRequestValue: true,
329+ Values: []HeaderValue{
331+ ClaimSource: &ClaimSource{
333+ BasicAuthPassword: &SecretSource{
334+ Value: []byte(base64.StdEncoding.EncodeToString([]byte(basicAuthSecret))),
341+ xForwardedUserWithEmail := Header{
342+ Name: "X-Forwarded-User",
343+ PreserveRequestValue: true,
344+ Values: []HeaderValue{
346+ ClaimSource: &ClaimSource{
353+ basicAuthHeaderWithEmail := Header{
354+ Name: "Authorization",
355+ PreserveRequestValue: true,
356+ Values: []HeaderValue{
358+ ClaimSource: &ClaimSource{
360+ BasicAuthPassword: &SecretSource{
361+ Value: []byte(base64.StdEncoding.EncodeToString([]byte(basicAuthSecret))),
368+ xAuthRequestUser := Header{
369+ Name: "X-Auth-Request-User",
370+ PreserveRequestValue: false,
371+ Values: []HeaderValue{
373+ ClaimSource: &ClaimSource{
380+ xAuthRequestEmail := Header{
381+ Name: "X-Auth-Request-Email",
382+ PreserveRequestValue: false,
383+ Values: []HeaderValue{
385+ ClaimSource: &ClaimSource{
392+ xAuthRequestGroups := Header{
393+ Name: "X-Auth-Request-Groups",
394+ PreserveRequestValue: false,
395+ Values: []HeaderValue{
397+ ClaimSource: &ClaimSource{
404+ xForwardedAccessToken := Header{
405+ Name: "X-Forwarded-Access-Token",
406+ PreserveRequestValue: true,
407+ Values: []HeaderValue{
409+ ClaimSource: &ClaimSource{
410+ Claim: "access_token",
416+ xAuthRequestAccessToken := Header{
417+ Name: "X-Auth-Request-Access-Token",
418+ PreserveRequestValue: false,
419+ Values: []HeaderValue{
421+ ClaimSource: &ClaimSource{
422+ Claim: "access_token",
428+ authorizationHeader := Header{
429+ Name: "Authorization",
430+ PreserveRequestValue: true,
431+ Values: []HeaderValue{
433+ ClaimSource: &ClaimSource{
441+ DescribeTable("should convert to injectRequestHeaders",
442+ func(in legacyHeadersTableInput) {
443+ requestHeaders, responseHeaders := in.legacyHeaders.convert()
444+ Expect(requestHeaders).To(ConsistOf(in.expectedRequestHeaders))
445+ Expect(responseHeaders).To(ConsistOf(in.expectedResponseHeaders))
447+ Entry("with all header options off", legacyHeadersTableInput{
448+ legacyHeaders: &LegacyHeaders{
449+ PassBasicAuth: false,
450+ PassAccessToken: false,
451+ PassUserHeaders: false,
452+ PassAuthorization: false,
454+ SetBasicAuth: false,
455+ SetXAuthRequest: false,
456+ SetAuthorization: false,
458+ PreferEmailToUser: false,
459+ BasicAuthPassword: "",
460+ SkipAuthStripHeaders: false,
462+ expectedRequestHeaders: []Header{},
463+ expectedResponseHeaders: []Header{},
465+ Entry("with basic auth enabled", legacyHeadersTableInput{
466+ legacyHeaders: &LegacyHeaders{
467+ PassBasicAuth: true,
468+ PassAccessToken: false,
469+ PassUserHeaders: false,
470+ PassAuthorization: false,
473+ SetXAuthRequest: false,
474+ SetAuthorization: false,
476+ PreferEmailToUser: false,
477+ BasicAuthPassword: basicAuthSecret,
478+ SkipAuthStripHeaders: false,
480+ expectedRequestHeaders: []Header{
484+ xForwardedPreferredUsername,
487+ expectedResponseHeaders: []Header{
488+ withPreserveRequestValue(basicAuthHeader, false),
491+ Entry("with basic auth enabled and skipAuthStripHeaders", legacyHeadersTableInput{
492+ legacyHeaders: &LegacyHeaders{
493+ PassBasicAuth: true,
494+ PassAccessToken: false,
495+ PassUserHeaders: false,
496+ PassAuthorization: false,
499+ SetXAuthRequest: false,
500+ SetAuthorization: false,
502+ PreferEmailToUser: false,
503+ BasicAuthPassword: basicAuthSecret,
504+ SkipAuthStripHeaders: true,
506+ expectedRequestHeaders: []Header{
507+ withPreserveRequestValue(xForwardedUser, false),
508+ withPreserveRequestValue(xForwardedEmail, false),
509+ withPreserveRequestValue(xForwardedGroups, false),
510+ withPreserveRequestValue(xForwardedPreferredUsername, false),
511+ withPreserveRequestValue(basicAuthHeader, false),
513+ expectedResponseHeaders: []Header{
514+ withPreserveRequestValue(basicAuthHeader, false),
517+ Entry("with basic auth enabled and preferEmailToUser", legacyHeadersTableInput{
518+ legacyHeaders: &LegacyHeaders{
519+ PassBasicAuth: true,
520+ PassAccessToken: false,
521+ PassUserHeaders: false,
522+ PassAuthorization: false,
525+ SetXAuthRequest: false,
526+ SetAuthorization: false,
528+ PreferEmailToUser: true,
529+ BasicAuthPassword: basicAuthSecret,
530+ SkipAuthStripHeaders: false,
532+ expectedRequestHeaders: []Header{
533+ xForwardedUserWithEmail,
535+ xForwardedPreferredUsername,
536+ basicAuthHeaderWithEmail,
538+ expectedResponseHeaders: []Header{
539+ withPreserveRequestValue(basicAuthHeaderWithEmail, false),
542+ Entry("with basic auth enabled and passUserHeaders", legacyHeadersTableInput{
543+ legacyHeaders: &LegacyHeaders{
544+ PassBasicAuth: true,
545+ PassAccessToken: false,
546+ PassUserHeaders: true,
547+ PassAuthorization: false,
550+ SetXAuthRequest: false,
551+ SetAuthorization: false,
553+ PreferEmailToUser: false,
554+ BasicAuthPassword: basicAuthSecret,
555+ SkipAuthStripHeaders: false,
557+ expectedRequestHeaders: []Header{
561+ xForwardedPreferredUsername,
564+ expectedResponseHeaders: []Header{
565+ withPreserveRequestValue(basicAuthHeader, false),
568+ Entry("with passUserHeaders", legacyHeadersTableInput{
569+ legacyHeaders: &LegacyHeaders{
570+ PassBasicAuth: false,
571+ PassAccessToken: false,
572+ PassUserHeaders: true,
573+ PassAuthorization: false,
575+ SetBasicAuth: false,
576+ SetXAuthRequest: false,
577+ SetAuthorization: false,
579+ PreferEmailToUser: false,
580+ BasicAuthPassword: "",
581+ SkipAuthStripHeaders: false,
583+ expectedRequestHeaders: []Header{
587+ xForwardedPreferredUsername,
589+ expectedResponseHeaders: []Header{},
591+ Entry("with setXAuthRequest", legacyHeadersTableInput{
592+ legacyHeaders: &LegacyHeaders{
593+ PassBasicAuth: false,
594+ PassAccessToken: false,
595+ PassUserHeaders: false,
596+ PassAuthorization: false,
598+ SetBasicAuth: false,
599+ SetXAuthRequest: true,
600+ SetAuthorization: false,
602+ PreferEmailToUser: false,
603+ BasicAuthPassword: "",
604+ SkipAuthStripHeaders: false,
606+ expectedRequestHeaders: []Header{},
607+ expectedResponseHeaders: []Header{
611+ withPreserveRequestValue(xForwardedPreferredUsername, false),
614+ Entry("with passAccessToken", legacyHeadersTableInput{
615+ legacyHeaders: &LegacyHeaders{
616+ PassBasicAuth: false,
617+ PassAccessToken: true,
618+ PassUserHeaders: false,
619+ PassAuthorization: false,
621+ SetBasicAuth: false,
622+ SetXAuthRequest: false,
623+ SetAuthorization: false,
625+ PreferEmailToUser: false,
626+ BasicAuthPassword: "",
627+ SkipAuthStripHeaders: false,
629+ expectedRequestHeaders: []Header{
630+ xForwardedAccessToken,
632+ expectedResponseHeaders: []Header{},
634+ Entry("with passAcessToken and setXAuthRequest", legacyHeadersTableInput{
635+ legacyHeaders: &LegacyHeaders{
636+ PassBasicAuth: false,
637+ PassAccessToken: true,
638+ PassUserHeaders: false,
639+ PassAuthorization: false,
641+ SetBasicAuth: false,
642+ SetXAuthRequest: true,
643+ SetAuthorization: false,
645+ PreferEmailToUser: false,
646+ BasicAuthPassword: "",
647+ SkipAuthStripHeaders: false,
649+ expectedRequestHeaders: []Header{
650+ xForwardedAccessToken,
652+ expectedResponseHeaders: []Header{
656+ withPreserveRequestValue(xForwardedPreferredUsername, false),
657+ xAuthRequestAccessToken,
660+ Entry("with authorization headers", legacyHeadersTableInput{
661+ legacyHeaders: &LegacyHeaders{
662+ PassBasicAuth: false,
663+ PassAccessToken: false,
664+ PassUserHeaders: false,
665+ PassAuthorization: true,
667+ SetBasicAuth: false,
668+ SetXAuthRequest: false,
669+ SetAuthorization: true,
671+ PreferEmailToUser: false,
672+ BasicAuthPassword: "",
673+ SkipAuthStripHeaders: false,
675+ expectedRequestHeaders: []Header{
676+ authorizationHeader,
678+ expectedResponseHeaders: []Header{
679+ withPreserveRequestValue(authorizationHeader, false),