diff --git a/ams-express-shopping/auth/authorize.js b/ams-express-shopping/auth/authorize.js index be65d63..811612e 100644 --- a/ams-express-shopping/auth/authorize.js +++ b/ams-express-shopping/auth/authorize.js @@ -1,6 +1,7 @@ const { AuthorizationManagementService, IdentityServiceAuthProvider, TECHNICAL_USER_FLOW, PRINCIPAL_PROPAGATION_FLOW } = require("@sap/ams"); const { mapTechnicalUserApi, mapPrincipalPropagationApi } = require("./apis"); +/** @type {AuthorizationManagementService} */ let ams; if (process.env.NODE_ENV === 'test') { ams = AuthorizationManagementService.fromLocalDcn("./test/dcn", { @@ -18,25 +19,15 @@ const authProvider = new IdentityServiceAuthProvider(ams) const amsMw = authProvider.getMiddleware(); const authorize = amsMw.authorize(); -if (process.env.DEBUG?.split(",").includes("ams")) { - ams.on("authorizationCheck", event => { - if (event.type === "checkPrivilege") { - if (event.decision.isGranted()) { - console.log(`Privilege '${event.action} ${event.resource}' for ${event.context.token.scimId} was granted based on input`, event.input); - } else if(event.decision.isDenied()) { - console.log(`Privilege '${event.action} ${event.resource}' for ${event.context.token.scimId} was denied based on input`, event.input); - } else { - console.log(`Privilege '${event.action} ${event.resource}' for ${event.context.token.scimId} was conditionally granted based on input`, event.input); - } - } - }); - - ams.on("error", event => { - if (event.type === "bundleRefreshError") { +ams.on("error", event => { + if (event.type === "bundleRefreshError") { + if(ams.isReady()) { console.warn("AMS bundle refresh error:", event.error); + } else { + console.error("AMS initial bundle fetch error:", event.error); } - }); -} + } +}); module.exports = { authorize, diff --git a/ams-express-shopping/package.json b/ams-express-shopping/package.json index ebf4007..9ee74b5 100644 --- a/ams-express-shopping/package.json +++ b/ams-express-shopping/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "jest": "NODE_ENV=test npx jest", + "jest": "NODE_ENV=test AMS_STARTUP_TIMEOUT=3 npx jest", "start": "node server.js", "pretest": "npx compile-dcl -d auth/dcl -o test/dcn", "test": "npm run jest" diff --git a/ams-express-shopping/server.js b/ams-express-shopping/server.js index 705b5fc..84ac106 100644 --- a/ams-express-shopping/server.js +++ b/ams-express-shopping/server.js @@ -18,16 +18,10 @@ const healthCheck = (req, res) => { } }; -let resolveServerReady; // only required to know before unit tests when the server is ready -const whenServerReady = new Promise((resolve) => { - resolveServerReady = resolve; -}); - const amsStartupCheck = async () => { try { await ams.whenReady(AMS_STARTUP_TIMEOUT); isReady = true; - resolveServerReady(); console.log('AMS has become ready.'); } catch (e) { console.error('AMS did not become become ready in time:', e); @@ -62,4 +56,4 @@ const server = app.listen(PORT, () => { amsStartupCheck(); -module.exports = { server, whenServerReady }; \ No newline at end of file +module.exports = server; \ No newline at end of file diff --git a/ams-express-shopping/test/awaitTestBundlePdpReady.js b/ams-express-shopping/test/awaitTestBundlePdpReady.js index d53b586..8b6c42c 100644 --- a/ams-express-shopping/test/awaitTestBundlePdpReady.js +++ b/ams-express-shopping/test/awaitTestBundlePdpReady.js @@ -5,7 +5,7 @@ const { ams } = require("../auth/authorize"); */ module.exports = async() => { try { - await ams.isReady(5000); + await ams.whenReady(process.env.AMS_STARTUP_TIMEOUT); } catch(e) { console.error(e); process.exit(1); diff --git a/ams-express-shopping/test/server.test.js b/ams-express-shopping/test/server.test.js index 0deb84d..d674fcb 100644 --- a/ams-express-shopping/test/server.test.js +++ b/ams-express-shopping/test/server.test.js @@ -1,11 +1,7 @@ const request = require('supertest'); -const { server, whenServerReady } = require('../server'); +const server = require('../server'); const db = require('../db/db'); -beforeAll(async () => { - await whenServerReady; -}); - beforeEach(() => { db.reset(); });