From afadba1b8e16551dec1c44ae72026bb2467ba619 Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:47:51 -0700 Subject: [PATCH] Added metadata attribute to criteria response payload --- src/api-docs/paths/path-client.js | 5 ++++- src/api-docs/schemas/config-strategy.js | 30 +++++++++++++++++++++++++ src/client/relay/index.js | 3 ++- src/client/resolvers.js | 1 + tests/relay.test.js | 5 +++-- 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/api-docs/paths/path-client.js b/src/api-docs/paths/path-client.js index 81e4452..9bf3c3e 100644 --- a/src/api-docs/paths/path-client.js +++ b/src/api-docs/paths/path-client.js @@ -54,9 +54,12 @@ export default { reason: { type: 'string' }, + metadata: { + type: 'object' + }, strategies: { type: 'array', - items: configStrategy.ConfigStrategy + items: configStrategy.ConfigStrategyCriteriaResponse } } } diff --git a/src/api-docs/schemas/config-strategy.js b/src/api-docs/schemas/config-strategy.js index 1868eb0..ff2e488 100644 --- a/src/api-docs/schemas/config-strategy.js +++ b/src/api-docs/schemas/config-strategy.js @@ -72,6 +72,36 @@ const configStrategy = { export default { ConfigStrategy: configStrategy, + ConfigStrategyCriteriaResponse: { + type: 'object', + properties: { + description: { + type: 'string', + description: 'The description of the config strategy' + }, + activated: { + type: 'object', + additionalProperties: { + type: 'boolean', + description: 'The environment status' + } + }, + strategy: { + type: 'string', + enum: Object.values(StrategiesType) + }, + values: { + type: 'array', + items: { + type: 'string' + } + }, + operation: { + type: 'string', + enum: Object.values(OperationsType) + } + } + }, ConfigStrategyCreateRequest: { type: 'object', properties: { diff --git a/src/client/relay/index.js b/src/client/relay/index.js index a962e0e..680087b 100644 --- a/src/client/relay/index.js +++ b/src/client/relay/index.js @@ -35,7 +35,8 @@ export async function resolveValidation(relay, entry, environment) { return { result: response.data.result, - message: response.data.message + message: response.data.message, + metadata: response.data.metadata }; } diff --git a/src/client/resolvers.js b/src/client/resolvers.js index 032ad08..452ab8d 100644 --- a/src/client/resolvers.js +++ b/src/client/resolvers.js @@ -187,6 +187,7 @@ async function resolveRelay(config, environment, entry, response) { response.result = relayResponse.result; response.reason = relayResponse.result ? 'Success' : 'Relay does not agree'; response.message = relayResponse.message; + response.metadata = relayResponse.metadata; } } } catch (e) { diff --git a/tests/relay.test.js b/tests/relay.test.js index 72d07be..31cbe63 100644 --- a/tests/relay.test.js +++ b/tests/relay.test.js @@ -90,7 +90,7 @@ describe('Testing Switcher Relay', () => { axiosStub = sinon.stub(axios, 'get'); // Given - const mockRelayService = { data: { result: true, reason: 'Success' } }; + const mockRelayService = { data: { result: true, message: 'A message', metadata: { custom: 'VALUE' } } }; axiosStub.returns(Promise.resolve(mockRelayService)); // Setup Switcher @@ -117,8 +117,9 @@ describe('Testing Switcher Relay', () => { axiosStub.restore(); expect(req.statusCode).toBe(200); - expect(req.body.reason).toEqual('Success'); + expect(req.body.message).toBe('A message'); expect(req.body.result).toBe(true); + expect(req.body.metadata).toEqual({ custom: 'VALUE' }); }); test('RELAY_SUITE - Should return success when validating relay using POST method', async () => {