Skip to content

Commit 4ece712

Browse files
committed
CCM-12438: check flag before parsing input
1 parent 7b39613 commit 4ece712

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

lambdas/backend-api/src/__tests__/templates/app/routing-config-client.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,16 @@ describe('RoutingConfigClient', () => {
298298
});
299299
});
300300

301-
test('returns 400 error when input is invalid', async () => {
301+
test('returns validation error when input is invalid', async () => {
302302
const { client, mocks } = setup();
303303

304+
mocks.clientConfigRepository.get.mockResolvedValueOnce({
305+
data: {
306+
features: { routing: true },
307+
campaignIds: [routingConfig.campaignId],
308+
},
309+
});
310+
304311
const result = await client.createRoutingConfig(
305312
{ a: 1 } as unknown as CreateUpdateRoutingConfig,
306313
user
@@ -671,6 +678,12 @@ describe('RoutingConfigClient', () => {
671678

672679
test('returns validation error when update is invalid', async () => {
673680
const { client, mocks } = setup();
681+
mocks.clientConfigRepository.get.mockResolvedValueOnce({
682+
data: {
683+
features: { routing: true },
684+
campaignIds: [routingConfig.campaignId],
685+
},
686+
});
674687

675688
const update: CreateUpdateRoutingConfig = {
676689
campaignId: routingConfig.campaignId,

lambdas/backend-api/src/templates/app/routing-config-client.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,6 @@ export class RoutingConfigClient {
2222
payload: unknown,
2323
user: User
2424
): Promise<Result<RoutingConfig>> {
25-
const validationResult = await validate(
26-
$CreateUpdateRoutingConfig,
27-
payload
28-
);
29-
30-
if (validationResult.error) return validationResult;
31-
32-
const validated = validationResult.data;
33-
3425
const clientConfigurationResult = await this.clientConfigRepository.get(
3526
user.clientId
3627
);
@@ -47,6 +38,15 @@ export class RoutingConfigClient {
4738
);
4839
}
4940

41+
const validationResult = await validate(
42+
$CreateUpdateRoutingConfig,
43+
payload
44+
);
45+
46+
if (validationResult.error) return validationResult;
47+
48+
const validated = validationResult.data;
49+
5050
if (!clientConfiguration?.campaignIds?.includes(validated.campaignId)) {
5151
return failure(
5252
ErrorCase.VALIDATION_FAILED,
@@ -62,15 +62,6 @@ export class RoutingConfigClient {
6262
payload: unknown,
6363
user: User
6464
): Promise<Result<RoutingConfig>> {
65-
const validationResult = await validate(
66-
$CreateUpdateRoutingConfig,
67-
payload
68-
);
69-
70-
if (validationResult.error) return validationResult;
71-
72-
const validated = validationResult.data;
73-
7465
const clientConfigurationResult = await this.clientConfigRepository.get(
7566
user.clientId
7667
);
@@ -80,6 +71,15 @@ export class RoutingConfigClient {
8071

8172
if (clientConfigurationError) return clientConfigurationResult;
8273

74+
const validationResult = await validate(
75+
$CreateUpdateRoutingConfig,
76+
payload
77+
);
78+
79+
if (validationResult.error) return validationResult;
80+
81+
const validated = validationResult.data;
82+
8383
if (!clientConfiguration?.features.routing) {
8484
return failure(
8585
ErrorCase.VALIDATION_FAILED,

0 commit comments

Comments
 (0)