Skip to content

Commit c0cada0

Browse files
fix dynamic config API calls to pass correct input (#6474) (#6486)
* update dynamic API calls to pass correct input Signed-off-by: Tianle Huang <tianleh@amazon.com> * add unit tests Signed-off-by: Tianle Huang <tianleh@amazon.com> * add changelog Signed-off-by: Tianle Huang <tianleh@amazon.com> * revert yml Signed-off-by: Tianle Huang <tianleh@amazon.com> --------- Signed-off-by: Tianle Huang <tianleh@amazon.com> (cherry picked from commit 9a97b43) Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent f9538c2 commit c0cada0

File tree

2 files changed

+95
-26
lines changed

2 files changed

+95
-26
lines changed

src/plugins/application_config/server/routes/index.test.ts

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ describe('application config routes', () => {
7979
getConfig: jest.fn().mockReturnValue(configurations),
8080
};
8181

82+
const getConfigurationClient = jest.fn().mockReturnValue(client);
83+
8284
const request = {};
8385

8486
const okResponse = {
@@ -91,7 +93,12 @@ describe('application config routes', () => {
9193

9294
const logger = loggerMock.create();
9395

94-
const returnedResponse = await handleGetConfig(client, request, response, logger);
96+
const returnedResponse = await handleGetConfig(
97+
getConfigurationClient,
98+
request,
99+
response,
100+
logger
101+
);
95102

96103
expect(returnedResponse).toBe(okResponse);
97104

@@ -100,6 +107,8 @@ describe('application config routes', () => {
100107
value: configurations,
101108
},
102109
});
110+
111+
expect(getConfigurationClient).toBeCalledWith(request);
103112
});
104113

105114
it('return error response when client throws error', async () => {
@@ -111,6 +120,8 @@ describe('application config routes', () => {
111120
}),
112121
};
113122

123+
const getConfigurationClient = jest.fn().mockReturnValue(client);
124+
114125
const request = {};
115126

116127
const response = {
@@ -119,7 +130,12 @@ describe('application config routes', () => {
119130

120131
const logger = loggerMock.create();
121132

122-
const returnedResponse = await handleGetConfig(client, request, response, logger);
133+
const returnedResponse = await handleGetConfig(
134+
getConfigurationClient,
135+
request,
136+
response,
137+
logger
138+
);
123139

124140
expect(returnedResponse).toBe(ERROR_RESPONSE);
125141

@@ -131,6 +147,7 @@ describe('application config routes', () => {
131147
});
132148

133149
expect(logger.error).toBeCalledWith(error);
150+
expect(getConfigurationClient).toBeCalledWith(request);
134151
});
135152
});
136153

@@ -140,6 +157,8 @@ describe('application config routes', () => {
140157
getEntityConfig: jest.fn().mockReturnValue(ENTITY_VALUE),
141158
};
142159

160+
const getConfigurationClient = jest.fn().mockReturnValue(client);
161+
143162
const okResponse = {
144163
statusCode: 200,
145164
};
@@ -156,7 +175,12 @@ describe('application config routes', () => {
156175

157176
const logger = loggerMock.create();
158177

159-
const returnedResponse = await handleGetEntityConfig(client, request, response, logger);
178+
const returnedResponse = await handleGetEntityConfig(
179+
getConfigurationClient,
180+
request,
181+
response,
182+
logger
183+
);
160184

161185
expect(returnedResponse).toBe(okResponse);
162186

@@ -165,6 +189,8 @@ describe('application config routes', () => {
165189
value: ENTITY_VALUE,
166190
},
167191
});
192+
193+
expect(getConfigurationClient).toBeCalledWith(request);
168194
});
169195

170196
it('return error response when client throws error', async () => {
@@ -176,6 +202,8 @@ describe('application config routes', () => {
176202
}),
177203
};
178204

205+
const getConfigurationClient = jest.fn().mockReturnValue(client);
206+
179207
const request = {
180208
params: {
181209
entity: ENTITY_NAME,
@@ -188,7 +216,12 @@ describe('application config routes', () => {
188216

189217
const logger = loggerMock.create();
190218

191-
const returnedResponse = await handleGetEntityConfig(client, request, response, logger);
219+
const returnedResponse = await handleGetEntityConfig(
220+
getConfigurationClient,
221+
request,
222+
response,
223+
logger
224+
);
192225

193226
expect(returnedResponse).toBe(ERROR_RESPONSE);
194227

@@ -200,6 +233,8 @@ describe('application config routes', () => {
200233
});
201234

202235
expect(logger.error).toBeCalledWith(error);
236+
237+
expect(getConfigurationClient).toBeCalledWith(request);
203238
});
204239
});
205240

@@ -209,6 +244,8 @@ describe('application config routes', () => {
209244
updateEntityConfig: jest.fn().mockReturnValue(ENTITY_NEW_VALUE),
210245
};
211246

247+
const getConfigurationClient = jest.fn().mockReturnValue(client);
248+
212249
const okResponse = {
213250
statusCode: 200,
214251
};
@@ -228,7 +265,12 @@ describe('application config routes', () => {
228265

229266
const logger = loggerMock.create();
230267

231-
const returnedResponse = await handleUpdateEntityConfig(client, request, response, logger);
268+
const returnedResponse = await handleUpdateEntityConfig(
269+
getConfigurationClient,
270+
request,
271+
response,
272+
logger
273+
);
232274

233275
expect(returnedResponse).toBe(okResponse);
234276

@@ -241,6 +283,8 @@ describe('application config routes', () => {
241283
});
242284

243285
expect(logger.error).not.toBeCalled();
286+
287+
expect(getConfigurationClient).toBeCalledWith(request);
244288
});
245289

246290
it('return error response when client fails', async () => {
@@ -252,6 +296,8 @@ describe('application config routes', () => {
252296
}),
253297
};
254298

299+
const getConfigurationClient = jest.fn().mockReturnValue(client);
300+
255301
const request = {
256302
params: {
257303
entity: ENTITY_NAME,
@@ -267,7 +313,12 @@ describe('application config routes', () => {
267313

268314
const logger = loggerMock.create();
269315

270-
const returnedResponse = await handleUpdateEntityConfig(client, request, response, logger);
316+
const returnedResponse = await handleUpdateEntityConfig(
317+
getConfigurationClient,
318+
request,
319+
response,
320+
logger
321+
);
271322

272323
expect(returnedResponse).toBe(ERROR_RESPONSE);
273324

@@ -279,6 +330,8 @@ describe('application config routes', () => {
279330
});
280331

281332
expect(logger.error).toBeCalledWith(error);
333+
334+
expect(getConfigurationClient).toBeCalledWith(request);
282335
});
283336
});
284337

@@ -288,6 +341,8 @@ describe('application config routes', () => {
288341
deleteEntityConfig: jest.fn().mockReturnValue(ENTITY_NAME),
289342
};
290343

344+
const getConfigurationClient = jest.fn().mockReturnValue(client);
345+
291346
const okResponse = {
292347
statusCode: 200,
293348
};
@@ -304,7 +359,12 @@ describe('application config routes', () => {
304359

305360
const logger = loggerMock.create();
306361

307-
const returnedResponse = await handleDeleteEntityConfig(client, request, response, logger);
362+
const returnedResponse = await handleDeleteEntityConfig(
363+
getConfigurationClient,
364+
request,
365+
response,
366+
logger
367+
);
308368

309369
expect(returnedResponse).toBe(okResponse);
310370

@@ -317,6 +377,7 @@ describe('application config routes', () => {
317377
});
318378

319379
expect(logger.error).not.toBeCalled();
380+
expect(getConfigurationClient).toBeCalledWith(request);
320381
});
321382

322383
it('return error response when client fails', async () => {
@@ -328,6 +389,8 @@ describe('application config routes', () => {
328389
}),
329390
};
330391

392+
const getConfigurationClient = jest.fn().mockReturnValue(client);
393+
331394
const request = {
332395
params: {
333396
entity: ENTITY_NAME,
@@ -340,7 +403,12 @@ describe('application config routes', () => {
340403

341404
const logger = loggerMock.create();
342405

343-
const returnedResponse = await handleDeleteEntityConfig(client, request, response, logger);
406+
const returnedResponse = await handleDeleteEntityConfig(
407+
getConfigurationClient,
408+
request,
409+
response,
410+
logger
411+
);
344412

345413
expect(returnedResponse).toBe(ERROR_RESPONSE);
346414

@@ -352,6 +420,8 @@ describe('application config routes', () => {
352420
});
353421

354422
expect(logger.error).toBeCalledWith(error);
423+
424+
expect(getConfigurationClient).toBeCalledWith(request);
355425
});
356426
});
357427
});

src/plugins/application_config/server/routes/index.ts

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import { schema } from '@osd/config-schema';
77
import {
88
IRouter,
9-
IScopedClusterClient,
109
Logger,
1110
OpenSearchDashboardsRequest,
1211
OpenSearchDashboardsResponseFactory,
@@ -15,7 +14,7 @@ import { ConfigurationClient } from '../types';
1514

1615
export function defineRoutes(
1716
router: IRouter,
18-
getConfigurationClient: (configurationClient: IScopedClusterClient) => ConfigurationClient,
17+
getConfigurationClient: (request?: OpenSearchDashboardsRequest) => ConfigurationClient,
1918
logger: Logger
2019
) {
2120
router.get(
@@ -24,9 +23,7 @@ export function defineRoutes(
2423
validate: false,
2524
},
2625
async (context, request, response) => {
27-
const client = getConfigurationClient(context.core.opensearch.client);
28-
29-
return await handleGetConfig(client, request, response, logger);
26+
return await handleGetConfig(getConfigurationClient, request, response, logger);
3027
}
3128
);
3229
router.get(
@@ -39,9 +36,7 @@ export function defineRoutes(
3936
},
4037
},
4138
async (context, request, response) => {
42-
const client = getConfigurationClient(context.core.opensearch.client);
43-
44-
return await handleGetEntityConfig(client, request, response, logger);
39+
return await handleGetEntityConfig(getConfigurationClient, request, response, logger);
4540
}
4641
);
4742
router.post(
@@ -57,9 +52,7 @@ export function defineRoutes(
5752
},
5853
},
5954
async (context, request, response) => {
60-
const client = getConfigurationClient(context.core.opensearch.client);
61-
62-
return await handleUpdateEntityConfig(client, request, response, logger);
55+
return await handleUpdateEntityConfig(getConfigurationClient, request, response, logger);
6356
}
6457
);
6558
router.delete(
@@ -72,21 +65,21 @@ export function defineRoutes(
7265
},
7366
},
7467
async (context, request, response) => {
75-
const client = getConfigurationClient(context.core.opensearch.client);
76-
77-
return await handleDeleteEntityConfig(client, request, response, logger);
68+
return await handleDeleteEntityConfig(getConfigurationClient, request, response, logger);
7869
}
7970
);
8071
}
8172

8273
export async function handleGetEntityConfig(
83-
client: ConfigurationClient,
74+
getConfigurationClient: (request?: OpenSearchDashboardsRequest) => ConfigurationClient,
8475
request: OpenSearchDashboardsRequest,
8576
response: OpenSearchDashboardsResponseFactory,
8677
logger: Logger
8778
) {
8879
logger.info(`Received a request to get entity config for ${request.params.entity}.`);
8980

81+
const client = getConfigurationClient(request);
82+
9083
try {
9184
const result = await client.getEntityConfig(request.params.entity, {
9285
headers: request.headers,
@@ -103,7 +96,7 @@ export async function handleGetEntityConfig(
10396
}
10497

10598
export async function handleUpdateEntityConfig(
106-
client: ConfigurationClient,
99+
getConfigurationClient: (request?: OpenSearchDashboardsRequest) => ConfigurationClient,
107100
request: OpenSearchDashboardsRequest,
108101
response: OpenSearchDashboardsResponseFactory,
109102
logger: Logger
@@ -112,6 +105,8 @@ export async function handleUpdateEntityConfig(
112105
`Received a request to update entity ${request.params.entity} with new value ${request.body.newValue}.`
113106
);
114107

108+
const client = getConfigurationClient(request);
109+
115110
try {
116111
const result = await client.updateEntityConfig(request.params.entity, request.body.newValue, {
117112
headers: request.headers,
@@ -128,13 +123,15 @@ export async function handleUpdateEntityConfig(
128123
}
129124

130125
export async function handleDeleteEntityConfig(
131-
client: ConfigurationClient,
126+
getConfigurationClient: (request?: OpenSearchDashboardsRequest) => ConfigurationClient,
132127
request: OpenSearchDashboardsRequest,
133128
response: OpenSearchDashboardsResponseFactory,
134129
logger: Logger
135130
) {
136131
logger.info(`Received a request to delete entity ${request.params.entity}.`);
137132

133+
const client = getConfigurationClient(request);
134+
138135
try {
139136
const result = await client.deleteEntityConfig(request.params.entity, {
140137
headers: request.headers,
@@ -151,13 +148,15 @@ export async function handleDeleteEntityConfig(
151148
}
152149

153150
export async function handleGetConfig(
154-
client: ConfigurationClient,
151+
getConfigurationClient: (request?: OpenSearchDashboardsRequest) => ConfigurationClient,
155152
request: OpenSearchDashboardsRequest,
156153
response: OpenSearchDashboardsResponseFactory,
157154
logger: Logger
158155
) {
159156
logger.info('Received a request to get all configurations.');
160157

158+
const client = getConfigurationClient(request);
159+
161160
try {
162161
const result = await client.getConfig({ headers: request.headers });
163162
return response.ok({

0 commit comments

Comments
 (0)