@@ -161,13 +161,11 @@ func Test_enrichSession(t *testing.T) {
161161 err := validation.Validate(opts)
162162 assert.NoError(t, err)
163163
164− // intentionally set after validation.Validate(opts) since it will clobber
165− // our TestProvider and call `providers.New` defaulting to `providers.GoogleProvider`
166− opts.SetProvider(NewTestProvider(&url.URL{Host: "www.example.com"}, providerEmail))
167164 proxy, err := NewOAuthProxy(opts, func(string) bool { return true })
168165 if err != nil {
169166 t.Fatal(err)
170167 }
168+ proxy.provider = NewTestProvider(&url.URL{Host: "www.example.com"}, providerEmail)
171169
172170 err = proxy.enrichSessionState(context.Background(), tc.session)
173171 assert.NoError(t, err)
@@ -232,13 +230,13 @@ func TestBasicAuthPassword(t *testing.T) {
232230 providerURL, _ := url.Parse(providerServer.URL)
233231 const emailAddress = "john.doe@example.com"
234232
235− opts.SetProvider(NewTestProvider(providerURL, emailAddress))
236233 proxy, err := NewOAuthProxy(opts, func(email string) bool {
237234 return email == emailAddress
238235 })
239236 if err != nil {
240237 t.Fatal(err)
241238 }
239+ proxy.provider = NewTestProvider(providerURL, emailAddress)
242240
243241 // Save the required session
244242 rw := httptest.NewRecorder()
@@ -390,10 +388,10 @@ func NewPassAccessTokenTest(opts PassAccessTokenTestOptions) (*PassAccessTokenTe
390388
391389 testProvider := NewTestProvider(providerURL, emailAddress)
392390 testProvider.ValidToken = opts.ValidToken
393− patt.opts.SetProvider(testProvider)
394391 patt.proxy, err = NewOAuthProxy(patt.opts, func(email string) bool {
395392 return email == emailAddress
396393 })
394+ patt.proxy.provider = testProvider
397395 if err != nil {
398396 return nil, err
399397 }
@@ -769,11 +767,17 @@ func NewProcessCookieTest(opts ProcessCookieTestOpts, modifiers ...OptionsModifi
769767 if err != nil {
770768 return nil, err
771769 }
772− pcTest.proxy.provider = &TestProvider{
770+ testProvider := &TestProvider{
773771 ProviderData: &providers.ProviderData{},
774772 ValidToken: opts.providerValidateCookieResponse,
775773 }
776− pcTest.proxy.provider.(*TestProvider).SetAllowedGroups(pcTest.opts.Providers[0].AllowedGroups)
774+
775+ groups := pcTest.opts.Providers[0].AllowedGroups
776+ testProvider.AllowedGroups = make(map[string]struct{}, len(groups))
777+ for _, group := range groups {
778+ testProvider.AllowedGroups[group] = struct{}{}
779+ }
780+ pcTest.proxy.provider = testProvider
777781
778782 // Now, zero-out proxy.CookieRefresh for the cases that don't involve
779783 // access_token validation.
@@ -1359,12 +1363,12 @@ func TestAuthSkippedForPreflightRequests(t *testing.T) {
13591363 assert.NoError(t, err)
13601364
13611365 upstreamURL, _ := url.Parse(upstreamServer.URL)
1362− opts.SetProvider(NewTestProvider(upstreamURL, ""))
13631366
13641367 proxy, err := NewOAuthProxy(opts, func(string) bool { return false })
13651368 if err != nil {
13661369 t.Fatal(err)
13671370 }
1371+ proxy.provider = NewTestProvider(upstreamURL, "")
13681372 rw := httptest.NewRecorder()
13691373 req, _ := http.NewRequest("OPTIONS", "/preflight-request", nil)
13701374 proxy.ServeHTTP(rw, req)
@@ -1409,6 +1413,7 @@ type SignatureTest struct {
14091413 header http.Header
14101414 rw *httptest.ResponseRecorder
14111415 authenticator *SignatureAuthenticator
1416+ authProvider providers.Provider
14121417}
14131418
14141419func NewSignatureTest() (*SignatureTest, error) {
@@ -1443,7 +1448,7 @@ func NewSignatureTest() (*SignatureTest, error) {
14431448 if err != nil {
14441449 return nil, err
14451450 }
1446− opts.SetProvider(NewTestProvider(providerURL, "mbland@acm.org"))
1451+ testProvider := NewTestProvider(providerURL, "mbland@acm.org")
14471452
14481453 return &SignatureTest{
14491454 opts,
@@ -1453,6 +1458,7 @@ func NewSignatureTest() (*SignatureTest, error) {
14531458 make(http.Header),
14541459 httptest.NewRecorder(),
14551460 authenticator,
1461+ testProvider,
14561462 }, nil
14571463}
14581464
@@ -1486,6 +1492,7 @@ func (st *SignatureTest) MakeRequestWithExpectedKey(method, body, key string) er
14861492 if err != nil {
14871493 return err
14881494 }
1495+ proxy.provider = st.authProvider
14891496
14901497 var bodyBuf io.ReadCloser
14911498 if body != "" {