diff --git a/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.spec.ts b/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.spec.ts index 5cedb31db..e7e3e107f 100644 --- a/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.spec.ts +++ b/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.spec.ts @@ -140,10 +140,6 @@ describe('GoFeatureFlagWebProvider', () => { }); describe('flag evaluation', () => { - /** - * TODO: reactivate this test when the issue "web-sdk: onContextChange not called for named provider" is solved.\ - * Issue link: https://github.com/open-feature/js-sdk/issues/488 - */ it('should change evaluation value if context has changed', async () => { await OpenFeature.setContext(defaultContext); OpenFeature.setProvider('test-provider', defaultProvider); @@ -322,6 +318,34 @@ describe('GoFeatureFlagWebProvider', () => { }; expect(got).toEqual(want); }); + + it('should have apiKey as header if set in the provider', async () => { + const apiKeyProvider = new GoFeatureFlagWebProvider( + { + endpoint: endpoint, + apiTimeout: 1000, + maxRetries: 1, + apiKey: 'my-api-key', + }, + logger, + ); + + const flagKey = 'bool-flag'; + await OpenFeature.setContext(defaultContext); + await OpenFeature.setProviderAndWait('test-provider', apiKeyProvider); + const client = OpenFeature.getClient('test-provider'); + await websocketMockServer.connected; + client.getBooleanDetails(flagKey, false); + const lastCall = fetchMock.lastCall(allFlagsEndpoint); + expect(lastCall).not.toBeUndefined(); + if (lastCall) { + const headers = lastCall[1]?.headers as never; + expect(headers).not.toBeUndefined(); + expect(headers['Authorization']).toBe('Bearer my-api-key'); + return; + } + expect(true).toBe(false); + }); }); describe('eventing', () => { diff --git a/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.ts b/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.ts index a72f4a23f..47f294624 100644 --- a/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.ts +++ b/libs/providers/go-feature-flag-web/src/lib/go-feature-flag-web-provider.ts @@ -270,19 +270,13 @@ export class GoFeatureFlagWebProvider implements Provider { : endpointURL.pathname + '/' + path; const request: GoFeatureFlagAllFlagRequest = { evaluationContext: transformContext(context) }; - const headers = new Headers({ - 'Content-Type': 'application/json', - Accept: 'application/json', - }); - if (this._apiKey) { - headers.set('Authorization', `Bearer ${this._apiKey}`); - } - const init: RequestInit = { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json', + // we had the authorization header only if we have an API Key + ...(this._apiKey ? { Authorization: `Bearer ${this._apiKey}` } : {}), }, body: JSON.stringify(request), };