MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestConcurrentSetConfig

Function TestConcurrentSetConfig

auth/oidc_test.go:269–325  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

267}
268
269func TestConcurrentSetConfig(t *testing.T) {
270 providerLock := sync.Mutex{}
271 provider := oidcProviderForTest(t, &OIDCProvider{
272 JWTConfigCommon: JWTConfigCommon{
273 ClientID: base.Ptr("foo"),
274 Issuer: "https://accounts.google.com",
275 },
276 CallbackURL: base.Ptr("http://sgw-test:4984/_callback"),
277 })
278
279 ctx := base.TestCtx(t)
280
281 err := provider.initOIDCClient(ctx)
282 require.NoError(t, err, "openid connect client initialization failure")
283 metadata, verifier, err := provider.DiscoverConfig(ctx)
284 require.NoError(t, err, "error discovering provider metadata")
285
286 expectedAuthURL := []string{
287 "https://accounts.foo.com/o/oauth2/v2/auth",
288 "https://accounts.bar.com/o/oauth2/v2/auth",
289 }
290 expectedTokenURL := []string{
291 "https://oauth2.foo.com/token",
292 "https://oauth2.bar.com/token",
293 }
294
295 var wg sync.WaitGroup
296 wg.Add(2)
297 go func() {
298 fooMetadata := metadata
299 fooMetadata.AuthorizationEndpoint = expectedAuthURL[0]
300 fooMetadata.TokenEndpoint = expectedTokenURL[0]
301 providerLock.Lock()
302 verifier = provider.generateVerifier(&fooMetadata, ctx)
303 require.NotNil(t, verifier, "error generating id token verifier")
304 provider.client.SetConfig(verifier, fooMetadata.endpoint())
305 providerLock.Unlock()
306 wg.Done()
307 }()
308 go func() {
309 barMetadata := metadata
310 barMetadata.AuthorizationEndpoint = expectedAuthURL[1]
311 barMetadata.TokenEndpoint = expectedTokenURL[1]
312 providerLock.Lock()
313 verifier = provider.generateVerifier(&barMetadata, ctx)
314 require.NotNil(t, verifier, "error generating id token verifier")
315 provider.client.SetConfig(verifier, barMetadata.endpoint())
316 providerLock.Unlock()
317 wg.Done()
318 }()
319 wg.Wait()
320 provider.client.mutex.RLock()
321 assert.NotNil(t, provider.client.verifier, "error setting verifier")
322 provider.client.mutex.RUnlock()
323 assert.Contains(t, expectedAuthURL, provider.client.Config().Endpoint.AuthURL)
324 assert.Contains(t, expectedTokenURL, provider.client.Config().Endpoint.TokenURL)
325}
326

Callers

nothing calls this directly

Calls 15

PtrFunction · 0.92
TestCtxFunction · 0.92
oidcProviderForTestFunction · 0.85
initOIDCClientMethod · 0.80
DiscoverConfigMethod · 0.80
generateVerifierMethod · 0.80
SetConfigMethod · 0.80
endpointMethod · 0.80
DoneMethod · 0.80
RLockMethod · 0.80
RUnlockMethod · 0.80
ConfigMethod · 0.80

Tested by

no test coverage detected