(opts ProcessCookieTestOpts, modifiers ...OptionsModifier)
| 858 | type OptionsModifier func(*options.Options) |
| 859 | |
| 860 | func NewProcessCookieTest(opts ProcessCookieTestOpts, modifiers ...OptionsModifier) (*ProcessCookieTest, error) { |
| 861 | var pcTest ProcessCookieTest |
| 862 | |
| 863 | pcTest.opts = baseTestOptions() |
| 864 | for _, modifier := range modifiers { |
| 865 | modifier(pcTest.opts) |
| 866 | } |
| 867 | // First, set the CookieRefresh option so proxy.AesCipher is created, |
| 868 | // needed to encrypt the access_token. |
| 869 | pcTest.opts.Cookie.Refresh = time.Hour |
| 870 | err := validation.Validate(pcTest.opts) |
| 871 | if err != nil { |
| 872 | return nil, err |
| 873 | } |
| 874 | |
| 875 | pcTest.proxy, err = NewOAuthProxy(pcTest.opts, func(email string) bool { |
| 876 | return pcTest.validateUser |
| 877 | }) |
| 878 | if err != nil { |
| 879 | return nil, err |
| 880 | } |
| 881 | testProvider := &TestProvider{ |
| 882 | ProviderData: &providers.ProviderData{}, |
| 883 | ValidToken: opts.providerValidateCookieResponse, |
| 884 | } |
| 885 | |
| 886 | groups := pcTest.opts.Providers[0].AllowedGroups |
| 887 | testProvider.ProviderData.AllowedGroups = make(map[string]struct{}, len(groups)) |
| 888 | for _, group := range groups { |
| 889 | testProvider.ProviderData.AllowedGroups[group] = struct{}{} |
| 890 | } |
| 891 | pcTest.proxy.provider = testProvider |
| 892 | |
| 893 | // Now, zero-out proxy.CookieRefresh for the cases that don't involve |
| 894 | // access_token validation. |
| 895 | pcTest.proxy.CookieOptions.Refresh = time.Duration(0) |
| 896 | pcTest.rw = httptest.NewRecorder() |
| 897 | pcTest.req, _ = http.NewRequest(http.MethodGet, "/", strings.NewReader("")) |
| 898 | pcTest.validateUser = true |
| 899 | return &pcTest, nil |
| 900 | } |
| 901 | |
| 902 | func NewProcessCookieTestWithDefaults() (*ProcessCookieTest, error) { |
| 903 | return NewProcessCookieTest(ProcessCookieTestOpts{ |
no test coverage detected