Skip to content

Commit d465a2f

Browse files
authored
Merge pull request #19 from UserOfficeProject/multi_user_requests
feat: allow multiple users to be requested at once
2 parents c182a1d + 9c36447 commit d465a2f

1 file changed

Lines changed: 32 additions & 16 deletions

File tree

src/mockserver.js

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,36 +46,40 @@ async function mockserver() {
4646
const respondToRequest = function (request) {
4747
logger.logInfo('Callback triggered with request', { request });
4848

49-
let responsePath = null;
49+
let responsePaths = [];
5050

5151
const userNumber = request.queryStringParameters?.userNumbers;
5252
const surname = request.queryStringParameters?.surname;
5353
const emails = request.queryStringParameters?.emails;
5454

5555
if (request.path === '/users-service/v1/basic-person-details' || request.path === '/users-service/v1/basic-person-details/searchable') {
5656
if (userNumber) {
57-
responsePath = `src/responses/user/getbasicpersondetails/${userNumber[0]}.json`;
57+
for (const un of userNumber) {
58+
responsePaths.push(`src/responses/user/getbasicpersondetails/${un}.json`);
59+
}
5860
}
5961
if (surname) {
60-
responsePath = `src/responses/user/getbasicpersondetails/${surname}.json`;
62+
responsePaths.push(`src/responses/user/getbasicpersondetails/${surname}.json`);
6163
}
6264
if (emails) {
63-
responsePath = `src/responses/user/getbasicpersondetails/${emails[0]}.json`;
65+
for (const email of emails) {
66+
responsePaths.push(`src/responses/user/getbasicpersondetails/${email}.json`);
67+
}
6468
}
6569
}
6670

6771
else if (request.path.startsWith('/users-service/v1/sessions/')) {
6872
const SessionUser = roleMappings[request.path.replace('/users-service/v1/sessions/', '')];
69-
responsePath = `src/responses/user/getpersondetailsfromsessionid/${SessionUser}.json`;
73+
responsePaths.push(`src/responses/user/getpersondetailsfromsessionid/${SessionUser}.json`);
7074
}
7175

7276
else if (request.path.startsWith('/users-service/v1/role/')) {
7377
const Role = request.path.replace('/users-service/v1/role/', '');
74-
responsePath = `src/responses/user/getrolesforuser/${Role}.json`;
78+
responsePaths.push(`src/responses/user/getrolesforuser/${Role}.json`);
7579
}
7680

7781
else if (request.path === '/users-service/v1/token') {
78-
responsePath = 'src/responses/user/isTokenValid.json';
82+
responsePaths.push('src/responses/user/isTokenValid.json');
7983
}
8084

8185
else {
@@ -85,16 +89,28 @@ async function mockserver() {
8589
};
8690
}
8791

88-
if (!responsePath || !fs.existsSync(responsePath)) {
89-
logger.logError('Response file does not exist', { responsePath });
90-
return {
91-
statusCode: 404,
92-
body: JSON.stringify({ error: 'Resource not found' }),
93-
};
92+
for (const responsePath of responsePaths) {
93+
if (!responsePath || !fs.existsSync(responsePath)) {
94+
logger.logError('Response file does not exist', { responsePath });
95+
return {
96+
statusCode: 404,
97+
body: JSON.stringify({ error: 'Resource not found' }),
98+
};
99+
}
94100
}
95-
96-
const file = fs.readFileSync(responsePath, 'utf8');
97-
logger.logInfo('Returning response file', { responsePath });
101+
102+
var file;
103+
if (responsePaths.length == 1) {
104+
file = fs.readFileSync(responsePaths[0], 'utf8');
105+
} else {
106+
// Combine the json arrays when multiple user details are requested at once
107+
file = JSON.stringify(
108+
responsePaths
109+
.map(path => JSON.parse(fs.readFileSync(path, 'utf8')))
110+
.flat()
111+
);
112+
}
113+
logger.logInfo('Returning response files', { responsePaths, file });
98114

99115
return {
100116
statusCode: 200,

0 commit comments

Comments
 (0)