@rockcarver/frodo-lib 0.17.8-1 → 0.17.8-2
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/CHANGELOG.md +5 -1
- package/cjs/utils/AutoSetupPolly.js +1 -1
- package/cjs/utils/AutoSetupPolly.js.map +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/esm/utils/AutoSetupPolly.mjs +1 -1
- package/esm/utils/SetupPollyForFrodoLib.mjs +1 -1
- package/package.json +2 -1
- package/types/utils/AutoSetupPolly.d.ts.map +1 -1
- package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.17.8-2] - 2023-01-12
|
|
11
|
+
|
|
10
12
|
## [0.17.8-1] - 2023-01-12
|
|
11
13
|
|
|
12
14
|
## [0.17.8-0] - 2023-01-11
|
|
@@ -915,7 +917,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
915
917
|
- Fixed problem with adding connection profiles
|
|
916
918
|
- Miscellaneous bug fixes
|
|
917
919
|
|
|
918
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.17.8-
|
|
920
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.17.8-2...HEAD
|
|
921
|
+
|
|
922
|
+
[0.17.8-2]: https://github.com/rockcarver/frodo-lib/compare/v0.17.8-1...v0.17.8-2
|
|
919
923
|
|
|
920
924
|
[0.17.8-1]: https://github.com/rockcarver/frodo-lib/compare/v0.17.8-0...v0.17.8-1
|
|
921
925
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoSetupPolly.js","names":["setupPolly","pollyJest","Polly","register","NodeHttpAdapter","FSPersister","__dirname","path","dirname","fileURLToPath","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_POLLY_MODE","state","setHost","FRODO_HOST","setRealm","FRODO_REALM","getTokens","Error","getHost","RECORD","setCookieName","setCookieValue","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","autoSetupPolly","matchRequestsBy","adapters","flushRequestsOnStop","logLevel","recordFailedRequests","persister","persisterOptions","fs"],"sources":["utils/AutoSetupPolly.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport pollyJest from 'setup-polly-jest';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { getTokens } from '../ops/AuthenticateOps';\nimport { state } from '../index';\n\nconst { setupPolly } = pollyJest;\nPolly.register(NodeHttpAdapter);\nPolly.register(FSPersister);\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/src/test/mock-recordings'\n);\n\nswitch (process.env.FRODO_POLLY_MODE) {\n // record mock responses from a real env: `npm run test:record`\n case 'record': {\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n if (!(await getTokens()))\n throw new Error(\n `Unable to record mock responses from '${state.getHost()}'`\n );\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n }\n // record mock responses from authentication APIs (don't authenticate): `npm run test:record_noauth`\n case 'record_noauth':\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n // replay mock responses: `npm test`\n default:\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n state.setCookieName('cookieName');\n state.setCookieValue('cookieValue');\n break;\n}\n\nexport function defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\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: true,\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}\n\nexport function autoSetupPolly(matchRequestsBy = defaultMatchRequestsBy()) {\n return setupPolly({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiC;
|
|
1
|
+
{"version":3,"file":"AutoSetupPolly.js","names":["setupPolly","pollyJest","Polly","register","NodeHttpAdapter","FSPersister","__dirname","path","dirname","fileURLToPath","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_POLLY_MODE","state","setHost","FRODO_HOST","setRealm","FRODO_REALM","getTokens","Error","getHost","RECORD","setCookieName","setCookieValue","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","autoSetupPolly","matchRequestsBy","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs"],"sources":["utils/AutoSetupPolly.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport pollyJest from 'setup-polly-jest';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { getTokens } from '../ops/AuthenticateOps';\nimport { state } from '../index';\nimport { LogLevelDesc } from 'loglevel';\n\nconst { setupPolly } = pollyJest;\nPolly.register(NodeHttpAdapter);\nPolly.register(FSPersister);\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/src/test/mock-recordings'\n);\n\nswitch (process.env.FRODO_POLLY_MODE) {\n // record mock responses from a real env: `npm run test:record`\n case 'record': {\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n if (!(await getTokens()))\n throw new Error(\n `Unable to record mock responses from '${state.getHost()}'`\n );\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n }\n // record mock responses from authentication APIs (don't authenticate): `npm run test:record_noauth`\n case 'record_noauth':\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n // replay mock responses: `npm test`\n default:\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n state.setCookieName('cookieName');\n state.setCookieValue('cookieValue');\n break;\n}\n\nexport function defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\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: true,\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}\n\nexport function autoSetupPolly(matchRequestsBy = defaultMatchRequestsBy()) {\n return setupPolly({\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"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAiC;AAGjC,IAAM;EAAEA;AAAW,CAAC,GAAGC,uBAAS;AAChCC,WAAK,CAACC,QAAQ,CAACC,wBAAe,CAAC;AAC/BF,WAAK,CAACC,QAAQ,CAACE,oBAAW,CAAC;AAE3B,IAAMC,QAAS,GAAGC,aAAI,CAACC,OAAO,CAAC,IAAAC,kBAAa,sDAAiB,CAAC;AAE9D,IAAIC,eAAe,GAAG,KAAK;AAC3B,IAAIC,IAAI,GAAGC,YAAK,CAACC,MAAM;;AAEvB;AACA;AACA,IAAMC,aAAa,GAAGR,QAAS,CAACS,OAAO,CACrC,2BAA2B,EAC3B,6BAA6B,CAC9B;AAED,QAAQC,OAAO,CAACC,GAAG,CAACC,gBAAgB;EAClC;EACA,KAAK,QAAQ;IAAE;MACbC,YAAK,CAACC,OAAO,CACXJ,OAAO,CAACC,GAAG,CAACI,UAAU,IAAI,6CAA6C,CACxE;MACDF,YAAK,CAACG,QAAQ,CAACN,OAAO,CAACC,GAAG,CAACM,WAAW,IAAI,OAAO,CAAC;MAClD,IAAI,EAAE,MAAM,IAAAC,0BAAS,GAAE,CAAC,EACtB,MAAM,IAAIC,KAAK,iDAC4BN,YAAK,CAACO,OAAO,EAAE,OACzD;MACHf,IAAI,GAAGC,YAAK,CAACe,MAAM;MACnBjB,eAAe,GAAG,IAAI;MACtB;IACF;EACA;EACA,KAAK,eAAe;IAClBC,IAAI,GAAGC,YAAK,CAACe,MAAM;IACnBjB,eAAe,GAAG,IAAI;IACtB;EACF;EACA;IACES,YAAK,CAACC,OAAO,CACXJ,OAAO,CAACC,GAAG,CAACI,UAAU,IAAI,6CAA6C,CACxE;IACDF,YAAK,CAACG,QAAQ,CAACN,OAAO,CAACC,GAAG,CAACM,WAAW,IAAI,OAAO,CAAC;IAClDJ,YAAK,CAACS,aAAa,CAAC,YAAY,CAAC;IACjCT,YAAK,CAACU,cAAc,CAAC,aAAa,CAAC;IACnC;AAAM;AAGH,SAASC,sBAAsB,GAAG;EACvC,OAAOC,IAAI,CAACC,KAAK,CACfD,IAAI,CAACE,SAAS,CAAC;IACbC,MAAM,EAAE,IAAI;IACZC,OAAO,EAAE,KAAK;IAAE;IAChBC,IAAI,EAAE,IAAI;IACVC,KAAK,EAAE,KAAK;IACZC,GAAG,EAAE;MACHC,QAAQ,EAAE,IAAI;MACdC,QAAQ,EAAE,KAAK;MACfC,QAAQ,EAAE,KAAK;MACfC,QAAQ,EAAE,KAAK;MAAE;MACjBC,IAAI,EAAE,KAAK;MACXC,QAAQ,EAAE,IAAI;MACdC,KAAK,EAAE,IAAI;MACXC,IAAI,EAAE;IACR;EACF,CAAC,CAAC,CACH;AACH;AAEO,SAASC,cAAc,GAA6C;EAAA,IAA5CC,eAAe,uEAAGlB,sBAAsB,EAAE;EACvE,OAAO9B,UAAU,CAAC;IAChBiD,QAAQ,EAAE,CAAC,WAAW,CAAC;IACvBtC,IAAI;IACJD,eAAe;IACfwC,mBAAmB,EAAE,IAAI;IACzBC,QAAQ,EAAGnC,OAAO,CAACC,GAAG,CAACmC,qBAAqB,IAAqB,MAAM;IACvEC,oBAAoB,EAAE,IAAI;IAC1BC,SAAS,EAAE,IAAI;IACfC,gBAAgB,EAAE;MAChBC,EAAE,EAAE;QACF1C;MACF;IACF,CAAC;IACDkC;EACF,CAAC,CAAC;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["__dirname","path","dirname","fileURLToPath","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","i","scheduleShutdown","polly","console","log","stop","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req"],"sources":["utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\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 JSON.parse(\n JSON.stringify({\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}\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\n// performs a specific (mathematical) operation every \"ms\" (milliseconds)\nasync function countdown(i, ms) {\n await delay(ms);\n return --i;\n}\n\nasync function scheduleShutdown(polly: Polly, i = 30) {\n ++i;\n while ((i = await countdown(i, 1000)))\n console.log(`Polly stopping in ${i}s...`);\n await polly.stop();\n console.log(`Polly stopped.`);\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\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: '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('oauth2')\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName('am');\n polly.server.any('/openidm/*').recordingName('openidm');\n polly.server.any('/environment/*').recordingName('environment');\n polly.server.any('/monitoring/*').recordingName('monitoring');\n polly.server.any('/feature').recordingName('feature');\n polly.server.any('/dashboard/*').recordingName('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\n if (mode === MODES.RECORD) scheduleShutdown(polly, 60);\n\n return polly;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAAgD;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["__dirname","path","dirname","fileURLToPath","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","ms","Promise","resolve","setTimeout","countdown","i","scheduleShutdown","polly","console","log","stop","setupPollyForFrodoLib","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req"],"sources":["utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { LogLevelDesc } from 'loglevel';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\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 JSON.parse(\n JSON.stringify({\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}\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\n// performs a specific (mathematical) operation every \"ms\" (milliseconds)\nasync function countdown(i, ms) {\n await delay(ms);\n return --i;\n}\n\nasync function scheduleShutdown(polly: Polly, i = 30) {\n ++i;\n while ((i = await countdown(i, 1000)))\n console.log(`Polly stopping in ${i}s...`);\n await polly.stop();\n console.log(`Polly stopped.`);\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\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('oauth2')\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName('am');\n polly.server.any('/openidm/*').recordingName('openidm');\n polly.server.any('/environment/*').recordingName('environment');\n polly.server.any('/monitoring/*').recordingName('monitoring');\n polly.server.any('/feature').recordingName('feature');\n polly.server.any('/dashboard/*').recordingName('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\n if (mode === MODES.RECORD) scheduleShutdown(polly, 60);\n\n return polly;\n}\n"],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ export function autoSetupPolly(matchRequestsBy = defaultMatchRequestsBy()) {
|
|
|
69
69
|
mode,
|
|
70
70
|
recordIfMissing,
|
|
71
71
|
flushRequestsOnStop: true,
|
|
72
|
-
logLevel: 'warn',
|
|
72
|
+
logLevel: process.env.FRODO_POLLY_LOG_LEVEL || 'warn',
|
|
73
73
|
recordFailedRequests: true,
|
|
74
74
|
persister: 'fs',
|
|
75
75
|
persisterOptions: {
|
|
@@ -70,7 +70,7 @@ export function setupPollyForFrodoLib(matchRequestsBy = defaultMatchRequestsBy()
|
|
|
70
70
|
mode,
|
|
71
71
|
recordIfMissing,
|
|
72
72
|
flushRequestsOnStop: true,
|
|
73
|
-
logLevel: 'warn',
|
|
73
|
+
logLevel: process.env.FRODO_POLLY_LOG_LEVEL || 'warn',
|
|
74
74
|
recordFailedRequests: true,
|
|
75
75
|
persister: 'fs',
|
|
76
76
|
persisterOptions: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rockcarver/frodo-lib",
|
|
3
|
-
"version": "0.17.8-
|
|
3
|
+
"version": "0.17.8-2",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.mjs",
|
|
@@ -157,6 +157,7 @@
|
|
|
157
157
|
"gulp-typescript": "^6.0.0-alpha.1",
|
|
158
158
|
"jest": "^29.3.1",
|
|
159
159
|
"jest-jasmine2": "^29.3.1",
|
|
160
|
+
"loglevel": "^1.8.1",
|
|
160
161
|
"map-stream": "^0.0.7",
|
|
161
162
|
"mock-fs": "^5.2.0",
|
|
162
163
|
"prettier": "^2.7.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/AutoSetupPolly.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/utils/AutoSetupPolly.ts"],"names":[],"mappings":"AA0DA,wBAAgB,sBAAsB,QAmBrC;AAED,wBAAgB,cAAc,CAAC,eAAe,MAA2B,OAgBxE","file":"AutoSetupPolly.d.ts","sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport pollyJest from 'setup-polly-jest';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { getTokens } from '../ops/AuthenticateOps';\nimport { state } from '../index';\nimport { LogLevelDesc } from 'loglevel';\n\nconst { setupPolly } = pollyJest;\nPolly.register(NodeHttpAdapter);\nPolly.register(FSPersister);\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/src/test/mock-recordings'\n);\n\nswitch (process.env.FRODO_POLLY_MODE) {\n // record mock responses from a real env: `npm run test:record`\n case 'record': {\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n if (!(await getTokens()))\n throw new Error(\n `Unable to record mock responses from '${state.getHost()}'`\n );\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n }\n // record mock responses from authentication APIs (don't authenticate): `npm run test:record_noauth`\n case 'record_noauth':\n mode = MODES.RECORD;\n recordIfMissing = true;\n break;\n // replay mock responses: `npm test`\n default:\n state.setHost(\n process.env.FRODO_HOST || 'https://openam-frodo-dev.forgeblocks.com/am'\n );\n state.setRealm(process.env.FRODO_REALM || 'alpha');\n state.setCookieName('cookieName');\n state.setCookieValue('cookieValue');\n break;\n}\n\nexport function defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\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: true,\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}\n\nexport function autoSetupPolly(matchRequestsBy = defaultMatchRequestsBy()) {\n return setupPolly({\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/SetupPollyForFrodoLib.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/utils/SetupPollyForFrodoLib.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAgFtC,wBAAgB,qBAAqB,CACnC,eAAe,MAA2B,GACzC,KAAK,CA8CP","file":"SetupPollyForFrodoLib.d.ts","sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { Polly } from '@pollyjs/core';\nimport { MODES } from '@pollyjs/utils';\nimport NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { LogLevelDesc } from 'loglevel';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-service-accounts.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\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 JSON.parse(\n JSON.stringify({\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}\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\n// performs a specific (mathematical) operation every \"ms\" (milliseconds)\nasync function countdown(i, ms) {\n await delay(ms);\n return --i;\n}\n\nasync function scheduleShutdown(polly: Polly, i = 30) {\n ++i;\n while ((i = await countdown(i, 1000)))\n console.log(`Polly stopping in ${i}s...`);\n await polly.stop();\n console.log(`Polly stopped.`);\n}\n\nexport function setupPollyForFrodoLib(\n matchRequestsBy = defaultMatchRequestsBy()\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('oauth2')\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server.any('/am/json/*').recordingName('am');\n polly.server.any('/openidm/*').recordingName('openidm');\n polly.server.any('/environment/*').recordingName('environment');\n polly.server.any('/monitoring/*').recordingName('monitoring');\n polly.server.any('/feature').recordingName('feature');\n polly.server.any('/dashboard/*').recordingName('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\n if (mode === MODES.RECORD) scheduleShutdown(polly, 60);\n\n return polly;\n}\n"]}
|