fix: return metadata for the bound provider in hookContext (#883)
Clients were incorrectly populating the hook context provider metadata field with metadata from the default provider instead of the one bound to the client. Signed-off-by: Federico Bond <federicobond@gmail.com>
This commit is contained in:
parent
fc4867799d
commit
fd84025bdf
|
|
@ -201,7 +201,7 @@ export class OpenFeatureClient implements Client {
|
|||
defaultValue,
|
||||
flagValueType: flagType,
|
||||
clientMetadata: this.metadata,
|
||||
providerMetadata: OpenFeature.providerMetadata,
|
||||
providerMetadata: this._provider.metadata,
|
||||
context,
|
||||
logger: this._logger,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -77,6 +77,39 @@ describe('Hooks', () => {
|
|||
],
|
||||
});
|
||||
});
|
||||
it('client metadata and provider metadata must match the client and provider used to resolve the flag', (done) => {
|
||||
const provider: Provider = {
|
||||
metadata: {
|
||||
name: 'mock-my-domain-provider',
|
||||
},
|
||||
resolveBooleanEvaluation: jest.fn((): Promise<ResolutionDetails<boolean>> => {
|
||||
return Promise.resolve({
|
||||
value: BOOLEAN_VALUE,
|
||||
variant: BOOLEAN_VARIANT,
|
||||
reason: REASON,
|
||||
});
|
||||
}),
|
||||
} as unknown as Provider;
|
||||
|
||||
OpenFeature.setProvider('my-domain', provider);
|
||||
const client = OpenFeature.getClient('my-domain');
|
||||
|
||||
client.getBooleanValue(FLAG_KEY, false, {
|
||||
hooks: [
|
||||
{
|
||||
before: (hookContext) => {
|
||||
try {
|
||||
expect(hookContext.providerMetadata).toEqual(provider.metadata);
|
||||
expect(hookContext.clientMetadata).toEqual(client.metadata);
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Requirement 4.1.3', () => {
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ export class OpenFeatureClient implements Client, ManageContext<OpenFeatureClien
|
|||
defaultValue,
|
||||
flagValueType: flagType,
|
||||
clientMetadata: this.metadata,
|
||||
providerMetadata: OpenFeature.providerMetadata,
|
||||
providerMetadata: this._provider.metadata,
|
||||
context: mergedContext,
|
||||
logger: this._logger,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -73,6 +73,39 @@ describe('Hooks', () => {
|
|||
],
|
||||
});
|
||||
});
|
||||
it('client metadata and provider metadata must match the client and provider used to resolve the flag', (done) => {
|
||||
const provider: Provider = {
|
||||
metadata: {
|
||||
name: 'mock-my-domain-provider',
|
||||
},
|
||||
resolveBooleanEvaluation: jest.fn((): Promise<ResolutionDetails<boolean>> => {
|
||||
return Promise.resolve({
|
||||
value: BOOLEAN_VALUE,
|
||||
variant: BOOLEAN_VARIANT,
|
||||
reason: REASON,
|
||||
});
|
||||
}),
|
||||
} as unknown as Provider;
|
||||
|
||||
OpenFeature.setProvider('my-domain', provider);
|
||||
const client = OpenFeature.getClient('my-domain');
|
||||
|
||||
client.getBooleanValue(FLAG_KEY, false, undefined, {
|
||||
hooks: [
|
||||
{
|
||||
before: (hookContext) => {
|
||||
try {
|
||||
expect(hookContext.providerMetadata).toEqual(provider.metadata);
|
||||
expect(hookContext.clientMetadata).toEqual(client.metadata);
|
||||
done();
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Requirement 4.1.3', () => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue