@rockcarver/frodo-lib 2.0.0-63 → 2.0.0-64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build.zip
CHANGED
|
Binary file
|
|
@@ -145,7 +145,7 @@ function getFrodoArgValue(_ref3) {
|
|
|
145
145
|
if (v === name) {
|
|
146
146
|
expectValue = true;
|
|
147
147
|
} else if (expectValue) {
|
|
148
|
-
result = v;
|
|
148
|
+
result = '_' + v;
|
|
149
149
|
expectValue = false;
|
|
150
150
|
}
|
|
151
151
|
});
|
|
@@ -308,7 +308,7 @@ function setupPollyForFrodoLib(_ref5) {
|
|
|
308
308
|
}), "/openidm"));
|
|
309
309
|
polly.server.any('/environment/*').recordingName("".concat(getFrodoCommand({
|
|
310
310
|
state
|
|
311
|
-
})
|
|
311
|
+
})).concat(getFrodoArgValue({
|
|
312
312
|
name: '--encoding'
|
|
313
313
|
}), "/environment"));
|
|
314
314
|
polly.server.any('/keys').recordingName("".concat(getFrodoCommand({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["_adapterNodeHttp","_interopRequireDefault","require","_core","_persisterFs","_utils","_path","_Base64Utils","_Console","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","FRODO_MOCK_HOSTS","process","env","split","recordIfMissing","mode","MODES","REPLAY","recordingsDir","FRODO_MOCK_DIR","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","_x","_delay","ms","setTimeout","countdown","_x2","_countdown","ttl","timeout","scheduleShutdown","_x3","_scheduleShutdown","_ref","polly","state","console","log","concat","getFrodoCommand","stop","getFrodoArgsId","_ref2","start","result","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","replace","length","paramsId","join","argsId","debugMessage","message","getFrodoArgValue","_ref3","name","_ref4","cmd","endsWith","path","parse","printMessage","type","filterRecording","recording","_recording$request","_recording$request2","_recording$response","request","header","toUpperCase","isBase64Encoded","encode","postData","text","response","content","json","JSON","stringify","setupPollyForFrodoLib","_ref5","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","_req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\n\nimport { State } from '../shared/State';\nimport { encode, isBase64Encoded } from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\n\nconst FRODO_MOCK_HOSTS = process.env.FRODO_MOCK_HOSTS\n ? process.env.FRODO_MOCK_HOSTS.split(',')\n : [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n 'https://openam-volker-demo.forgeblocks.com',\n ];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\nconst recordingsDir = process.env.FRODO_MOCK_DIR\n ? process.env.FRODO_MOCK_DIR\n : 'test/e2e/mocks';\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return {\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n };\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy['body'] = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nSpecial case for when cli switches are the same but their values are \ndifferent, for example when testing different encodings: generic, pem, base64hmac\n*/\nfunction getFrodoArgValue({ name }: { name: string }) {\n let result: string = '';\n let expectValue = false;\n process.argv.map((v) => {\n if (v === name) {\n expectValue = true;\n } else if (expectValue) {\n result = v;\n expectValue = false;\n }\n });\n return result;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nfunction filterRecording(recording: {\n request: {\n headers: [{ name: string; value: string }];\n postData: { text: any };\n };\n response: { content: { text: any } };\n}) {\n // request headers\n if (recording.request?.headers) {\n const headers: [{ name: string; value: string }] =\n recording.request.headers;\n headers.map((header) => {\n if (header.name.toUpperCase() === 'AUTHORIZATION') {\n if (isBase64Encoded(header.value)) {\n header.value = encode('username:password');\n } else {\n header.value = header.value.replace(\n /Bearer .+/,\n 'Bearer <bearer token>'\n );\n }\n }\n if (header.name.toUpperCase() === 'X-API-KEY') {\n header.value = '<api key>';\n }\n if (header.name.toUpperCase() === 'X-API-SECRET') {\n header.value = '<api secret>';\n }\n });\n recording.request.headers = headers;\n }\n\n // request post body\n if (recording.request?.postData?.text) {\n let body = recording.request.postData.text;\n body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');\n recording.request.postData.text = body;\n }\n\n // response body\n if (recording.response?.content?.text) {\n let body = recording.response.content.text;\n try {\n const json = JSON.parse(body);\n if (json['access_token']) json['access_token'] = '<access token>';\n body = JSON.stringify(json);\n } catch (error) {\n // ignore\n }\n recording.response.content.text = body;\n }\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/am/saml2/*')\n .recordingName(`${getFrodoCommand({ state })}/saml2`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server.any('/environment/*').recordingName(\n `${getFrodoCommand({\n state,\n })}_${getFrodoArgValue({ name: '--encoding' })}/environment`\n );\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server\n .any()\n .on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n })\n .on('beforePersist', (_req, recording) => {\n filterRecording(recording);\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["_adapterNodeHttp","_interopRequireDefault","require","_core","_persisterFs","_utils","_path","_Base64Utils","_Console","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","FRODO_MOCK_HOSTS","process","env","split","recordIfMissing","mode","MODES","REPLAY","recordingsDir","FRODO_MOCK_DIR","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","_x","_delay","ms","setTimeout","countdown","_x2","_countdown","ttl","timeout","scheduleShutdown","_x3","_scheduleShutdown","_ref","polly","state","console","log","concat","getFrodoCommand","stop","getFrodoArgsId","_ref2","start","result","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","replace","length","paramsId","join","argsId","debugMessage","message","getFrodoArgValue","_ref3","name","_ref4","cmd","endsWith","path","parse","printMessage","type","filterRecording","recording","_recording$request","_recording$request2","_recording$response","request","header","toUpperCase","isBase64Encoded","encode","postData","text","response","content","json","JSON","stringify","setupPollyForFrodoLib","_ref5","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","_req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\n\nimport { State } from '../shared/State';\nimport { encode, isBase64Encoded } from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\n\nconst FRODO_MOCK_HOSTS = process.env.FRODO_MOCK_HOSTS\n ? process.env.FRODO_MOCK_HOSTS.split(',')\n : [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n 'https://openam-volker-demo.forgeblocks.com',\n ];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\nconst recordingsDir = process.env.FRODO_MOCK_DIR\n ? process.env.FRODO_MOCK_DIR\n : 'test/e2e/mocks';\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return {\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n };\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy['body'] = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nSpecial case for when cli switches are the same but their values are \ndifferent, for example when testing different encodings: generic, pem, base64hmac\n*/\nfunction getFrodoArgValue({ name }: { name: string }) {\n let result: string = '';\n let expectValue = false;\n process.argv.map((v) => {\n if (v === name) {\n expectValue = true;\n } else if (expectValue) {\n result = '_' + v;\n expectValue = false;\n }\n });\n return result;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nfunction filterRecording(recording: {\n request: {\n headers: [{ name: string; value: string }];\n postData: { text: any };\n };\n response: { content: { text: any } };\n}) {\n // request headers\n if (recording.request?.headers) {\n const headers: [{ name: string; value: string }] =\n recording.request.headers;\n headers.map((header) => {\n if (header.name.toUpperCase() === 'AUTHORIZATION') {\n if (isBase64Encoded(header.value)) {\n header.value = encode('username:password');\n } else {\n header.value = header.value.replace(\n /Bearer .+/,\n 'Bearer <bearer token>'\n );\n }\n }\n if (header.name.toUpperCase() === 'X-API-KEY') {\n header.value = '<api key>';\n }\n if (header.name.toUpperCase() === 'X-API-SECRET') {\n header.value = '<api secret>';\n }\n });\n recording.request.headers = headers;\n }\n\n // request post body\n if (recording.request?.postData?.text) {\n let body = recording.request.postData.text;\n body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');\n recording.request.postData.text = body;\n }\n\n // response body\n if (recording.response?.content?.text) {\n let body = recording.response.content.text;\n try {\n const json = JSON.parse(body);\n if (json['access_token']) json['access_token'] = '<access token>';\n body = JSON.stringify(json);\n } catch (error) {\n // ignore\n }\n recording.response.content.text = body;\n }\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/am/saml2/*')\n .recordingName(`${getFrodoCommand({ state })}/saml2`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server.any('/environment/*').recordingName(\n `${getFrodoCommand({\n state,\n })}${getFrodoArgValue({ name: '--encoding' })}/environment`\n );\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server\n .any()\n .on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n })\n .on('beforePersist', (_req, recording) => {\n filterRecording(recording);\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ function getFrodoArgValue({
|
|
|
116
116
|
if (v === name) {
|
|
117
117
|
expectValue = true;
|
|
118
118
|
} else if (expectValue) {
|
|
119
|
-
result = v;
|
|
119
|
+
result = '_' + v;
|
|
120
120
|
expectValue = false;
|
|
121
121
|
}
|
|
122
122
|
});
|
|
@@ -277,7 +277,7 @@ export function setupPollyForFrodoLib({
|
|
|
277
277
|
})}/openidm`);
|
|
278
278
|
polly.server.any('/environment/*').recordingName(`${getFrodoCommand({
|
|
279
279
|
state
|
|
280
|
-
})}
|
|
280
|
+
})}${getFrodoArgValue({
|
|
281
281
|
name: '--encoding'
|
|
282
282
|
})}/environment`);
|
|
283
283
|
polly.server.any('/keys').recordingName(`${getFrodoCommand({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["NodeHttpAdapter","Polly","FSPersister","MODES","path","encode","isBase64Encoded","debugMessage","printMessage","FRODO_MOCK_HOSTS","process","env","split","recordIfMissing","mode","REPLAY","recordingsDir","FRODO_MOCK_DIR","FRODO_MOCK","register","RECORD","defaultMatchRequestsBy","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","ttl","timeout","scheduleShutdown","polly","state","console","log","getFrodoCommand","stop","getFrodoArgsId","start","result","args","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","replace","length","paramsId","join","argsId","message","getFrodoArgValue","name","cmd","endsWith","parse","error","type","filterRecording","recording","_recording$request","_recording$request2","_recording$response","request","header","toUpperCase","value","postData","text","response","content","json","JSON","stringify","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","_req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\n\nimport { State } from '../shared/State';\nimport { encode, isBase64Encoded } from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\n\nconst FRODO_MOCK_HOSTS = process.env.FRODO_MOCK_HOSTS\n ? process.env.FRODO_MOCK_HOSTS.split(',')\n : [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n 'https://openam-volker-demo.forgeblocks.com',\n ];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\nconst recordingsDir = process.env.FRODO_MOCK_DIR\n ? process.env.FRODO_MOCK_DIR\n : 'test/e2e/mocks';\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return {\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n };\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy['body'] = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nSpecial case for when cli switches are the same but their values are \ndifferent, for example when testing different encodings: generic, pem, base64hmac\n*/\nfunction getFrodoArgValue({ name }: { name: string }) {\n let result: string = '';\n let expectValue = false;\n process.argv.map((v) => {\n if (v === name) {\n expectValue = true;\n } else if (expectValue) {\n result = v;\n expectValue = false;\n }\n });\n return result;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nfunction filterRecording(recording: {\n request: {\n headers: [{ name: string; value: string }];\n postData: { text: any };\n };\n response: { content: { text: any } };\n}) {\n // request headers\n if (recording.request?.headers) {\n const headers: [{ name: string; value: string }] =\n recording.request.headers;\n headers.map((header) => {\n if (header.name.toUpperCase() === 'AUTHORIZATION') {\n if (isBase64Encoded(header.value)) {\n header.value = encode('username:password');\n } else {\n header.value = header.value.replace(\n /Bearer .+/,\n 'Bearer <bearer token>'\n );\n }\n }\n if (header.name.toUpperCase() === 'X-API-KEY') {\n header.value = '<api key>';\n }\n if (header.name.toUpperCase() === 'X-API-SECRET') {\n header.value = '<api secret>';\n }\n });\n recording.request.headers = headers;\n }\n\n // request post body\n if (recording.request?.postData?.text) {\n let body = recording.request.postData.text;\n body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');\n recording.request.postData.text = body;\n }\n\n // response body\n if (recording.response?.content?.text) {\n let body = recording.response.content.text;\n try {\n const json = JSON.parse(body);\n if (json['access_token']) json['access_token'] = '<access token>';\n body = JSON.stringify(json);\n } catch (error) {\n // ignore\n }\n recording.response.content.text = body;\n }\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/am/saml2/*')\n .recordingName(`${getFrodoCommand({ state })}/saml2`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server.any('/environment/*').recordingName(\n `${getFrodoCommand({\n state,\n })}_${getFrodoArgValue({ name: '--encoding' })}/environment`\n );\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server\n .any()\n .on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n })\n .on('beforePersist', (_req, recording) => {\n filterRecording(recording);\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["NodeHttpAdapter","Polly","FSPersister","MODES","path","encode","isBase64Encoded","debugMessage","printMessage","FRODO_MOCK_HOSTS","process","env","split","recordIfMissing","mode","REPLAY","recordingsDir","FRODO_MOCK_DIR","FRODO_MOCK","register","RECORD","defaultMatchRequestsBy","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","ttl","timeout","scheduleShutdown","polly","state","console","log","getFrodoCommand","stop","getFrodoArgsId","start","result","args","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","replace","length","paramsId","join","argsId","message","getFrodoArgValue","name","cmd","endsWith","parse","error","type","filterRecording","recording","_recording$request","_recording$request2","_recording$response","request","header","toUpperCase","value","postData","text","response","content","json","JSON","stringify","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","_req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\n\nimport { State } from '../shared/State';\nimport { encode, isBase64Encoded } from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\n\nconst FRODO_MOCK_HOSTS = process.env.FRODO_MOCK_HOSTS\n ? process.env.FRODO_MOCK_HOSTS.split(',')\n : [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n 'https://openam-volker-demo.forgeblocks.com',\n ];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\nconst recordingsDir = process.env.FRODO_MOCK_DIR\n ? process.env.FRODO_MOCK_DIR\n : 'test/e2e/mocks';\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return {\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n };\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy['body'] = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nSpecial case for when cli switches are the same but their values are \ndifferent, for example when testing different encodings: generic, pem, base64hmac\n*/\nfunction getFrodoArgValue({ name }: { name: string }) {\n let result: string = '';\n let expectValue = false;\n process.argv.map((v) => {\n if (v === name) {\n expectValue = true;\n } else if (expectValue) {\n result = '_' + v;\n expectValue = false;\n }\n });\n return result;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nfunction filterRecording(recording: {\n request: {\n headers: [{ name: string; value: string }];\n postData: { text: any };\n };\n response: { content: { text: any } };\n}) {\n // request headers\n if (recording.request?.headers) {\n const headers: [{ name: string; value: string }] =\n recording.request.headers;\n headers.map((header) => {\n if (header.name.toUpperCase() === 'AUTHORIZATION') {\n if (isBase64Encoded(header.value)) {\n header.value = encode('username:password');\n } else {\n header.value = header.value.replace(\n /Bearer .+/,\n 'Bearer <bearer token>'\n );\n }\n }\n if (header.name.toUpperCase() === 'X-API-KEY') {\n header.value = '<api key>';\n }\n if (header.name.toUpperCase() === 'X-API-SECRET') {\n header.value = '<api secret>';\n }\n });\n recording.request.headers = headers;\n }\n\n // request post body\n if (recording.request?.postData?.text) {\n let body = recording.request.postData.text;\n body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');\n recording.request.postData.text = body;\n }\n\n // response body\n if (recording.response?.content?.text) {\n let body = recording.response.content.text;\n try {\n const json = JSON.parse(body);\n if (json['access_token']) json['access_token'] = '<access token>';\n body = JSON.stringify(json);\n } catch (error) {\n // ignore\n }\n recording.response.content.text = body;\n }\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/am/saml2/*')\n .recordingName(`${getFrodoCommand({ state })}/saml2`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server.any('/environment/*').recordingName(\n `${getFrodoCommand({\n state,\n })}${getFrodoArgValue({ name: '--encoding' })}/environment`\n );\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server\n .any()\n .on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n })\n .on('beforePersist', (_req, recording) => {\n filterRecording(recording);\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|