Skip to content

Commit af4416c

Browse files
TA review changes: move utils to common area, move objectStore to routes/, hide/refactor adding the sandbox baseUrl header, sandbox objectStore returns x-correlation-id
1 parent 8fa1cd8 commit af4416c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+123
-150
lines changed

sandbox/src/app.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@ const Inert = require('@hapi/inert')
44
const process = require('process')
55
const routes = require('./routes')
66

7+
/*
8+
The purpose of this logic is to mirror the transformations the API proxy currently applies to responses.
9+
This allows the sandbox to have the same behaviour locally.
10+
*/
711
const addCommonHeaders = function (request, response) {
812
// if a response doesn't include any headers provide an empty object to allow for the common headers to be appended.
913
if (!response.headers) {
1014
response.headers = {}
1115
}
1216

13-
if (!request.path.includes("ObjectStore")) {
14-
if (request.headers["x-correlation-id"]) {
15-
response.headers["X-Correlation-ID"] = request.headers["x-correlation-id"]
16-
}
17+
// API proxy always adds x-correlation-id to responses.
18+
if (request.headers["x-correlation-id"]) {
19+
response.headers["X-Correlation-ID"] = request.headers["x-correlation-id"]
20+
}
21+
22+
if (!request.path.includes("/ObjectStore")) {
1723
response.headers["X-Request-ID"] = '58621d65-d5ad-4c3a-959f-0438e355990e-1'
1824
}
1925
}

sandbox/src/routes/common/validationUtil.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

sandbox/src/services/businessFunctionValidator.js renamed to sandbox/src/routes/common/validationUtils.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
1+
/**
2+
* @file validationUtil.js
3+
* @description Provides utility functions.
4+
*/
15

2-
module.exports = {
3-
validateBusinessFunction: function (request, h, allowedBusinessFunctions) {
6+
function isValidUuid(string) {
7+
return /^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i.test(string);
8+
}
9+
10+
function hasLegacyPrefix(string) {
11+
return string.startsWith('att-');
12+
}
13+
14+
function validateBusinessFunction(request, h, allowedBusinessFunctions) {
415
const requestedBusinessFunction = request.headers["nhsd-ers-business-function"]
516
const oboUserId = request.headers["nhsd-ers-on-behalf-of-user-id"]
617

@@ -23,5 +34,10 @@ module.exports = {
2334
}
2435

2536
return undefined;
26-
}
2737
}
38+
39+
module.exports = {
40+
isValidUuid,
41+
hasLegacyPrefix,
42+
validateBusinessFunction
43+
};

sandbox/src/routes/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const retrieveAttachmentR4 = require('./r4/retrieveAttachment')
4747
/**
4848
* Services
4949
*/
50-
const objectStore = require('../services/objectStore')
50+
const objectStore = require('./objectStore')
5151

5252

5353
const routes = [].concat(

sandbox/src/routes/r4/retrieveAttachment.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
const businessFunctionValidator = require('../../services/businessFunctionValidator')
2-
const validationUtil = require('../common/validationUtil')
1+
const validationUtils = require('../common/validationUtils')
32

43
module.exports = [
54
/**
@@ -12,7 +11,7 @@ module.exports = [
1211

1312
const allowedBusinessFunctions = ["REFERRING_CLINICIAN", "REFERRING_CLINICIAN_ADMIN", "SERVICE_PROVIDER_CLINICIAN", "SERVICE_PROVIDER_CLINICIAN_ADMIN"];
1413

15-
const validationResult = businessFunctionValidator.validateBusinessFunction(request, h, allowedBusinessFunctions);
14+
const validationResult = validationUtils.validateBusinessFunction(request, h, allowedBusinessFunctions);
1615
if (validationResult) {
1716
return validationResult;
1817
}
@@ -21,7 +20,7 @@ module.exports = [
2120
const objectStore = "/ObjectStore/d497bbe3-f88b-45f1-b3d4-9c563e4c0f5f";
2221
const location = request.headers['x-ers-sandbox-baseurl'] + objectStore;
2322

24-
if ((validationUtil.hasLegacyPrefix(binaryId) || validationUtil.isValidUuid(binaryId)) && request.method === 'get') {
23+
if ((validationUtils.hasLegacyPrefix(binaryId) || validationUtils.isValidUuid(binaryId)) && request.method === 'get') {
2524
const response = h.response().code(307);
2625
response.headers["Location"] = location;
2726
return response;

sandbox/src/routes/r4/retrieveHealthcareService.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const mockResponseProvider = require('./services/mockResponseProvider')
2-
const businessFunctionValidator = require('../../services/businessFunctionValidator')
2+
const validationUtils = require('../common/validationUtils')
33

44
function retrieveHealthcareService(request, h) {
55
const allowedBusinessFunctions = ["REFERRING_CLINICIAN", "REFERRING_CLINICIAN_ADMIN"]
66

7-
const validationResult = businessFunctionValidator.validateBusinessFunction(request, h, allowedBusinessFunctions)
7+
const validationResult = validationUtils.validateBusinessFunction(request, h, allowedBusinessFunctions)
88
if (validationResult) {
99
return validationResult
1010
}

sandbox/src/routes/r4/searchForHealthcareServices.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const mockResponseProvider = require('./services/mockResponseProvider')
2-
const businessFunctionValidator = require('../../services/businessFunctionValidator')
2+
const validationUtils = require('../common/validationUtils')
33

44
module.exports = [
55
{
@@ -8,7 +8,7 @@ module.exports = [
88
handler: (request, h) => {
99
const allowedBusinessFunctions = ["REFERRING_CLINICIAN", "REFERRING_CLINICIAN_ADMIN"]
1010

11-
const validationResult = businessFunctionValidator.validateBusinessFunction(request, h, allowedBusinessFunctions)
11+
const validationResult = validationUtils.validateBusinessFunction(request, h, allowedBusinessFunctions)
1212
if (validationResult) {
1313
return validationResult
1414
}

sandbox/src/routes/r4/searchServiceRequest.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const mockResponseProvider = require('./services/mockResponseProvider')
2-
const businessFunctionValidator = require('../../services/businessFunctionValidator')
2+
const validationUtils = require('../common/validationUtils')
33

44
function searchServiceRequest(request, h) {
55
const allowedBusinessFunctions = ["REFERRING_CLINICIAN", "REFERRING_CLINICIAN_ADMIN", "SERVICE_PROVIDER_CLINICIAN", "SERVICE_PROVIDER_CLINICIAN_ADMIN"]
66

7-
const validationResult = businessFunctionValidator.validateBusinessFunction(request, h, allowedBusinessFunctions)
7+
const validationResult = validationUtils.validateBusinessFunction(request, h, allowedBusinessFunctions)
88
if (validationResult) {
99
return validationResult
1010
}

sandbox/src/routes/stu3/acceptReferral.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const mockResponseProvider = require('./services/mockResponseProvider')
2-
const businessFunctionValidator = require('../../services/businessFunctionValidator')
2+
const validationUtils = require('../common/validationUtils')
33

44
module.exports = [
55
/**
@@ -12,7 +12,7 @@ module.exports = [
1212

1313
const allowedBusinessFunctions = ["SERVICE_PROVIDER_CLINICIAN", "SERVICE_PROVIDER_CLINICIAN_ADMIN"]
1414

15-
const validationResult = businessFunctionValidator.validateBusinessFunction(request, h, allowedBusinessFunctions)
15+
const validationResult = validationUtils.validateBusinessFunction(request, h, allowedBusinessFunctions)
1616

1717
if (validationResult) {
1818
return validationResult

0 commit comments

Comments
 (0)