From 2cca624e46e3e7c962b7257924e026c7266483c5 Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 8 Jul 2026 09:58:12 -0600 Subject: [PATCH 01/10] feat: add config-manager-pull telemetry command --- .../config-manager-pull-telemetry.ts | 60 ++++ .../config-manager-pull.ts | 2 + src/configManagerOps/FrConfigTelemetry.ts | 71 ++++ ...nfig-manager-export-telemetry.test.js.snap | 29 ++ .../config-manager-export-telemetry.test.js | 10 + ...-manager-export-telemetry.e2e.test.js.snap | 61 ++++ ...onfig-manager-export-telemetry.e2e.test.js | 82 +++++ .../cloud/telemetry/otlp/datadog.json | 13 + .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ 20 files changed, 3328 insertions(+) create mode 100644 src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts create mode 100644 src/configManagerOps/FrConfigTelemetry.ts create mode 100644 test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap create mode 100644 test/client_cli/en/config-manager-export-telemetry.test.js create mode 100644 test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap create mode 100644 test/e2e/config-manager-export-telemetry.e2e.test.js create mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts new file mode 100644 index 000000000..5af760fc6 --- /dev/null +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts @@ -0,0 +1,60 @@ +import { frodo } from '@rockcarver/frodo-lib'; + +import { configManagerExportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; +import { getTokens } from '../../../ops/AuthenticateOps'; +import { printMessage, verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = + frodo.utils.constants; + +const deploymentTypes = [ + CLOUD_DEPLOYMENT_TYPE_KEY, + FORGEOPS_DEPLOYMENT_TYPE_KEY, +]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo config-manager pull telemetry', + [], + deploymentTypes + ); + program + .description('Export telemetry exporters.') + .option( + '-c, --category ', + 'Telemetry category to export (otlp or splunk).' + ) + .option( + '-N, --name ', + 'Name of a single exporter to export. Requires --category.' + ) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + if (await getTokens(false, true, deploymentTypes)) { + verboseMessage('Exporting telemetry'); + const outcome = await configManagerExportTelemetry( + options.category, + options.name + ); + if (!outcome) process.exitCode = 1; + } + // unrecognized combination of options or no options + else { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + } + }); + return program; +} diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull.ts index cc5701a31..1870dacc6 100644 --- a/src/cli/config-manager/config-manager-pull/config-manager-pull.ts +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull.ts @@ -32,6 +32,7 @@ import SecretMappings from './config-manager-pull-secret-mappings'; import Secrets from './config-manager-pull-secrets'; import ServiceObjects from './config-manager-pull-service-objects'; import Services from './config-manager-pull-services'; +import Telemetry from './config-manager-pull-telemetry'; import Terms from './config-manager-pull-terms-and-conditions'; import Test from './config-manager-pull-test'; import Themes from './config-manager-pull-themes'; @@ -76,6 +77,7 @@ export default function setup() { program.addCommand(ServiceObjects().name('service-objects')); program.addCommand(Services().name('services')); program.addCommand(Themes().name('themes')); + program.addCommand(Telemetry().name('telemetry')); program.addCommand(Terms().name('terms-and-conditions')); program.addCommand(Test().name('test')); program.addCommand(UiConfig().name('ui-config')); diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts new file mode 100644 index 000000000..bfdf2e263 --- /dev/null +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -0,0 +1,71 @@ +import { frodo } from '@rockcarver/frodo-lib'; + +import { + createProgressIndicator, + printError, + stopProgressIndicator, + updateProgressIndicator, +} from '../utils/Console'; + +const { saveJsonToFile, getFilePath } = frodo.utils; +const { exportTelemetry } = frodo.cloud.telemetry; + +export async function configManagerExportTelemetry( + category?: 'otlp' | 'splunk', + name?: string +): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + 0, + 'reading telemetry exporters' + ); + try { + const exporters = await exportTelemetry(name, category); + stopProgressIndicator( + spinnerId, + `Successfully read ${exporters.length} telemetry exporters` + ); + + if (exporters.length === 0) { + return true; + } + + const indicatorId = createProgressIndicator( + 'determinate', + 0, + 'Exporting telemetry ' + ); + + for (const { category: cat, provider } of exporters) { + const exportProvider = { ...provider }; + if ('headers' in exportProvider && exportProvider.headers) { + const placeholders: Record = {}; + for (const headerName of Object.keys(exportProvider.headers)) { + placeholders[headerName] = + `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` + .replaceAll('-', '_') + .toUpperCase(); + } + exportProvider.headers = placeholders; + } + saveJsonToFile( + exportProvider, + getFilePath(`telemetry/${cat}/${provider.id}.json`, true), + false + ); + updateProgressIndicator( + indicatorId, + `Exported ${cat} exporter ${provider.id}` + ); + } + stopProgressIndicator( + indicatorId, + `${exporters.length} telemetry exporter(s) exported.` + ); + return true; + } catch (e) { + stopProgressIndicator(spinnerId, 'Error exporting telemetry', 'fail'); + printError(e); + } + return false; +} diff --git a/test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap new file mode 100644 index 000000000..2e86be8a1 --- /dev/null +++ b/test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'config export' should be expected english 1`] = ` +"Usage: frodo config-manager pull telemetry [options] [host] [realm] [username] [password] + +[Experimental] Export telemetry exporters. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. + To use a connection profile, just specify a unique + substring or alias. + realm Realm. Specify realm as '/' for the root realm or + 'realm' or '/parent/child' otherwise. (default: + "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with + appropriate rights to manage authentication + journeys/trees. + password Password. + +Options: + -c, --category Telemetry category to export (otlp or splunk). + -N, --name Name of a single exporter to export. Requires + --category. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and + usage examples. +" +`; diff --git a/test/client_cli/en/config-manager-export-telemetry.test.js b/test/client_cli/en/config-manager-export-telemetry.test.js new file mode 100644 index 000000000..d2be4873f --- /dev/null +++ b/test/client_cli/en/config-manager-export-telemetry.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo config-manager pull telemetry --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'config export' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap new file mode 100644 index 000000000..ad1c73cf9 --- /dev/null +++ b/test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap @@ -0,0 +1,61 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter 1`] = `0`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter 2`] = `""`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter: telemetryTestDir3/telemetry/otlp/datadog.json 1`] = ` +{ + "encoding": "PROTO", + "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "headers": { + "dd-api-key": "\${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}", + }, + "id": "datadog", + "sources": [ + "am-activity", + "idm-activity", + ], + "type": "HTTP", +} +`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters 1`] = `0`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters 2`] = `""`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters: telemetryTestDir2/telemetry/otlp/datadog.json 1`] = ` +{ + "encoding": "PROTO", + "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "headers": { + "dd-api-key": "\${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}", + }, + "id": "datadog", + "sources": [ + "am-activity", + "idm-activity", + ], + "type": "HTTP", +} +`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 1`] = `0`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 2`] = `""`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style": telemetryTestDir/telemetry/otlp/datadog.json 1`] = ` +{ + "encoding": "PROTO", + "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "headers": { + "dd-api-key": "\${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}", + }, + "id": "datadog", + "sources": [ + "am-activity", + "idm-activity", + ], + "type": "HTTP", +} +`; diff --git a/test/e2e/config-manager-export-telemetry.e2e.test.js b/test/e2e/config-manager-export-telemetry.e2e.test.js new file mode 100644 index 000000000..9c8a01309 --- /dev/null +++ b/test/e2e/config-manager-export-telemetry.e2e.test.js @@ -0,0 +1,82 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -D telemetryTestDir +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -D telemetryTestDir2 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -N datadog -D telemetryTestDir3 +*/ + + +import { getEnv, testExport } from './utils/TestUtils'; +import { connection as c } from './utils/TestConfig'; + +process.env['FRODO_MOCK'] = '1'; +process.env['FRODO_CONNECTION_PROFILES_PATH'] = + './test/e2e/env/Connections.json'; +const env = getEnv(c); + +describe('frodo config-manager pull telemetry', () => { + test('"frodo config-manager pull telemetry": should export the secrets in fr-config-manager style"', async () => { + const dirName = 'telemetryTestDir'; + const CMD = `frodo config-manager pull telemetry -D ${dirName}`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); + + test('"frodo config-manager pull telemetry -c otlp": should export only otlp exporters', async () => { + const dirName = 'telemetryTestDir2'; + const CMD = `frodo config-manager pull telemetry -c otlp -D ${dirName}`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); + + test('"frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter', async () => { + const dirName = 'telemetryTestDir3'; + const CMD = `frodo config-manager pull telemetry -c otlp -N datadog -D ${dirName}`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); +}); \ No newline at end of file diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json new file mode 100644 index 000000000..ebd061f2c --- /dev/null +++ b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json @@ -0,0 +1,13 @@ +{ + "encoding": "PROTO", + "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "headers": { + "dd-api-key": "${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}" + }, + "id": "datadog", + "sources": [ + "am-activity", + "idm-activity" + ], + "type": "HTTP" +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har new file mode 100644 index 000000000..c7521bc6b --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 392, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"645264395\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 804, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:22.876Z", + "time": 906, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 906 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1963, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 274, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 274, + "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1986495916\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "274" + }, + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 806, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:25.910Z", + "time": 1445, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1445 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har new file mode 100644 index 000000000..77b941b19 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1914, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + }, + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ff242fc6-df25-4315-96b9-3b708d1250e6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:27.361Z", + "time": 202, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 202 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1900, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 194, + "content": { + "mimeType": "application/json", + "size": 194, + "text": "{\"otlp\":[{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:29 GMT" + }, + { + "name": "content-length", + "value": "194" + }, + { + "name": "x-forgerock-transactionid", + "value": "02676c3d-83a5-4a07-a8b9-328a40786719" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 360, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:27.702Z", + "time": 1479, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1479 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har new file mode 100644 index 000000000..e23941492 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1351, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1351" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 447, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":898}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self'" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:23.796Z", + "time": 2107, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2107 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har new file mode 100644 index 000000000..d047776b2 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:26 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 682, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:25.948Z", + "time": 390, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 390 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 07 Jul 2026 21:41:27 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-287e4380-d1ec-4703-9ca3-bec73bdaf366" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 682, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-07T21:41:27.569Z", + "time": 127, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 127 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har new file mode 100644 index 000000000..7712ab22b --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 392, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"645264395\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 804, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:54.826Z", + "time": 450, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 450 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1963, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 274, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 274, + "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1986495916\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "274" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 806, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:55.677Z", + "time": 393, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 393 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har new file mode 100644 index 000000000..18c86957e --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1914, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8766583d-2594-4406-98b3-fa66cc74d2e7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:56.076Z", + "time": 143, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 143 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1900, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 194, + "content": { + "mimeType": "application/json", + "size": 194, + "text": "{\"otlp\":[{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:56 GMT" + }, + { + "name": "content-length", + "value": "194" + }, + { + "name": "x-forgerock-transactionid", + "value": "c1436c2f-cb75-4d03-bb4f-724c5096634c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:56.333Z", + "time": 593, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 593 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har new file mode 100644 index 000000000..6e97c7de5 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1351, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1351" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 447, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self'" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:55.289Z", + "time": 382, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 382 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har new file mode 100644 index 000000000..00ba7a713 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:55 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:55.713Z", + "time": 288, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 288 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:29:56 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 682, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:29:56.228Z", + "time": 96, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 96 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har new file mode 100644 index 000000000..80c441509 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_N_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 392, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"645264395\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 779, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.040Z", + "time": 163, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 163 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1963, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 274, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 274, + "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1986495916\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "274" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 781, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.435Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har new file mode 100644 index 000000000..c03d1aea4 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_N_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1914, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7be9659d-2ef4-4adf-837b-fc8d86dc4918" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.602Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1900, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 194, + "content": { + "mimeType": "application/json", + "size": 194, + "text": "{\"otlp\":[{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:48 GMT" + }, + { + "name": "content-length", + "value": "194" + }, + { + "name": "x-forgerock-transactionid", + "value": "d373fc58-7f9f-40d2-a0f7-dd31c9a76f93" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.839Z", + "time": 471, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 471 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har new file mode 100644 index 000000000..8636a416a --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_N_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1351, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1351" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 447, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self'" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.215Z", + "time": 214, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 214 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har new file mode 100644 index 000000000..8f63ae56d --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_N_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 682, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.474Z", + "time": 218, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 218 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 15:55:47 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T15:55:47.726Z", + "time": 106, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 106 + } + } + ], + "pages": [], + "version": "1.2" + } +} From e5ff5525c4e0aabe66c93530549009aa5ec80b9e Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Tue, 11 Aug 2026 11:54:10 -0600 Subject: [PATCH 02/10] wip --- .../config-manager-pull-telemetry.ts | 46 +-- src/configManagerOps/FrConfigTelemetry.ts | 77 ++--- ...onfig-manager-pull-telemetry.test.js.snap} | 9 +- ... => config-manager-pull-telemetry.test.js} | 2 +- ...g-manager-pull-telemetry.e2e.test.js.snap} | 36 +- ...config-manager-pull-telemetry.e2e.test.js} | 13 +- .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ 14 files changed, 2089 insertions(+), 94 deletions(-) rename test/client_cli/en/__snapshots__/{config-manager-export-telemetry.test.js.snap => config-manager-pull-telemetry.test.js.snap} (79%) rename test/client_cli/en/{config-manager-export-telemetry.test.js => config-manager-pull-telemetry.test.js} (69%) rename test/e2e/__snapshots__/{config-manager-export-telemetry.e2e.test.js.snap => config-manager-pull-telemetry.e2e.test.js.snap} (57%) rename test/e2e/{config-manager-export-telemetry.e2e.test.js => config-manager-pull-telemetry.e2e.test.js} (83%) create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/openidm_3290118515/recording.har diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts index 5af760fc6..d2a1de5a7 100644 --- a/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts @@ -2,16 +2,12 @@ import { frodo } from '@rockcarver/frodo-lib'; import { configManagerExportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; import { getTokens } from '../../../ops/AuthenticateOps'; -import { printMessage, verboseMessage } from '../../../utils/Console'; +import { verboseMessage } from '../../../utils/Console'; import { FrodoCommand } from '../../FrodoCommand'; -const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = - frodo.utils.constants; +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; -const deploymentTypes = [ - CLOUD_DEPLOYMENT_TYPE_KEY, - FORGEOPS_DEPLOYMENT_TYPE_KEY, -]; +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; export default function setup() { const program = new FrodoCommand( @@ -23,12 +19,9 @@ export default function setup() { .description('Export telemetry exporters.') .option( '-c, --category ', - 'Telemetry category to export (otlp or splunk).' - ) - .option( - '-N, --name ', - 'Name of a single exporter to export. Requires --category.' + 'Telemetry category to export (e.g. otlp, splunk).' ) + .option('-n, --name ', 'Name of a single exporter to export.') .action(async (host, realm, user, password, options, command) => { command.handleDefaultArgsAndOpts( host, @@ -38,23 +31,18 @@ export default function setup() { options, command ); - if (await getTokens(false, true, deploymentTypes)) { - verboseMessage('Exporting telemetry'); - const outcome = await configManagerExportTelemetry( - options.category, - options.name - ); - if (!outcome) process.exitCode = 1; - } - // unrecognized combination of options or no options - else { - printMessage( - 'Unrecognized combination of options or no options...', - 'error' - ); - program.help(); - process.exitCode = 1; - } + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) process.exit(1); + verboseMessage('Exporting telemetry configuration.'); + const outcome = await configManagerExportTelemetry( + options.category, + options.name + ); + if (!outcome) process.exitCode = 1; }); return program; } diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts index bfdf2e263..7b4fc4234 100644 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -1,70 +1,47 @@ import { frodo } from '@rockcarver/frodo-lib'; +import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; -import { - createProgressIndicator, - printError, - stopProgressIndicator, - updateProgressIndicator, -} from '../utils/Console'; +import { printError } from '../utils/Console'; const { saveJsonToFile, getFilePath } = frodo.utils; const { exportTelemetry } = frodo.cloud.telemetry; +/** + * Exports telemetry configuration in config manager format + * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. + * @param {string} name optional parameter to export telemetry config by name. + * @returns + */ export async function configManagerExportTelemetry( - category?: 'otlp' | 'splunk', + category?: TelemetryExporterCategory, name?: string ): Promise { - const spinnerId = createProgressIndicator( - 'indeterminate', - 0, - 'reading telemetry exporters' - ); try { const exporters = await exportTelemetry(name, category); - stopProgressIndicator( - spinnerId, - `Successfully read ${exporters.length} telemetry exporters` - ); - if (exporters.length === 0) { - return true; - } - - const indicatorId = createProgressIndicator( - 'determinate', - 0, - 'Exporting telemetry ' - ); - - for (const { category: cat, provider } of exporters) { - const exportProvider = { ...provider }; - if ('headers' in exportProvider && exportProvider.headers) { - const placeholders: Record = {}; - for (const headerName of Object.keys(exportProvider.headers)) { - placeholders[headerName] = - `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` - .replaceAll('-', '_') - .toUpperCase(); + for (const [cat, providers] of Object.entries(exporters.telemetry)) { + for (const provider of providers) { + const exportProvider = { ...provider }; + if ('headers' in exportProvider && exportProvider.headers) { + const placeholders: Record = {}; + for (const headerName of Object.keys(exportProvider.headers)) { + placeholders[headerName] = + `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` + .replaceAll('-', '_') + .toUpperCase(); + } + exportProvider.headers = placeholders; } - exportProvider.headers = placeholders; + saveJsonToFile( + exportProvider, + getFilePath(`telemetry/${cat}/${provider.id}.json`, true), + false + ); } - saveJsonToFile( - exportProvider, - getFilePath(`telemetry/${cat}/${provider.id}.json`, true), - false - ); - updateProgressIndicator( - indicatorId, - `Exported ${cat} exporter ${provider.id}` - ); } - stopProgressIndicator( - indicatorId, - `${exporters.length} telemetry exporter(s) exported.` - ); + return true; } catch (e) { - stopProgressIndicator(spinnerId, 'Error exporting telemetry', 'fail'); printError(e); } return false; diff --git a/test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap similarity index 79% rename from test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap rename to test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap index 2e86be8a1..8fc12101c 100644 --- a/test/client_cli/en/__snapshots__/config-manager-export-telemetry.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CLI help interface for 'config export' should be expected english 1`] = ` +exports[`CLI help interface for 'config-manager pull telemetry' should be expected english 1`] = ` "Usage: frodo config-manager pull telemetry [options] [host] [realm] [username] [password] [Experimental] Export telemetry exporters. @@ -17,10 +17,11 @@ Arguments: journeys/trees. password Password. +Deployment: Cloud-only + Options: - -c, --category Telemetry category to export (otlp or splunk). - -N, --name Name of a single exporter to export. Requires - --category. + -c, --category Telemetry category to export (e.g. otlp, splunk). + -n, --name Name of a single exporter to export. -h, --help Help -hh, --help-more Help with all options. -hhh, --help-all Help with all options, environment variables, and diff --git a/test/client_cli/en/config-manager-export-telemetry.test.js b/test/client_cli/en/config-manager-pull-telemetry.test.js similarity index 69% rename from test/client_cli/en/config-manager-export-telemetry.test.js rename to test/client_cli/en/config-manager-pull-telemetry.test.js index d2be4873f..8ce1d22e0 100644 --- a/test/client_cli/en/config-manager-export-telemetry.test.js +++ b/test/client_cli/en/config-manager-pull-telemetry.test.js @@ -5,6 +5,6 @@ const exec = promisify(cp.exec); const CMD = 'frodo config-manager pull telemetry --help'; const { stdout } = await exec(CMD); -test("CLI help interface for 'config export' should be expected english", async () => { +test("CLI help interface for 'config-manager pull telemetry' should be expected english", async () => { expect(stdout).toMatchSnapshot(); }); diff --git a/test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap similarity index 57% rename from test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap rename to test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap index ad1c73cf9..b6f754a63 100644 --- a/test/e2e/__snapshots__/config-manager-export-telemetry.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap @@ -1,17 +1,18 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter 1`] = `0`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter 1`] = `0`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter 2`] = `""`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter 2`] = `""`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter: telemetryTestDir3/telemetry/otlp/datadog.json 1`] = ` +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter: telemetryTestDir3/telemetry/otlp/test-otlp.json 1`] = ` { - "encoding": "PROTO", - "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "encoding": "JSON", + "endpoint": "https://example-siem.com:4317", "headers": { - "dd-api-key": "\${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}", + "api-key": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY}", + "api-secret": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET}", }, - "id": "datadog", + "id": "test-otlp", "sources": [ "am-activity", "idm-activity", @@ -40,6 +41,27 @@ exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetr } `; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -n test-otlp": should export a single named exporter 1`] = `0`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -n test-otlp": should export a single named exporter 2`] = `""`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -n test-otlp": should export a single named exporter: telemetryTestDir4/telemetry/otlp/test-otlp.json 1`] = ` +{ + "encoding": "JSON", + "endpoint": "https://example-siem.com:4317", + "headers": { + "api-key": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY}", + "api-secret": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET}", + }, + "id": "test-otlp", + "sources": [ + "am-activity", + "idm-activity", + ], + "type": "HTTP", +} +`; + exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 1`] = `0`; exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 2`] = `""`; diff --git a/test/e2e/config-manager-export-telemetry.e2e.test.js b/test/e2e/config-manager-pull-telemetry.e2e.test.js similarity index 83% rename from test/e2e/config-manager-export-telemetry.e2e.test.js rename to test/e2e/config-manager-pull-telemetry.e2e.test.js index 9c8a01309..f4b96d01f 100644 --- a/test/e2e/config-manager-export-telemetry.e2e.test.js +++ b/test/e2e/config-manager-pull-telemetry.e2e.test.js @@ -49,7 +49,8 @@ /* FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -D telemetryTestDir FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -D telemetryTestDir2 -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -N datadog -D telemetryTestDir3 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -n test-otlp -D telemetryTestDir3 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -n test-otlp -D telemetryTestDir4 */ @@ -74,9 +75,15 @@ describe('frodo config-manager pull telemetry', () => { await testExport(CMD, env, undefined, undefined, dirName, false); }); - test('"frodo config-manager pull telemetry -c otlp -N datadog": should export a single named exporter', async () => { + test('"frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter', async () => { const dirName = 'telemetryTestDir3'; - const CMD = `frodo config-manager pull telemetry -c otlp -N datadog -D ${dirName}`; + const CMD = `frodo config-manager pull telemetry -c otlp -n test-otlp -D ${dirName}`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); + + test('"frodo config-manager pull telemetry -n test-otlp": should export a single named exporter', async () => { + const dirName = 'telemetryTestDir4'; + const CMD = `frodo config-manager pull telemetry -n test-otlp -D ${dirName}`; await testExport(CMD, env, undefined, undefined, dirName, false); }); }); \ No newline at end of file diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har new file mode 100644 index 000000000..b23efa19e --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_n_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.322Z", + "time": 328, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 328 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 273, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 273, + "text": "{\"_id\":\"version\",\"_rev\":\"-939981978\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 04fac13185fe9bb583071a0a30d56b075f26c802 (2026-July-30 12:26)\",\"revision\":\"04fac13185fe9bb583071a0a30d56b075f26c802\",\"date\":\"2026-July-30 12:26\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "273" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.816Z", + "time": 83, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 83 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har new file mode 100644 index 000000000..a8de4382e --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_n_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.906Z", + "time": 73, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 73 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1893, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 199, + "content": { + "mimeType": "application/json", + "size": 199, + "text": "{\"otlp\":[{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"\",\"api-secret\":\"\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "" + }, + { + "name": "content-length", + "value": "199" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:27.099Z", + "time": 280, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 280 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har new file mode 100644 index 000000000..061145b5c --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_n_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 951, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.664Z", + "time": 145, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 145 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har new file mode 100644 index 000000000..dde51de9d --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_c_n_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.855Z", + "time": 171, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 171 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:58:26.986Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/am_1076162899/recording.har new file mode 100644 index 000000000..1f420b0f1 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_n_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:05.829Z", + "time": 137, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 137 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 273, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 273, + "text": "{\"_id\":\"version\",\"_rev\":\"-939981978\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 04fac13185fe9bb583071a0a30d56b075f26c802 (2026-July-30 12:26)\",\"revision\":\"04fac13185fe9bb583071a0a30d56b075f26c802\",\"date\":\"2026-July-30 12:26\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "273" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:06.109Z", + "time": 79, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 79 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/environment_1072573434/recording.har new file mode 100644 index 000000000..475973aac --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_n_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:06.196Z", + "time": 74, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 74 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1893, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 199, + "content": { + "mimeType": "application/json", + "size": 199, + "text": "{\"otlp\":[{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"\",\"api-secret\":\"\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "" + }, + { + "name": "content-length", + "value": "199" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:06.356Z", + "time": 272, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 272 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/oauth2_393036114/recording.har new file mode 100644 index 000000000..a40278e43 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_n_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 951, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:05.981Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/openidm_3290118515/recording.har new file mode 100644 index 000000000..8d8c45035 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_n_D_3738999489/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_n_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:06.156Z", + "time": 180, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 180 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-11T16:59:06.277Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + } + ], + "pages": [], + "version": "1.2" + } +} From acbb1d81870ab0caf0930b7481676c7e43b176c8 Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 19 Aug 2026 11:39:07 -0600 Subject: [PATCH 03/10] fixup! update config-manager pull telemetry --- .../config-manager-push-telemetry.ts | 73 ++++ src/configManagerOps/FrConfigTelemetry.ts | 11 +- src/configManagerOps/FrConfigTelemetryOps.ts | 47 +++ .../cloud/telemetry/otlp/datadog.json | 13 - .../am_1076162899/recording.har | 312 ------------------ .../environment_1072573434/recording.har | 232 ------------- .../oauth2_393036114/recording.har | 146 -------- .../openidm_3290118515/recording.har | 310 ----------------- 8 files changed, 125 insertions(+), 1019 deletions(-) create mode 100644 src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts create mode 100644 src/configManagerOps/FrConfigTelemetryOps.ts delete mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json delete mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har delete mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har delete mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har delete mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts new file mode 100644 index 000000000..548328dfc --- /dev/null +++ b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts @@ -0,0 +1,73 @@ +// import { frodo } from '@rockcarver/frodo-lib'; + +// import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetryOps'; +// import { getTokens } from '../../../ops/AuthenticateOps'; +// import { printMessage, verboseMessage } from '../../../utils/Console'; +// import { FrodoCommand } from '../../FrodoCommand'; + +// const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = +// frodo.utils.constants; + +// const deploymentTypes = [ +// CLOUD_DEPLOYMENT_TYPE_KEY, +// FORGEOPS_DEPLOYMENT_TYPE_KEY, +// ]; + +// export default function setup() { +// const program = new FrodoCommand( +// 'frodo config-manager push telemetry', +// [], +// deploymentTypes +// ); +// program +// .description('Import telemetry exporters.') +// .option( +// '-c, --category ', +// 'Telemetry category to import (otlp or splunk).' +// ) +// .option( +// '-N, --name ', +// 'Name of a single exporter to import. Requires --category.' +// ) +// .option( +// '-e, --env ', +// 'Value to resolve placeholders with for a single named exporter. Requires --name.' +// ) +// .action(async (host, realm, user, password, options, command) => { +// command.handleDefaultArgsAndOpts( +// host, +// realm, +// user, +// password, +// options, +// command +// ); +// if (options.env && !options.name) { +// printMessage( +// 'The -e option requires -N to target a single exporter.', +// 'error' +// ); +// process.exitCode = 1; +// return; +// } +// if (await getTokens(false, true, deploymentTypes)) { +// verboseMessage('Importing telemetry'); +// const outcome = await configManagerImportTelemetry( +// options.category, +// options.name, +// options.env +// ); +// if (!outcome) process.exitCode = 1; +// } +// // unrecognized combination of options or no options +// else { +// printMessage( +// 'Unrecognized combination of options or no options...', +// 'error' +// ); +// program.help(); +// process.exitCode = 1; +// } +// }); +// return program; +// } diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts index 7b4fc4234..d08eacee9 100644 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -10,7 +10,7 @@ const { exportTelemetry } = frodo.cloud.telemetry; * Exports telemetry configuration in config manager format * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. * @param {string} name optional parameter to export telemetry config by name. - * @returns + * @returns { Promise } returns true if telemetry was successfully exported */ export async function configManagerExportTelemetry( category?: TelemetryExporterCategory, @@ -21,15 +21,15 @@ export async function configManagerExportTelemetry( for (const [cat, providers] of Object.entries(exporters.telemetry)) { for (const provider of providers) { - const exportProvider = { ...provider }; - if ('headers' in exportProvider && exportProvider.headers) { + const exportProvider = provider as any; + if (exportProvider.headers) { const placeholders: Record = {}; - for (const headerName of Object.keys(exportProvider.headers)) { + Object.keys(exportProvider.headers).forEach((headerName) => { placeholders[headerName] = `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` .replaceAll('-', '_') .toUpperCase(); - } + }); exportProvider.headers = placeholders; } saveJsonToFile( @@ -39,7 +39,6 @@ export async function configManagerExportTelemetry( ); } } - return true; } catch (e) { printError(e); diff --git a/src/configManagerOps/FrConfigTelemetryOps.ts b/src/configManagerOps/FrConfigTelemetryOps.ts new file mode 100644 index 000000000..d08eacee9 --- /dev/null +++ b/src/configManagerOps/FrConfigTelemetryOps.ts @@ -0,0 +1,47 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; + +import { printError } from '../utils/Console'; + +const { saveJsonToFile, getFilePath } = frodo.utils; +const { exportTelemetry } = frodo.cloud.telemetry; + +/** + * Exports telemetry configuration in config manager format + * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. + * @param {string} name optional parameter to export telemetry config by name. + * @returns { Promise } returns true if telemetry was successfully exported + */ +export async function configManagerExportTelemetry( + category?: TelemetryExporterCategory, + name?: string +): Promise { + try { + const exporters = await exportTelemetry(name, category); + + for (const [cat, providers] of Object.entries(exporters.telemetry)) { + for (const provider of providers) { + const exportProvider = provider as any; + if (exportProvider.headers) { + const placeholders: Record = {}; + Object.keys(exportProvider.headers).forEach((headerName) => { + placeholders[headerName] = + `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` + .replaceAll('-', '_') + .toUpperCase(); + }); + exportProvider.headers = placeholders; + } + saveJsonToFile( + exportProvider, + getFilePath(`telemetry/${cat}/${provider.id}.json`, true), + false + ); + } + } + return true; + } catch (e) { + printError(e); + } + return false; +} diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json deleted file mode 100644 index ebd061f2c..000000000 --- a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "encoding": "PROTO", - "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", - "headers": { - "dd-api-key": "${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}" - }, - "id": "datadog", - "sources": [ - "am-activity", - "idm-activity" - ], - "type": "HTTP" -} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har deleted file mode 100644 index 80c441509..000000000 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/am_1076162899/recording.har +++ /dev/null @@ -1,312 +0,0 @@ -{ - "log": { - "_recordingName": "config-manager/pull/telemetry/0_c_N_D/am", - "creator": { - "comment": "persister:fs", - "name": "Polly.JS", - "version": "6.0.6" - }, - "entries": [ - { - "_id": "ccd7a5defd0fdeaa986a2b54642d911a", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "accept-api-version", - "value": "resource=1.1" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 392, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" - }, - "response": { - "bodySize": 614, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 614, - "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" - }, - "cookies": [], - "headers": [ - { - "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "content-security-policy-report-only", - "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "no-store" - }, - { - "name": "content-api-version", - "value": "resource=1.1" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "etag", - "value": "\"645264395\"" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "x-frame-options", - "value": "DENY" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "614" - }, - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 779, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.040Z", - "time": 163, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 163 - } - }, - { - "_id": "6125d0328ad0dcaee55f73fd8b22ca14", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "accept-api-version", - "value": "resource=1.0" - }, - { - "name": "authorization", - "value": "Bearer " - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 1963, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" - }, - "response": { - "bodySize": 274, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 274, - "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "DENY" - }, - { - "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "content-security-policy-report-only", - "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "no-store" - }, - { - "name": "content-api-version", - "value": "resource=1.0" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "etag", - "value": "\"-1986495916\"" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "274" - }, - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 781, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.435Z", - "time": 161, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 161 - } - } - ], - "pages": [], - "version": "1.2" - } -} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har deleted file mode 100644 index c03d1aea4..000000000 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/environment_1072573434/recording.har +++ /dev/null @@ -1,232 +0,0 @@ -{ - "log": { - "_recordingName": "config-manager/pull/telemetry/0_c_N_D/environment", - "creator": { - "comment": "persister:fs", - "name": "Polly.JS", - "version": "6.0.6" - }, - "entries": [ - { - "_id": "ccc7ec61c2094114d7917814bb19b83b", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "accept-api-version", - "value": "protocol=1.0,resource=1.0" - }, - { - "name": "authorization", - "value": "Bearer " - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 1914, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" - }, - "response": { - "bodySize": 1991, - "content": { - "mimeType": "application/json; charset=utf-8", - "size": 1991, - "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "SAMEORIGIN" - }, - { - "name": "content-type", - "value": "application/json; charset=utf-8" - }, - { - "name": "content-length", - "value": "1991" - }, - { - "name": "etag", - "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" - }, - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "x-forgerock-transactionid", - "value": "7be9659d-2ef4-4adf-837b-fc8d86dc4918" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 388, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.602Z", - "time": 117, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 117 - } - }, - { - "_id": "a80d698633d86bd630c3f894f56d545d", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "accept-api-version", - "value": "protocol=1.0,resource=1.0" - }, - { - "name": "authorization", - "value": "Bearer " - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 1900, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry" - }, - "response": { - "bodySize": 194, - "content": { - "mimeType": "application/json", - "size": 194, - "text": "{\"otlp\":[{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" - }, - "cookies": [], - "headers": [ - { - "name": "content-api-version", - "value": "resource=1.0" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:48 GMT" - }, - { - "name": "content-length", - "value": "194" - }, - { - "name": "x-forgerock-transactionid", - "value": "d373fc58-7f9f-40d2-a0f7-dd31c9a76f93" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 335, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.839Z", - "time": 471, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 471 - } - } - ], - "pages": [], - "version": "1.2" - } -} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har deleted file mode 100644 index 8636a416a..000000000 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/oauth2_393036114/recording.har +++ /dev/null @@ -1,146 +0,0 @@ -{ - "log": { - "_recordingName": "config-manager/pull/telemetry/0_c_N_D/oauth2", - "creator": { - "comment": "persister:fs", - "name": "Polly.JS", - "version": "6.0.6" - }, - "entries": [ - { - "_id": "ff75519a93ccab829f8ee8cf5e92b49f", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 1351, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/x-www-form-urlencoded" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "accept-api-version", - "value": "protocol=2.1,resource=1.0" - }, - { - "name": "content-length", - "value": "1351" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 447, - "httpVersion": "HTTP/1.1", - "method": "POST", - "postData": { - "mimeType": "application/x-www-form-urlencoded", - "params": [], - "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" - }, - "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" - }, - "response": { - "bodySize": 1850, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 1850, - "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" - }, - "cookies": [], - "headers": [ - { - "name": "content-security-policy", - "value": "frame-ancestors 'self'" - }, - { - "name": "content-security-policy-report-only", - "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "no-store" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "1850" - }, - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 556, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.215Z", - "time": 214, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 214 - } - } - ], - "pages": [], - "version": "1.2" - } -} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har deleted file mode 100644 index 8f63ae56d..000000000 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_N_D_197344991/openidm_3290118515/recording.har +++ /dev/null @@ -1,310 +0,0 @@ -{ - "log": { - "_recordingName": "config-manager/pull/telemetry/0_c_N_D/openidm", - "creator": { - "comment": "persister:fs", - "name": "Polly.JS", - "version": "6.0.6" - }, - "entries": [ - { - "_id": "9cb8561357870863838a9948da32d1e8", - "_order": 0, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "authorization", - "value": "Bearer " - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 1975, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [ - { - "name": "_fields", - "value": "*" - } - ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" - }, - "response": { - "bodySize": 1392, - "content": { - "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" - }, - "cookies": [], - "headers": [ - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "vary", - "value": "Origin" - }, - { - "name": "cache-control", - "value": "no-store" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "content-type", - "value": "application/json;charset=utf-8" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "x-frame-options", - "value": "DENY" - }, - { - "name": "content-length", - "value": "1392" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" - } - ], - "headersSize": 682, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.474Z", - "time": 218, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 218 - } - }, - { - "_id": "9cb8561357870863838a9948da32d1e8", - "_order": 1, - "cache": {}, - "request": { - "bodySize": 0, - "cookies": [], - "headers": [ - { - "name": "accept", - "value": "application/json, text/plain, */*" - }, - { - "name": "content-type", - "value": "application/json" - }, - { - "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "authorization", - "value": "Bearer " - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.forgeblocks.com" - } - ], - "headersSize": 1975, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [ - { - "name": "_fields", - "value": "*" - } - ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" - }, - "response": { - "bodySize": 1392, - "content": { - "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" - }, - "cookies": [], - "headers": [ - { - "name": "date", - "value": "Wed, 08 Jul 2026 15:55:47 GMT" - }, - { - "name": "vary", - "value": "Origin" - }, - { - "name": "cache-control", - "value": "no-store" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "content-type", - "value": "application/json;charset=utf-8" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "x-frame-options", - "value": "DENY" - }, - { - "name": "content-length", - "value": "1392" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-8521f07d-8ded-43dd-848d-349e72635c1b" - }, - { - "name": "strict-transport-security", - "value": "max-age=31536000; includeSubDomains; preload;" - }, - { - "name": "x-robots-tag", - "value": "none" - }, - { - "name": "via", - "value": "1.1 google" - }, - { - "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" - } - ], - "headersSize": 657, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2026-07-08T15:55:47.726Z", - "time": 106, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 106 - } - } - ], - "pages": [], - "version": "1.2" - } -} From 593dacfb3a74d2f72bb339a133e72b2e0283d2fe Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 19 Aug 2026 16:01:27 -0600 Subject: [PATCH 04/10] fixup! add splunk to tests --- ...ig-manager-pull-telemetry.e2e.test.js.snap | 36 +- .../config-manager-pull-telemetry.e2e.test.js | 14 +- .../am_1076162899/recording.har | 72 ++-- .../environment_1072573434/recording.har | 52 +-- .../oauth2_393036114/recording.har | 30 +- .../openidm_3290118515/recording.har | 68 ++-- .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 232 +++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ 10 files changed, 1146 insertions(+), 126 deletions(-) create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/openidm_3290118515/recording.har diff --git a/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap index b6f754a63..c90bed5f6 100644 --- a/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap @@ -1,5 +1,21 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry --category splunk": should export only splunk exporters 1`] = `0`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry --category splunk": should export only splunk exporters 2`] = `""`; + +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry --category splunk": should export only splunk exporters: telemetryTestDir2/telemetry/splunk/frodo-test-splunk-1.json 1`] = ` +{ + "endpoint": "https://example.com:8088'", + "id": "frodo-test-splunk-1", + "index": "test", + "sources": [ + "am-access", + ], + "token": "", +} +`; + exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter 1`] = `0`; exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp -n test-otlp": should export a single named exporter 2`] = `""`; @@ -21,23 +37,19 @@ exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetr } `; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters 1`] = `0`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter 1`] = `0`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters 2`] = `""`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter 2`] = `""`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only otlp exporters: telemetryTestDir2/telemetry/otlp/datadog.json 1`] = ` +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter: telemetryTestDir5/telemetry/splunk/frodo-test-splunk-1.json 1`] = ` { - "encoding": "PROTO", - "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", - "headers": { - "dd-api-key": "\${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}", - }, - "id": "datadog", + "endpoint": "https://example.com:8088'", + "id": "frodo-test-splunk-1", + "index": "test", "sources": [ - "am-activity", - "idm-activity", + "am-access", ], - "type": "HTTP", + "token": "", } `; diff --git a/test/e2e/config-manager-pull-telemetry.e2e.test.js b/test/e2e/config-manager-pull-telemetry.e2e.test.js index f4b96d01f..8d5160c72 100644 --- a/test/e2e/config-manager-pull-telemetry.e2e.test.js +++ b/test/e2e/config-manager-pull-telemetry.e2e.test.js @@ -48,9 +48,10 @@ /* FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -D telemetryTestDir -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -D telemetryTestDir2 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry --category splunk -D telemetryTestDir2 FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -n test-otlp -D telemetryTestDir3 FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -n test-otlp -D telemetryTestDir4 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c splunk -D telemetryTestDir5 */ @@ -69,9 +70,9 @@ describe('frodo config-manager pull telemetry', () => { await testExport(CMD, env, undefined, undefined, dirName, false); }); - test('"frodo config-manager pull telemetry -c otlp": should export only otlp exporters', async () => { + test('"frodo config-manager pull telemetry --category splunk": should export only splunk exporters', async () => { const dirName = 'telemetryTestDir2'; - const CMD = `frodo config-manager pull telemetry -c otlp -D ${dirName}`; + const CMD = `frodo config-manager pull telemetry --category splunk -D ${dirName}`; await testExport(CMD, env, undefined, undefined, dirName, false); }); @@ -86,4 +87,11 @@ describe('frodo config-manager pull telemetry', () => { const CMD = `frodo config-manager pull telemetry -n test-otlp -D ${dirName}`; await testExport(CMD, env, undefined, undefined, dirName, false); }); + + test('"frodo config-manager pull telemetry -c splunk": should export a single named exporter', async () => { + const dirName = 'telemetryTestDir5'; + const CMD = `frodo config-manager pull telemetry -c splunk -D ${dirName}`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); + }); \ No newline at end of file diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har index 7712ab22b..c89b59248 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "accept-api-version", @@ -44,24 +44,24 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 392, + "headersSize": 385, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" }, "response": { - "bodySize": 614, + "bodySize": 636, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 614, - "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" }, "cookies": [], "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -89,7 +89,7 @@ }, { "name": "etag", - "value": "\"645264395\"" + "value": "" }, { "name": "expires", @@ -109,15 +109,15 @@ }, { "name": "content-length", - "value": "614" + "value": "636" }, { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:55 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "strict-transport-security", @@ -129,21 +129,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 804, + "headersSize": 1175, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:54.826Z", - "time": 450, + "startedDateTime": "2026-08-19T21:59:48.064Z", + "time": 202, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 450 + "wait": 202 } }, { @@ -172,11 +172,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "accept-api-version", @@ -195,18 +195,18 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1963, + "headersSize": 1956, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" }, "response": { - "bodySize": 274, + "bodySize": 276, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 274, - "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" }, "cookies": [], "headers": [ @@ -216,7 +216,7 @@ }, { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -244,7 +244,7 @@ }, { "name": "etag", - "value": "\"-1986495916\"" + "value": "" }, { "name": "expires", @@ -260,15 +260,15 @@ }, { "name": "content-length", - "value": "274" + "value": "276" }, { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:55 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "strict-transport-security", @@ -280,21 +280,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 806, + "headersSize": 1174, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:55.677Z", - "time": 393, + "startedDateTime": "2026-08-19T21:59:48.438Z", + "time": 102, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 393 + "wait": 102 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har index 18c86957e..1c95703df 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har @@ -25,7 +25,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -44,11 +44,11 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1914, + "headersSize": 1907, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" }, "response": { "bodySize": 1991, @@ -73,15 +73,15 @@ }, { "name": "etag", - "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + "value": "" }, { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:56 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "8766583d-2594-4406-98b3-fa66cc74d2e7" + "value": "" }, { "name": "strict-transport-security", @@ -93,21 +93,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 413, + "headersSize": 388, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:56.076Z", - "time": 143, + "startedDateTime": "2026-08-19T21:59:48.546Z", + "time": 85, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 143 + "wait": 85 } }, { @@ -136,7 +136,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -155,18 +155,18 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1900, + "headersSize": 1893, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" }, "response": { - "bodySize": 194, + "bodySize": 141, "content": { "mimeType": "application/json", - "size": 194, - "text": "{\"otlp\":[{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" + "size": 141, + "text": "{\"otlp\":[],\"splunk\":[{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"\"}]}" }, "cookies": [], "headers": [ @@ -180,15 +180,15 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:56 GMT" + "value": "" }, { "name": "content-length", - "value": "194" + "value": "141" }, { "name": "x-forgerock-transactionid", - "value": "c1436c2f-cb75-4d03-bb4f-724c5096634c" + "value": "" }, { "name": "strict-transport-security", @@ -200,11 +200,11 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], "headersSize": 335, @@ -213,8 +213,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:56.333Z", - "time": 593, + "startedDateTime": "2026-08-19T21:59:48.716Z", + "time": 331, "timings": { "blocked": -1, "connect": -1, @@ -222,7 +222,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 593 + "wait": 331 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har index 6e97c7de5..3b9926249 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har @@ -12,7 +12,7 @@ "_order": 0, "cache": {}, "request": { - "bodySize": 1351, + "bodySize": 1349, "cookies": [], "headers": [ { @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "accept-api-version", @@ -37,7 +37,7 @@ }, { "name": "content-length", - "value": "1351" + "value": "1349" }, { "name": "accept-encoding", @@ -48,7 +48,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 447, + "headersSize": 440, "httpVersion": "HTTP/1.1", "method": "POST", "postData": { @@ -57,7 +57,7 @@ "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" }, "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" }, "response": { "bodySize": 1850, @@ -70,7 +70,7 @@ "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self'" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" }, { "name": "content-security-policy-report-only", @@ -98,11 +98,11 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:55 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "strict-transport-security", @@ -114,21 +114,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 556, + "headersSize": 951, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:55.289Z", - "time": 382, + "startedDateTime": "2026-08-19T21:59:48.282Z", + "time": 148, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 382 + "wait": 148 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har index 00ba7a713..80f8d91da 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "authorization", @@ -44,7 +44,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -53,20 +53,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:55 GMT" + "value": "" }, { "name": "vary", @@ -94,7 +94,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -114,11 +114,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "strict-transport-security", @@ -130,21 +130,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 657, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:55.713Z", - "time": 288, + "startedDateTime": "2026-08-19T21:59:48.500Z", + "time": 170, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 288 + "wait": 170 } }, { @@ -173,11 +173,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "authorization", @@ -192,7 +192,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -201,20 +201,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 15:29:56 GMT" + "value": "" }, { "name": "vary", @@ -242,7 +242,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -262,11 +262,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-c2555651-e3d2-4140-932c-b1139ae7b141" + "value": "" }, { "name": "strict-transport-security", @@ -278,21 +278,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 682, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T15:29:56.228Z", - "time": 96, + "startedDateTime": "2026-08-19T21:59:48.637Z", + "time": 73, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 96 + "wait": 73 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/am_1076162899/recording.har new file mode 100644 index 000000000..4c6f3b5d4 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_category_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.193Z", + "time": 137, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 137 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 276, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1174, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.500Z", + "time": 93, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 93 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/environment_1072573434/recording.har new file mode 100644 index 000000000..989ebded5 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/environment_1072573434/recording.har @@ -0,0 +1,232 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_category_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.600Z", + "time": 91, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 91 + } + }, + { + "_id": "a80d698633d86bd630c3f894f56d545d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1893, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" + }, + "response": { + "bodySize": 141, + "content": { + "mimeType": "application/json", + "size": 141, + "text": "{\"otlp\":[],\"splunk\":[{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"\"}]}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "" + }, + { + "name": "content-length", + "value": "141" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.792Z", + "time": 287, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 287 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/oauth2_393036114/recording.har new file mode 100644 index 000000000..c9bb2d5ea --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_category_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 951, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.344Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/openidm_3290118515/recording.har new file mode 100644 index 000000000..5555e4954 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_category_D_2031782691/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/pull/telemetry/0_category_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.566Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:56:29.697Z", + "time": 90, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 90 + } + } + ], + "pages": [], + "version": "1.2" + } +} From 9d0fa7f9a300de76350eaa6328ee73c8b39f9dea Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Thu, 20 Aug 2026 09:45:24 -0600 Subject: [PATCH 05/10] fixup! resolve PR comments. update snapshot --- .../config-manager-push-telemetry.ts | 73 ------------------- src/configManagerOps/FrConfigTelemetry.ts | 47 ------------ src/configManagerOps/FrConfigTelemetryOps.ts | 2 +- ...ig-manager-pull-telemetry.e2e.test.js.snap | 27 ++++--- .../config-manager-pull-telemetry.e2e.test.js | 8 +- .../am_1076162899/recording.har | 12 +-- .../environment_1072573434/recording.har | 20 ++--- .../oauth2_393036114/recording.har | 6 +- .../openidm_3290118515/recording.har | 12 +-- 9 files changed, 46 insertions(+), 161 deletions(-) delete mode 100644 src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts delete mode 100644 src/configManagerOps/FrConfigTelemetry.ts diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts deleted file mode 100644 index 548328dfc..000000000 --- a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts +++ /dev/null @@ -1,73 +0,0 @@ -// import { frodo } from '@rockcarver/frodo-lib'; - -// import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetryOps'; -// import { getTokens } from '../../../ops/AuthenticateOps'; -// import { printMessage, verboseMessage } from '../../../utils/Console'; -// import { FrodoCommand } from '../../FrodoCommand'; - -// const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = -// frodo.utils.constants; - -// const deploymentTypes = [ -// CLOUD_DEPLOYMENT_TYPE_KEY, -// FORGEOPS_DEPLOYMENT_TYPE_KEY, -// ]; - -// export default function setup() { -// const program = new FrodoCommand( -// 'frodo config-manager push telemetry', -// [], -// deploymentTypes -// ); -// program -// .description('Import telemetry exporters.') -// .option( -// '-c, --category ', -// 'Telemetry category to import (otlp or splunk).' -// ) -// .option( -// '-N, --name ', -// 'Name of a single exporter to import. Requires --category.' -// ) -// .option( -// '-e, --env ', -// 'Value to resolve placeholders with for a single named exporter. Requires --name.' -// ) -// .action(async (host, realm, user, password, options, command) => { -// command.handleDefaultArgsAndOpts( -// host, -// realm, -// user, -// password, -// options, -// command -// ); -// if (options.env && !options.name) { -// printMessage( -// 'The -e option requires -N to target a single exporter.', -// 'error' -// ); -// process.exitCode = 1; -// return; -// } -// if (await getTokens(false, true, deploymentTypes)) { -// verboseMessage('Importing telemetry'); -// const outcome = await configManagerImportTelemetry( -// options.category, -// options.name, -// options.env -// ); -// if (!outcome) process.exitCode = 1; -// } -// // unrecognized combination of options or no options -// else { -// printMessage( -// 'Unrecognized combination of options or no options...', -// 'error' -// ); -// program.help(); -// process.exitCode = 1; -// } -// }); -// return program; -// } diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts deleted file mode 100644 index d08eacee9..000000000 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { frodo } from '@rockcarver/frodo-lib'; -import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; - -import { printError } from '../utils/Console'; - -const { saveJsonToFile, getFilePath } = frodo.utils; -const { exportTelemetry } = frodo.cloud.telemetry; - -/** - * Exports telemetry configuration in config manager format - * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. - * @param {string} name optional parameter to export telemetry config by name. - * @returns { Promise } returns true if telemetry was successfully exported - */ -export async function configManagerExportTelemetry( - category?: TelemetryExporterCategory, - name?: string -): Promise { - try { - const exporters = await exportTelemetry(name, category); - - for (const [cat, providers] of Object.entries(exporters.telemetry)) { - for (const provider of providers) { - const exportProvider = provider as any; - if (exportProvider.headers) { - const placeholders: Record = {}; - Object.keys(exportProvider.headers).forEach((headerName) => { - placeholders[headerName] = - `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` - .replaceAll('-', '_') - .toUpperCase(); - }); - exportProvider.headers = placeholders; - } - saveJsonToFile( - exportProvider, - getFilePath(`telemetry/${cat}/${provider.id}.json`, true), - false - ); - } - } - return true; - } catch (e) { - printError(e); - } - return false; -} diff --git a/src/configManagerOps/FrConfigTelemetryOps.ts b/src/configManagerOps/FrConfigTelemetryOps.ts index d08eacee9..4ebc229a1 100644 --- a/src/configManagerOps/FrConfigTelemetryOps.ts +++ b/src/configManagerOps/FrConfigTelemetryOps.ts @@ -8,7 +8,7 @@ const { exportTelemetry } = frodo.cloud.telemetry; /** * Exports telemetry configuration in config manager format - * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. + * @param {TelemetryExporterCategory} category optional parameter to export telemetry by category. * @param {string} name optional parameter to export telemetry config by name. * @returns { Promise } returns true if telemetry was successfully exported */ diff --git a/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap index c90bed5f6..0e93f814d 100644 --- a/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-manager-pull-telemetry.e2e.test.js.snap @@ -37,19 +37,24 @@ exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetr } `; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter 1`] = `0`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only the otlp exporter 1`] = `0`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter 2`] = `""`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only the otlp exporter 2`] = `""`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c splunk": should export a single named exporter: telemetryTestDir5/telemetry/splunk/frodo-test-splunk-1.json 1`] = ` +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry -c otlp": should export only the otlp exporter: telemetryTestDir5/telemetry/otlp/test-otlp.json 1`] = ` { - "endpoint": "https://example.com:8088'", - "id": "frodo-test-splunk-1", - "index": "test", + "encoding": "JSON", + "endpoint": "https://example-siem.com:4317", + "headers": { + "api-key": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY}", + "api-secret": "\${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET}", + }, + "id": "test-otlp", "sources": [ - "am-access", + "am-activity", + "idm-activity", ], - "token": "", + "type": "HTTP", } `; @@ -74,11 +79,11 @@ exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetr } `; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 1`] = `0`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export telemetry in fr-config-manager style" 1`] = `0`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style" 2`] = `""`; +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export telemetry in fr-config-manager style" 2`] = `""`; -exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export the secrets in fr-config-manager style": telemetryTestDir/telemetry/otlp/datadog.json 1`] = ` +exports[`frodo config-manager pull telemetry "frodo config-manager pull telemetry": should export telemetry in fr-config-manager style": telemetryTestDir/telemetry/otlp/datadog.json 1`] = ` { "encoding": "PROTO", "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", diff --git a/test/e2e/config-manager-pull-telemetry.e2e.test.js b/test/e2e/config-manager-pull-telemetry.e2e.test.js index 8d5160c72..2ca601b32 100644 --- a/test/e2e/config-manager-pull-telemetry.e2e.test.js +++ b/test/e2e/config-manager-pull-telemetry.e2e.test.js @@ -51,7 +51,7 @@ FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgebloc FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry --category splunk -D telemetryTestDir2 FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -n test-otlp -D telemetryTestDir3 FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -n test-otlp -D telemetryTestDir4 -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c splunk -D telemetryTestDir5 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager pull telemetry -c otlp -D telemetryTestDir5 */ @@ -64,7 +64,7 @@ process.env['FRODO_CONNECTION_PROFILES_PATH'] = const env = getEnv(c); describe('frodo config-manager pull telemetry', () => { - test('"frodo config-manager pull telemetry": should export the secrets in fr-config-manager style"', async () => { + test('"frodo config-manager pull telemetry": should export telemetry in fr-config-manager style"', async () => { const dirName = 'telemetryTestDir'; const CMD = `frodo config-manager pull telemetry -D ${dirName}`; await testExport(CMD, env, undefined, undefined, dirName, false); @@ -88,9 +88,9 @@ describe('frodo config-manager pull telemetry', () => { await testExport(CMD, env, undefined, undefined, dirName, false); }); - test('"frodo config-manager pull telemetry -c splunk": should export a single named exporter', async () => { + test('"frodo config-manager pull telemetry -c otlp": should export only the otlp exporter', async () => { const dirName = 'telemetryTestDir5'; - const CMD = `frodo config-manager pull telemetry -c splunk -D ${dirName}`; + const CMD = `frodo config-manager pull telemetry -c otlp -D ${dirName}`; await testExport(CMD, env, undefined, undefined, dirName, false); }); diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har index c89b59248..3680968ca 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har @@ -142,8 +142,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.064Z", - "time": 202, + "startedDateTime": "2026-08-20T15:40:42.958Z", + "time": 127, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 202 + "wait": 127 } }, { @@ -293,8 +293,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.438Z", - "time": 102, + "startedDateTime": "2026-08-20T15:40:43.280Z", + "time": 106, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 102 + "wait": 106 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har index 1c95703df..56c459949 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har @@ -106,8 +106,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.546Z", - "time": 85, + "startedDateTime": "2026-08-20T15:40:43.392Z", + "time": 75, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 85 + "wait": 75 } }, { @@ -162,11 +162,11 @@ "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" }, "response": { - "bodySize": 141, + "bodySize": 199, "content": { "mimeType": "application/json", - "size": 141, - "text": "{\"otlp\":[],\"splunk\":[{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"\"}]}" + "size": 199, + "text": "{\"otlp\":[{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"\",\"api-secret\":\"\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}],\"splunk\":[]}" }, "cookies": [], "headers": [ @@ -184,7 +184,7 @@ }, { "name": "content-length", - "value": "141" + "value": "199" }, { "name": "x-forgerock-transactionid", @@ -213,8 +213,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.716Z", - "time": 331, + "startedDateTime": "2026-08-20T15:40:43.544Z", + "time": 446, "timings": { "blocked": -1, "connect": -1, @@ -222,7 +222,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 331 + "wait": 446 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har index 3b9926249..03dad9a04 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har @@ -127,8 +127,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.282Z", - "time": 148, + "startedDateTime": "2026-08-20T15:40:43.102Z", + "time": 171, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 148 + "wait": 171 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har index 80f8d91da..dee356017 100644 --- a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har @@ -143,8 +143,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.500Z", - "time": 170, + "startedDateTime": "2026-08-20T15:40:43.343Z", + "time": 154, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 170 + "wait": 154 } }, { @@ -291,8 +291,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:59:48.637Z", - "time": 73, + "startedDateTime": "2026-08-20T15:40:43.473Z", + "time": 65, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 73 + "wait": 65 } } ], From ae7e34bbe6df7a407f0a21d348c70570245f004a Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 8 Jul 2026 11:56:02 -0600 Subject: [PATCH 06/10] wip --- .../config-manager-push-telemetry.ts | 61 ++++++++ .../config-manager-push.ts | 2 + src/configManagerOps/FrConfigTelemetry.ts | 139 ++++++++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts create mode 100644 src/configManagerOps/FrConfigTelemetry.ts diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts new file mode 100644 index 000000000..f2b2d0354 --- /dev/null +++ b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts @@ -0,0 +1,61 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; +import { getTokens } from '../../../ops/AuthenticateOps'; +import { printMessage, verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; +const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = + frodo.utils.constants; +const deploymentTypes = [ + CLOUD_DEPLOYMENT_TYPE_KEY, + FORGEOPS_DEPLOYMENT_TYPE_KEY, +]; +export default function setup() { + const program = new FrodoCommand( + 'frodo config-manager push telemetry', + [], + deploymentTypes + ); + program + .description('Import telemetry exporters.') + .option( + '-c, --category ', + 'Telemetry category to import (otlp or splunk).' + ) + .option( + '-N, --name ', + 'Name of a single exporter to import. Requires --category.' + ) + .option( + '-e, --env ', + 'Value to resolve placeholders with for a single named exporter. Requires --name.' + ) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + if (await getTokens(false, true, deploymentTypes)) { + verboseMessage('Importing telemetry'); + const outcome = await configManagerImportTelemetry( + options.category, + options.name, + options.env + ); + if (!outcome) process.exitCode = 1; + } + // unrecognized combination of options or no options + else { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + } + }); + return program; +} diff --git a/src/cli/config-manager/config-manager-push/config-manager-push.ts b/src/cli/config-manager/config-manager-push/config-manager-push.ts index 542ec2c7e..743f580ac 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push.ts @@ -26,6 +26,7 @@ import SecretMappings from './config-manager-push-secret-mappings'; import ServiceObjects from './config-manager-push-service-objects'; import TermsAndConditions from './config-manager-push-terms-and-conditions'; import Themes from './config-manager-push-themes'; +import Telemetry from './config-manager-push-telemetry'; import UiConfig from './config-manager-push-ui-config'; import Variables from './config-manager-push-variables'; @@ -50,6 +51,7 @@ export default function setup() { program.addCommand(Audit().name('audit')); program.addCommand(CookieDomains().name('cookie-domains')); program.addCommand(ServiceObjects().name('service-objects')); + program.addCommand(Telemetry().name('telemery')) program.addCommand(UiConfig().name('ui-config')); program.addCommand(Authentication().name('authentication')); program.addCommand(ConnectorDefinitions().name('connector-definitions')); diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts new file mode 100644 index 000000000..8b5432678 --- /dev/null +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -0,0 +1,139 @@ + +import { frodo, FrodoError } from '@rockcarver/frodo-lib'; +import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; +import { + createProgressIndicator, + printError, + stopProgressIndicator, + updateProgressIndicator, +} from '../utils/Console'; + +import fs from 'fs' + + +const { saveJsonToFile, getFilePath } = frodo.utils; +const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; + +/** + * Exports telemetry configuration in config manager format + * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. + * @param {string} name optional parameter to export telemetry config by name. + * @returns { Promise } returns true if telemetry was successfully exported + */ +export async function configManagerExportTelemetry( + category?: TelemetryExporterCategory, + name?: string +): Promise { + try { + const exporters = await exportTelemetry(name, category); + + for (const [cat, providers] of Object.entries(exporters.telemetry)) { + for (const provider of providers) { + const exportProvider = provider as any; + if (exportProvider.headers) { + const placeholders: Record = {}; + Object.keys(exportProvider.headers).forEach((headerName) => { + placeholders[headerName] = + `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` + .replaceAll('-', '_') + .toUpperCase(); + }); + exportProvider.headers = placeholders; + } + saveJsonToFile( + exportProvider, + getFilePath(`telemetry/${cat}/${provider.id}.json`, true), + false + ); + } + } + return true; + } catch (e) { + printError(e); + } + return false; +} + + +export async function configManagerImportTelemetry( + category?: 'otlp' | 'splunk', + name?: string, + value?: string +): Promise { + const errors = []; + const spinnerId = createProgressIndicator( + 'indeterminate', + 0, + `Reading telemetry exporters...` + ); + let indicatorId: string; + try { + const envFile = loadEnvFile(); + const categories: ('otlp' | 'splunk')[] = category + ? [category] + : ['otlp', 'splunk']; + const targets: { cat: 'otlp' | 'splunk'; file: string }[] = []; + for (const cat of categories) { + const catDir = getFilePath(`telemetry/${cat}`); + if (!fs.existsSync(catDir)) { + continue; + } + const files = fs + .readdirSync(catDir) + .filter((f) => f.toLowerCase().endsWith('.json')) + .filter((f) => !name || f === `${name}.json`); + for (const f of files) { + targets.push({ cat, file: `${catDir}/${f}` }); + } + } + if (targets.length === 0) { + stopProgressIndicator( + spinnerId, + name + ? `No matching telemetry exporter found for ${name}` + : 'No telemetry exporters found to import', + 'fail' + ); + return true; + } + stopProgressIndicator( + spinnerId, + `Successfully read ${targets.length} telemetry exporter(s).`, + 'success' + ); + indicatorId = createProgressIndicator( + 'determinate', + targets.length, + 'Importing telemetry exporters' + ); + for (const { cat, file } of targets) { + try { + const provider = readToJson(file, { + overrideValue: value, + envFile, + base64Encode: false, + }); + await importTelemetry(provider.id, cat, provider); + updateProgressIndicator( + indicatorId, + `Imported ${cat} exporter ${provider.id}` + ); + } catch (error) { + errors.push(error); + } + } + if (errors.length > 0) { + throw new FrodoError(`Error importing telemetry exporters`, errors); + } + stopProgressIndicator( + indicatorId, + `${targets.length} telemetry exporter(s) imported.` + ); + return true; + } catch (error) { + stopProgressIndicator(indicatorId, `Error importing telemetry exporters`, 'fail'); + printError(error); + return false; + } +} + From c88bbbf78e9198b4d8eaee6b3bf884c1f7b79eb9 Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 8 Jul 2026 12:58:10 -0600 Subject: [PATCH 07/10] feat: add config-manager push telemetry command --- .../config-manager-push-telemetry.ts | 12 + .../config-manager-push.ts | 4 +- src/configManagerOps/FrConfigTelemetry.ts | 13 +- .../config-manager-push.test.js.snap | 1 + ...config-manager-push-telemetry.test.js.snap | 5 + .../e2e/config-manager-push-telemetry.test.js | 85 +++++ .../cloud/telemetry/otlp/datadog.json | 13 + .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 241 ++++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 241 ++++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ 15 files changed, 2145 insertions(+), 6 deletions(-) create mode 100644 test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap create mode 100644 test/e2e/config-manager-push-telemetry.test.js create mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts index f2b2d0354..bb72bd3f2 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts @@ -1,14 +1,18 @@ import { frodo } from '@rockcarver/frodo-lib'; + import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; import { getTokens } from '../../../ops/AuthenticateOps'; import { printMessage, verboseMessage } from '../../../utils/Console'; import { FrodoCommand } from '../../FrodoCommand'; + const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + const deploymentTypes = [ CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY, ]; + export default function setup() { const program = new FrodoCommand( 'frodo config-manager push telemetry', @@ -38,6 +42,14 @@ export default function setup() { options, command ); + if (options.env && !options.name) { + printMessage( + 'The -e option requires -N to target a single exporter.', + 'error' + ); + process.exitCode = 1; + return; + } if (await getTokens(false, true, deploymentTypes)) { verboseMessage('Importing telemetry'); const outcome = await configManagerImportTelemetry( diff --git a/src/cli/config-manager/config-manager-push/config-manager-push.ts b/src/cli/config-manager/config-manager-push/config-manager-push.ts index 743f580ac..3385a996e 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push.ts @@ -24,9 +24,9 @@ import Restart from './config-manager-push-restart'; import Schedules from './config-manager-push-schedules'; import SecretMappings from './config-manager-push-secret-mappings'; import ServiceObjects from './config-manager-push-service-objects'; +import Telemetry from './config-manager-push-telemetry'; import TermsAndConditions from './config-manager-push-terms-and-conditions'; import Themes from './config-manager-push-themes'; -import Telemetry from './config-manager-push-telemetry'; import UiConfig from './config-manager-push-ui-config'; import Variables from './config-manager-push-variables'; @@ -51,7 +51,7 @@ export default function setup() { program.addCommand(Audit().name('audit')); program.addCommand(CookieDomains().name('cookie-domains')); program.addCommand(ServiceObjects().name('service-objects')); - program.addCommand(Telemetry().name('telemery')) + program.addCommand(Telemetry().name('telemetry')); program.addCommand(UiConfig().name('ui-config')); program.addCommand(Authentication().name('authentication')); program.addCommand(ConnectorDefinitions().name('connector-definitions')); diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts index 8b5432678..5d25d42b4 100644 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -1,6 +1,8 @@ import { frodo, FrodoError } from '@rockcarver/frodo-lib'; + import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; + import { createProgressIndicator, printError, @@ -8,10 +10,10 @@ import { updateProgressIndicator, } from '../utils/Console'; -import fs from 'fs' +import fs from 'fs' -const { saveJsonToFile, getFilePath } = frodo.utils; +const { saveJsonToFile, getFilePath, readJsonFile } = frodo.utils; const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; /** @@ -131,9 +133,12 @@ export async function configManagerImportTelemetry( ); return true; } catch (error) { - stopProgressIndicator(indicatorId, `Error importing telemetry exporters`, 'fail'); + stopProgressIndicator( + indicatorId, + `Error importing telemetry exporters`, + 'fail' + ); printError(error); return false; } } - diff --git a/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap index e0c932fb4..fd42b24db 100644 --- a/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap @@ -35,6 +35,7 @@ Commands: remote-servers [Experimental] Import RCS config. schedules [Experimental] Import schedules. service-objects [Experimental] Import service objects. + telemetry [Experimental] Import telemetry exporters. terms-and-conditions [Experimental] Import terms and conditions. themes [Experimental] Import themes. ui-config [Experimental] Import UI configuration. diff --git a/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap b/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap new file mode 100644 index 000000000..3b94d9c3b --- /dev/null +++ b/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/telemetry": should resolve header placeholders from process.env 1`] = `""`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -N datadog -e test-value -D test/e2e/exports/fr-config-manager/telemetry": should resolve placeholders from the -e override 1`] = `""`; diff --git a/test/e2e/config-manager-push-telemetry.test.js b/test/e2e/config-manager-push-telemetry.test.js new file mode 100644 index 000000000..64fd2bcbb --- /dev/null +++ b/test/e2e/config-manager-push-telemetry.test.js @@ -0,0 +1,85 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp -N datadog -e test-value -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/cloud +*/ + + +import cp from 'child_process'; +import { promisify } from 'util'; +import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { connection as c } from './utils/TestConfig'; + +const exec = promisify(cp.exec); +process.env['FRODO_MOCK'] = '1'; +process.env['FRODO_CONNECTION_PROFILES_PATH'] = + './test/e2e/env/Connections.json'; +const env = getEnv(c); + +const telemetryDir = 'test/e2e/exports/fr-config-manager/telemetry'; + +describe('frodo config-manager push telemetry', () => { + test(`"frodo config-manager push telemetry -D ${telemetryDir}": should resolve header placeholders from process.env`, async () => { + const CMD = `frodo config-manager push telemetry -D ${telemetryDir}`; + const { stdout } = await exec(CMD, { + env: { + ...env.env, + TELEMETRY_HEADER_OTLP_MYEXPORTER_AUTHORIZATION: 'Bearer test-value', + }, + }); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + + test(`"frodo config-manager push telemetry -c otlp -N datadog -e test-value -D ${telemetryDir}": should resolve placeholders from the -e override`, async () => { + const CMD = `frodo config-manager push telemetry -c otlp -N datadog -e "test-value" -D ${telemetryDir}`; + const { stdout } = await exec(CMD, env); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); +}); \ No newline at end of file diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json new file mode 100644 index 000000000..ebd061f2c --- /dev/null +++ b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json @@ -0,0 +1,13 @@ +{ + "encoding": "PROTO", + "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", + "headers": { + "dd-api-key": "${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}" + }, + "id": "datadog", + "sources": [ + "am-activity", + "idm-activity" + ], + "type": "HTTP" +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har new file mode 100644 index 000000000..bb9427bec --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 392, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"645264395\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 804, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:32.852Z", + "time": 151, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 151 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1963, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 274, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 274, + "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1986495916\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "274" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 806, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.187Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har new file mode 100644 index 000000000..c896ff7f6 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har @@ -0,0 +1,241 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1914, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2dd7e8f2-ec2b-4c1f-b4df-ebed6ebe5326" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.312Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "8fa5c3016197480d45c0cd23a469aac8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 180, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "180" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1934, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"test-value\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry/otlp/datadog" + }, + "response": { + "bodySize": 171, + "content": { + "mimeType": "application/json", + "size": 171, + "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:34 GMT" + }, + { + "name": "content-length", + "value": "171" + }, + { + "name": "x-forgerock-transactionid", + "value": "0285c614-b084-4f0e-a7ce-1931effe8f0d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.535Z", + "time": 623, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 623 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har new file mode 100644 index 000000000..5caa58197 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1351, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1351" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 447, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self'" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 581, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.017Z", + "time": 165, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 165 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har new file mode 100644 index 000000000..34e6a8c27 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:33 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.227Z", + "time": 188, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 188 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:54:33 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:54:33.419Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har new file mode 100644 index 000000000..75fada3db --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 392, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"645264395\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 779, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.164Z", + "time": 335, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 335 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1963, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 274, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 274, + "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1986495916\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "274" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 781, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.713Z", + "time": 126, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 126 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har new file mode 100644 index 000000000..3fcf6af47 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har @@ -0,0 +1,241 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1914, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "74908d5a-be86-44ce-8f5c-0bfa5ba22644" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.845Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + }, + { + "_id": "8fa5c3016197480d45c0cd23a469aac8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 180, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "180" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1934, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"test-value\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry/otlp/datadog" + }, + "response": { + "bodySize": 171, + "content": { + "mimeType": "application/json", + "size": 171, + "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:09 GMT" + }, + { + "name": "content-length", + "value": "171" + }, + { + "name": "x-forgerock-transactionid", + "value": "ac36e09b-e70c-4aca-954d-cd50cb471329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:09.082Z", + "time": 604, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 604 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har new file mode 100644 index 000000000..ec40448a5 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1351, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1351" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 447, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "frame-ancestors 'self'" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.512Z", + "time": 195, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 195 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har new file mode 100644 index 000000000..362d339a0 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:08 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.754Z", + "time": 194, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 194 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-43" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + }, + "response": { + "bodySize": 1392, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1392, + "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 08 Jul 2026 18:51:09 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1392" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 657, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-07-08T18:51:08.963Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + } + ], + "pages": [], + "version": "1.2" + } +} From 441efb1583efa850dfe31f421414086476f05809 Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Wed, 19 Aug 2026 15:50:27 -0600 Subject: [PATCH 08/10] fixup! resolve PR comments. update test name. --- delete-test.json | 1 + .../config-manager-push-telemetry.ts | 47 +-- src/configManagerOps/FrConfigTelemetry.ts | 101 +++--- ...config-manager-pull-telemetry.test.js.snap | 6 +- ...ig-manager-push-telemetry.e2e.test.js.snap | 57 ++++ ...config-manager-push-telemetry.test.js.snap | 5 - ...config-manager-push-telemetry.e2e.test.js} | 44 +-- .../cloud/telemetry/otlp/test-otlp.json | 14 + .../cloud/telemetry/splunk/test.json | 9 + .../am_1076162899/recording.har | 74 ++--- .../environment_1072573434/recording.har | 241 ++++++++++++++ .../oauth2_393036114/recording.har | 32 +- .../openidm_3290118515/recording.har | 70 ++-- .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 241 ++++++++++++++ .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 58 ++-- .../oauth2_393036114/recording.har | 32 +- .../openidm_3290118515/recording.har | 70 ++-- .../am_1076162899/recording.har | 74 ++--- .../environment_1072573434/recording.har | 62 ++-- .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ tmp.txt | 12 + 26 files changed, 2441 insertions(+), 345 deletions(-) create mode 100644 delete-test.json create mode 100644 test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap delete mode 100644 test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap rename test/e2e/{config-manager-push-telemetry.test.js => config-manager-push-telemetry.e2e.test.js} (55%) create mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/test-otlp.json create mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/splunk/test.json rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_D_2157136892 => 0_c_D_1040842898}/am_1076162899/recording.har (68%) create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_D_2157136892 => 0_c_D_1040842898}/oauth2_393036114/recording.har (79%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_D_2157136892 => 0_c_D_1040842898}/openidm_3290118515/recording.har (59%) create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_N_e_D_3815318455 => 0_c_n_E_D_600140151}/environment_1072573434/recording.har (83%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_N_e_D_3815318455 => 0_c_n_E_D_600140151}/oauth2_393036114/recording.har (79%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_N_e_D_3815318455 => 0_c_n_E_D_600140151}/openidm_3290118515/recording.har (59%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_N_e_D_3815318455 => 0_n_E_E_D_892394825}/am_1076162899/recording.har (68%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_D_2157136892 => 0_n_E_E_D_892394825}/environment_1072573434/recording.har (81%) create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har create mode 100644 tmp.txt diff --git a/delete-test.json b/delete-test.json new file mode 100644 index 000000000..8b3d52094 --- /dev/null +++ b/delete-test.json @@ -0,0 +1 @@ +{"encoding":"JSON","endpoint":"https://example-siem.com:4317","headers":{"api-key":"","api-secret":""},"id":"test-otlp","sources":["am-activity","idm-activity"],"type":"HTTP"} diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts index bb72bd3f2..ee9cbc067 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts @@ -2,7 +2,7 @@ import { frodo } from '@rockcarver/frodo-lib'; import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; import { getTokens } from '../../../ops/AuthenticateOps'; -import { printMessage, verboseMessage } from '../../../utils/Console'; +import { verboseMessage } from '../../../utils/Console'; import { FrodoCommand } from '../../FrodoCommand'; const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = @@ -26,13 +26,9 @@ export default function setup() { 'Telemetry category to import (otlp or splunk).' ) .option( - '-N, --name ', + '-n, --name ', 'Name of a single exporter to import. Requires --category.' ) - .option( - '-e, --env ', - 'Value to resolve placeholders with for a single named exporter. Requires --name.' - ) .action(async (host, realm, user, password, options, command) => { command.handleDefaultArgsAndOpts( host, @@ -42,32 +38,19 @@ export default function setup() { options, command ); - if (options.env && !options.name) { - printMessage( - 'The -e option requires -N to target a single exporter.', - 'error' - ); - process.exitCode = 1; - return; - } - if (await getTokens(false, true, deploymentTypes)) { - verboseMessage('Importing telemetry'); - const outcome = await configManagerImportTelemetry( - options.category, - options.name, - options.env - ); - if (!outcome) process.exitCode = 1; - } - // unrecognized combination of options or no options - else { - printMessage( - 'Unrecognized combination of options or no options...', - 'error' - ); - program.help(); - process.exitCode = 1; - } + + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) process.exit(1); + verboseMessage('Importing telemetry.'); + const outcome = await configManagerImportTelemetry( + options.category, + options.name + ); + if (!outcome) process.exitCode = 1; }); return program; } diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts index 5d25d42b4..8777c76cf 100644 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ b/src/configManagerOps/FrConfigTelemetry.ts @@ -1,18 +1,14 @@ - -import { frodo, FrodoError } from '@rockcarver/frodo-lib'; - +import { frodo } from '@rockcarver/frodo-lib'; import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; +import { TelemetryExportInterface } from '@rockcarver/frodo-lib/types/ops/cloud/TelemetryOps'; +import fs from 'fs'; import { createProgressIndicator, printError, stopProgressIndicator, - updateProgressIndicator, } from '../utils/Console'; - -import fs from 'fs' - const { saveJsonToFile, getFilePath, readJsonFile } = frodo.utils; const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; @@ -56,13 +52,10 @@ export async function configManagerExportTelemetry( return false; } - export async function configManagerImportTelemetry( - category?: 'otlp' | 'splunk', - name?: string, - value?: string + category?: TelemetryExporterCategory, + name?: string ): Promise { - const errors = []; const spinnerId = createProgressIndicator( 'indeterminate', 0, @@ -70,11 +63,31 @@ export async function configManagerImportTelemetry( ); let indicatorId: string; try { - const envFile = loadEnvFile(); - const categories: ('otlp' | 'splunk')[] = category - ? [category] - : ['otlp', 'splunk']; - const targets: { cat: 'otlp' | 'splunk'; file: string }[] = []; + const telemetryDir = getFilePath('telemetry'); + + if (!fs.existsSync(telemetryDir)) { + stopProgressIndicator( + spinnerId, + 'No telemetry exporters found to import', + 'fail' + ); + return true; + } + + const categories = fs + .readdirSync(telemetryDir, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => entry.name as TelemetryExporterCategory) + .filter((cat) => !category || cat === category); + + const importData: TelemetryExportInterface = { + telemetry: Object.fromEntries( + categories.map((cat) => [cat, []]) + ) as TelemetryExportInterface['telemetry'], + }; + + let exportCounter = 0; + for (const cat of categories) { const catDir = getFilePath(`telemetry/${cat}`); if (!fs.existsSync(catDir)) { @@ -84,11 +97,14 @@ export async function configManagerImportTelemetry( .readdirSync(catDir) .filter((f) => f.toLowerCase().endsWith('.json')) .filter((f) => !name || f === `${name}.json`); - for (const f of files) { - targets.push({ cat, file: `${catDir}/${f}` }); + for (const file of files) { + const filePath = `${catDir}/${file}`; + const provider = readJsonFile(filePath) as any; + importData.telemetry[cat].push(provider); + exportCounter++; } } - if (targets.length === 0) { + if (exportCounter === 0) { stopProgressIndicator( spinnerId, name @@ -96,48 +112,33 @@ export async function configManagerImportTelemetry( : 'No telemetry exporters found to import', 'fail' ); + indicatorId = undefined; return true; } + stopProgressIndicator( spinnerId, - `Successfully read ${targets.length} telemetry exporter(s).`, + `Successfully read ${exportCounter} telemetry exporter(s).`, 'success' ); + indicatorId = undefined; + indicatorId = createProgressIndicator( - 'determinate', - targets.length, - 'Importing telemetry exporters' + 'indeterminate', + 0, + 'Importing telemetry exporters...' ); - for (const { cat, file } of targets) { - try { - const provider = readToJson(file, { - overrideValue: value, - envFile, - base64Encode: false, - }); - await importTelemetry(provider.id, cat, provider); - updateProgressIndicator( - indicatorId, - `Imported ${cat} exporter ${provider.id}` - ); - } catch (error) { - errors.push(error); - } - } - if (errors.length > 0) { - throw new FrodoError(`Error importing telemetry exporters`, errors); - } + + await importTelemetry(importData); + stopProgressIndicator( - indicatorId, - `${targets.length} telemetry exporter(s) imported.` + spinnerId, + `Successfully read ${exportCounter} telemetry exporter(s).`, + 'success' ); + return true; } catch (error) { - stopProgressIndicator( - indicatorId, - `Error importing telemetry exporters`, - 'fail' - ); printError(error); return false; } diff --git a/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap index 8fc12101c..d79e88ff9 100644 --- a/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-manager-pull-telemetry.test.js.snap @@ -14,7 +14,11 @@ Arguments: "alpha" for Identity Cloud tenants, "/" otherwise.) username Username to login with. Must be an admin user with appropriate rights to manage authentication - journeys/trees. + journeys/trees. If given without a password, and it + matches the username already stored in the + connection profile for the target host, frodo uses + that profile's stored password instead of requiring + it on the command line. password Password. Deployment: Cloud-only diff --git a/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap new file mode 100644 index 000000000..d1b111f61 --- /dev/null +++ b/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap @@ -0,0 +1,57 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud": should fail to import otlp telemetry 1`] = ` +"A new version of frodo is available. +Please run 'frodo -v' for more details. +Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. +✔ Successfully read 1 telemetry exporter(s). +Error importing telemetry exporters + Error updating telemetry exporter + Network error: + URL: https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/datadog + Status: 409 + Code: ERR_BAD_REQUEST + Message: maximum number of exporters reached +" +`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud": should fail to import otlp telemetry 2`] = `1`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 1`] = `""`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 2`] = ` +"A new version of frodo is available. +Please run 'frodo -v' for more details. +Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. +✔ Successfully read 1 telemetry exporter(s). +Progress indicator 21cadce3-505d-4edb-967b-5339051be81f not found. +" +`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 1`] = ` +"A new version of frodo is available. +Please run 'frodo -v' for more details. +Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. +✔ Successfully read 1 telemetry exporter(s). +Error importing telemetry exporters + Error updating telemetry exporter + Network error: + URL: https://openam-frodo-dev.forgeblocks.com/environment/telemetry/splunk/frodo-test-splunk-1 + Status: 409 + Code: ERR_BAD_REQUEST + Message: maximum number of exporters reached +" +`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 2`] = `1`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should push telemetry to cloud 1`] = `""`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should push telemetry to cloud 2`] = ` +"A new version of frodo is available. +Please run 'frodo -v' for more details. +Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. +✔ Successfully read 1 telemetry exporter(s). +Progress indicator f34d3e8a-de5d-49c8-99df-2451d920f416 not found. +" +`; diff --git a/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap b/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap deleted file mode 100644 index 3b94d9c3b..000000000 --- a/test/e2e/__snapshots__/config-manager-push-telemetry.test.js.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/telemetry": should resolve header placeholders from process.env 1`] = `""`; - -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -N datadog -e test-value -D test/e2e/exports/fr-config-manager/telemetry": should resolve placeholders from the -e override 1`] = `""`; diff --git a/test/e2e/config-manager-push-telemetry.test.js b/test/e2e/config-manager-push-telemetry.e2e.test.js similarity index 55% rename from test/e2e/config-manager-push-telemetry.test.js rename to test/e2e/config-manager-push-telemetry.e2e.test.js index 64fd2bcbb..01427baff 100644 --- a/test/e2e/config-manager-push-telemetry.test.js +++ b/test/e2e/config-manager-push-telemetry.e2e.test.js @@ -47,39 +47,41 @@ */ /* -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp -N datadog -e test-value -D test/e2e/exports/fr-config-manager/cloud -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud */ - -import cp from 'child_process'; -import { promisify } from 'util'; -import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { getEnv, testFail, testSuccess } from './utils/TestUtils'; import { connection as c } from './utils/TestConfig'; -const exec = promisify(cp.exec); + process.env['FRODO_MOCK'] = '1'; process.env['FRODO_CONNECTION_PROFILES_PATH'] = './test/e2e/env/Connections.json'; const env = getEnv(c); -const telemetryDir = 'test/e2e/exports/fr-config-manager/telemetry'; +const telemetryDir = 'test/e2e/exports/fr-config-manager/cloud'; describe('frodo config-manager push telemetry', () => { - test(`"frodo config-manager push telemetry -D ${telemetryDir}": should resolve header placeholders from process.env`, async () => { - const CMD = `frodo config-manager push telemetry -D ${telemetryDir}`; - const { stdout } = await exec(CMD, { - env: { - ...env.env, - TELEMETRY_HEADER_OTLP_MYEXPORTER_AUTHORIZATION: 'Bearer test-value', - }, - }); - expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + test(`"frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}": should push telemetry to cloud`, async () => { + const CMD = `frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}`; + await testSuccess(CMD, env); }); - test(`"frodo config-manager push telemetry -c otlp -N datadog -e test-value -D ${telemetryDir}": should resolve placeholders from the -e override`, async () => { - const CMD = `frodo config-manager push telemetry -c otlp -N datadog -e "test-value" -D ${telemetryDir}`; - const { stdout } = await exec(CMD, env); - expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + test(`"frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D ${telemetryDir}": should fail to import otlp telemetry`, async () => { + const CMD = `frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D ${telemetryDir}`; + await testFail(CMD, env); }); + + test(`"frodo config-manager push telemetry -c splunk -n test -D ${telemetryDir}": should fail to import splunk telemetry`, async () => { + const CMD = `frodo config-manager push telemetry -c splunk -n test -D ${telemetryDir}`; + await testFail(CMD, env); + }); + + test(`"frodo config-manager push telemetry -c splunk -D ${telemetryDir}": should fail to import splunk telemetry`, async () => { + const CMD = `frodo config-manager push telemetry -c splunk -D ${telemetryDir}`; + await testSuccess(CMD, env); +}); }); \ No newline at end of file diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/test-otlp.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/test-otlp.json new file mode 100644 index 000000000..1d41cbe86 --- /dev/null +++ b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/test-otlp.json @@ -0,0 +1,14 @@ +{ + "encoding": "JSON", + "endpoint": "https://example-siem.com:4317", + "headers": { + "api-key": "${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY}", + "api-secret": "${TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET}" + }, + "id": "test-otlp", + "sources": [ + "am-activity", + "idm-activity" + ], + "type": "HTTP" +} diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/splunk/test.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/splunk/test.json new file mode 100644 index 000000000..eaaca30fe --- /dev/null +++ b/test/e2e/exports/fr-config-manager/cloud/telemetry/splunk/test.json @@ -0,0 +1,9 @@ +{ +"endpoint": "https://example.com:8088'", +"id": "frodo-test-splunk-1", +"index": "test", +"sources": [ +"am-access" +], +"token": "test" +} \ No newline at end of file diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har similarity index 68% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har index bb9427bec..d82b0a2a1 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_D/am", + "_recordingName": "config-manager/push/telemetry/0_c_D/am", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "accept-api-version", @@ -44,24 +44,24 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 392, + "headersSize": 385, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" }, "response": { - "bodySize": 614, + "bodySize": 636, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 614, - "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" }, "cookies": [], "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -89,7 +89,7 @@ }, { "name": "etag", - "value": "\"645264395\"" + "value": "" }, { "name": "expires", @@ -109,15 +109,15 @@ }, { "name": "content-length", - "value": "614" + "value": "636" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:32 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "strict-transport-security", @@ -129,21 +129,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 804, + "headersSize": 1175, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:32.852Z", - "time": 151, + "startedDateTime": "2026-08-19T21:44:34.958Z", + "time": 127, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 151 + "wait": 127 } }, { @@ -172,11 +172,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "accept-api-version", @@ -195,18 +195,18 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1963, + "headersSize": 1956, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" }, "response": { - "bodySize": 274, + "bodySize": 276, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 274, - "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" }, "cookies": [], "headers": [ @@ -216,7 +216,7 @@ }, { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -244,7 +244,7 @@ }, { "name": "etag", - "value": "\"-1986495916\"" + "value": "" }, { "name": "expires", @@ -260,15 +260,15 @@ }, { "name": "content-length", - "value": "274" + "value": "276" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:33 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "strict-transport-security", @@ -280,21 +280,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 806, + "headersSize": 1174, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.187Z", - "time": 119, + "startedDateTime": "2026-08-19T21:44:35.254Z", + "time": 98, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 119 + "wait": 98 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har new file mode 100644 index 000000000..ee7e42bb8 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har @@ -0,0 +1,241 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:44:35.358Z", + "time": 80, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 80 + } + }, + { + "_id": "361a73cfa53cdee343d74c3fbe3bd96a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 121, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "121" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1941, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"test\"}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/splunk/frodo-test-splunk-1" + }, + "response": { + "bodySize": 118, + "content": { + "mimeType": "application/json", + "size": 118, + "text": "{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "" + }, + { + "name": "content-length", + "value": "118" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 335, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:44:35.525Z", + "time": 439, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 439 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har similarity index 79% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har index 5caa58197..006528cb4 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_D/oauth2", + "_recordingName": "config-manager/push/telemetry/0_c_D/oauth2", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -12,7 +12,7 @@ "_order": 0, "cache": {}, "request": { - "bodySize": 1351, + "bodySize": 1349, "cookies": [], "headers": [ { @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "accept-api-version", @@ -37,7 +37,7 @@ }, { "name": "content-length", - "value": "1351" + "value": "1349" }, { "name": "accept-encoding", @@ -48,7 +48,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 447, + "headersSize": 440, "httpVersion": "HTTP/1.1", "method": "POST", "postData": { @@ -57,7 +57,7 @@ "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" }, "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" }, "response": { "bodySize": 1850, @@ -70,7 +70,7 @@ "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self'" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" }, { "name": "content-security-policy-report-only", @@ -98,11 +98,11 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:33 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "strict-transport-security", @@ -114,21 +114,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 581, + "headersSize": 951, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.017Z", - "time": 165, + "startedDateTime": "2026-08-19T21:44:35.099Z", + "time": 149, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 165 + "wait": 149 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har similarity index 59% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har index 34e6a8c27..0fc6d315d 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_D/openidm", + "_recordingName": "config-manager/push/telemetry/0_c_D/openidm", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "authorization", @@ -44,7 +44,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -53,20 +53,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:33 GMT" + "value": "" }, { "name": "vary", @@ -94,7 +94,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -114,11 +114,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "strict-transport-security", @@ -130,21 +130,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 657, + "headersSize": 683, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.227Z", - "time": 188, + "startedDateTime": "2026-08-19T21:44:35.317Z", + "time": 192, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 188 + "wait": 192 } }, { @@ -173,11 +173,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "authorization", @@ -192,7 +192,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -201,20 +201,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:33 GMT" + "value": "" }, { "name": "vary", @@ -242,7 +242,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -262,11 +262,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-193ddd50-a260-456b-bfe5-77240e901708" + "value": "" }, { "name": "strict-transport-security", @@ -278,21 +278,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 657, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.419Z", - "time": 109, + "startedDateTime": "2026-08-19T21:44:35.445Z", + "time": 73, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 109 + "wait": 73 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har new file mode 100644 index 000000000..2cfdd1a3f --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_n_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.506Z", + "time": 130, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 130 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 276, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1174, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.797Z", + "time": 84, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 84 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har new file mode 100644 index 000000000..31c8f6af2 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har @@ -0,0 +1,241 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_n_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.888Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + }, + { + "_id": "361a73cfa53cdee343d74c3fbe3bd96a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 121, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "121" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1941, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"test\"}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/splunk/frodo-test-splunk-1" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json", + "size": 61, + "text": "{\"code\":409,\"message\":\"maximum number of exporters reached\"}" + }, + "cookies": [], + "headers": [ + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "date", + "value": "" + }, + { + "name": "content-length", + "value": "61" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 334, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2026-08-19T21:16:19.051Z", + "time": 351, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 351 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har new file mode 100644 index 000000000..d2abb6886 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_n_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 951, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.651Z", + "time": 139, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 139 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har new file mode 100644 index 000000000..808cc8d04 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_n_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.859Z", + "time": 168, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 168 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:18.965Z", + "time": 79, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 79 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har new file mode 100644 index 000000000..a31a51897 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1175, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:00.124Z", + "time": 123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 123 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 276, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1174, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:16:00.443Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har similarity index 83% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har index 3fcf6af47..f283a6bde 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/environment", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/environment", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,7 +25,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -44,11 +44,11 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1914, + "headersSize": 1907, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" }, "response": { "bodySize": 1991, @@ -73,15 +73,15 @@ }, { "name": "etag", - "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + "value": "" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:08 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "74908d5a-be86-44ce-8f5c-0bfa5ba22644" + "value": "" }, { "name": "strict-transport-security", @@ -93,11 +93,11 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], "headersSize": 388, @@ -106,8 +106,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.845Z", - "time": 111, + "startedDateTime": "2026-08-19T21:16:00.551Z", + "time": 78, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 111 + "wait": 78 } }, { @@ -136,7 +136,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -159,7 +159,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1934, + "headersSize": 1927, "httpVersion": "HTTP/1.1", "method": "PUT", "postData": { @@ -168,14 +168,14 @@ "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"test-value\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" }, "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry/otlp/datadog" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/datadog" }, "response": { - "bodySize": 171, + "bodySize": 61, "content": { "mimeType": "application/json", - "size": 171, - "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + "size": 61, + "text": "{\"code\":409,\"message\":\"maximum number of exporters reached\"}" }, "cookies": [], "headers": [ @@ -189,15 +189,15 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:09 GMT" + "value": "" }, { "name": "content-length", - "value": "171" + "value": "61" }, { "name": "x-forgerock-transactionid", - "value": "ac36e09b-e70c-4aca-954d-cd50cb471329" + "value": "" }, { "name": "strict-transport-security", @@ -209,21 +209,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 335, + "headersSize": 334, "httpVersion": "HTTP/1.1", "redirectURL": "", - "status": 200, - "statusText": "OK" + "status": 409, + "statusText": "Conflict" }, - "startedDateTime": "2026-07-08T18:51:09.082Z", - "time": 604, + "startedDateTime": "2026-08-19T21:16:00.713Z", + "time": 1383, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 604 + "wait": 1383 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har similarity index 79% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har index ec40448a5..8ec01ab5b 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/oauth2", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/oauth2", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -12,7 +12,7 @@ "_order": 0, "cache": {}, "request": { - "bodySize": 1351, + "bodySize": 1349, "cookies": [], "headers": [ { @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "accept-api-version", @@ -37,7 +37,7 @@ }, { "name": "content-length", - "value": "1351" + "value": "1349" }, { "name": "accept-encoding", @@ -48,7 +48,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 447, + "headersSize": 440, "httpVersion": "HTTP/1.1", "method": "POST", "postData": { @@ -57,7 +57,7 @@ "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" }, "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/oauth2/access_token" + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" }, "response": { "bodySize": 1850, @@ -70,7 +70,7 @@ "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self'" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" }, { "name": "content-security-policy-report-only", @@ -98,11 +98,11 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:08 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "strict-transport-security", @@ -114,21 +114,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 556, + "headersSize": 951, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.512Z", - "time": 195, + "startedDateTime": "2026-08-19T21:16:00.261Z", + "time": 175, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 195 + "wait": 175 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har similarity index 59% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har index 362d339a0..d96df2229 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/openidm", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/openidm", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "authorization", @@ -44,7 +44,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -53,20 +53,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:08 GMT" + "value": "" }, { "name": "vary", @@ -94,7 +94,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -114,11 +114,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "strict-transport-security", @@ -130,21 +130,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 657, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.754Z", - "time": 194, + "startedDateTime": "2026-08-19T21:16:00.503Z", + "time": 164, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 194 + "wait": 164 } }, { @@ -173,11 +173,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "authorization", @@ -192,7 +192,7 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1975, + "headersSize": 1968, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [ @@ -201,20 +201,20 @@ "value": "*" } ], - "url": "https://openam-trivir-demo.forgeblocks.com/openidm/managed/svcacct/f15311f9-9023-41f4-aed5-23300a504938?_fields=%2A" + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" }, "response": { - "bodySize": 1392, + "bodySize": 1394, "content": { "mimeType": "application/json;charset=utf-8", - "size": 1392, - "text": "{\"_id\":\"f15311f9-9023-41f4-aed5-23300a504938\",\"_rev\":\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1782322093573\",\"description\":\"dsevy@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"ykb5BXjIlYbS1Si1ttIbQa0cKJDdpFbR-vPoMIWAi4I\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"qAUcPTuPGu9bsW3itRmJxzz_bzqOdFPL4QGItaiMVyabnDbqI2A_mk0y8ieY8pNMlt6glmhve9kp00tbRZKIXaM6SXtHJy03WMfBaQKjGn1QbGxm4jod0AunIxXu4Wafl7BddOj8-kKOPDWHyKu7zrPQ2lzYgy-ItJApGWGiEpPmsor4irQWcUhc5eu-dyLbNU34A0_4J7IhzWxTmJfVuLQS2z07d1z4GrO5nYqKe1v3BSoGEB9DylTpDhwqjv_JuC5Oc9eggu7Z2oUHQ30NWSUrdRpPit2IGnv9yFpeOWmQOPTQOXk9_0Tf11xVU3Q-hJchbztybIa5OcPtZQFu_tRLBHQ09POnX3QIKRONKIZFwWXU2bcbz0fOkQMV2-x0OwEjnSt34VnYjHEqS8sdsv7lVD2w1oxak2TtQc12Uii8_PewOMuJh4Xoy1FQn-hJJSeI-4B9V_2T_0zTCbdrHOqQqGLReAZWNcjlTEY_JZKXaGY-1Imx7d5BJX-SYl3OpmMMVstqDH9AX6lrbHcMjfK7SF9XlB537akGdGGucqzCP8q3iuJx4o-dFojdNuOedpEUoYcWHBtxmqXemhFirOuhtX_CTrM_tg38epHi8l0fFazM4Dkczz5SjlLfvBghhqkMPvMT0VnwhdMRzIXyT442hol6jCd4frxJC1G26g8\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:09 GMT" + "value": "" }, { "name": "vary", @@ -242,7 +242,7 @@ }, { "name": "etag", - "value": "\"af2df7b8-1790-4a57-9257-48d08f3328e4-4790\"" + "value": "" }, { "name": "expires", @@ -262,11 +262,11 @@ }, { "name": "content-length", - "value": "1392" + "value": "1394" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "strict-transport-security", @@ -278,21 +278,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 657, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.963Z", - "time": 108, + "startedDateTime": "2026-08-19T21:16:00.635Z", + "time": 72, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 108 + "wait": 72 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har similarity index 68% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har index 75fada3db..59fb3ade6 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_N_e_D_3815318455/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_N_e_D/am", + "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/am", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,11 +25,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "accept-api-version", @@ -44,24 +44,24 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 392, + "headersSize": 385, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/*" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" }, "response": { - "bodySize": 614, + "bodySize": 636, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 614, - "text": "{\"_id\":\"*\",\"_rev\":\"645264395\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"2f1378809259351\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":false}" + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" }, "cookies": [], "headers": [ { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -89,7 +89,7 @@ }, { "name": "etag", - "value": "\"645264395\"" + "value": "" }, { "name": "expires", @@ -109,15 +109,15 @@ }, { "name": "content-length", - "value": "614" + "value": "636" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:08 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "strict-transport-security", @@ -129,21 +129,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 779, + "headersSize": 1175, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.164Z", - "time": 335, + "startedDateTime": "2026-08-19T21:15:21.089Z", + "time": 248, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 335 + "wait": 248 } }, { @@ -172,11 +172,11 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "accept-api-version", @@ -195,18 +195,18 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1963, + "headersSize": 1956, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/am/json/serverinfo/version" + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" }, "response": { - "bodySize": 274, + "bodySize": 276, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 274, - "text": "{\"_id\":\"version\",\"_rev\":\"-1986495916\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build c6c99b2f35d4d905937aeef7e7b8426bf5d8e820 (2026-June-12 09:10)\",\"revision\":\"c6c99b2f35d4d905937aeef7e7b8426bf5d8e820\",\"date\":\"2026-June-12 09:10\"}" + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" }, "cookies": [], "headers": [ @@ -216,7 +216,7 @@ }, { "name": "content-security-policy", - "value": "frame-ancestors 'self', default-src 'none';frame-ancestors 'none';sandbox" + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" }, { "name": "content-security-policy-report-only", @@ -244,7 +244,7 @@ }, { "name": "etag", - "value": "\"-1986495916\"" + "value": "" }, { "name": "expires", @@ -260,15 +260,15 @@ }, { "name": "content-length", - "value": "274" + "value": "276" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:51:08 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "frodo-b242cea0-041e-4eaf-8aaf-9cf66c20a1af" + "value": "" }, { "name": "strict-transport-security", @@ -280,21 +280,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 781, + "headersSize": 1174, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:51:08.713Z", - "time": 126, + "startedDateTime": "2026-08-19T21:15:21.543Z", + "time": 92, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 126 + "wait": 92 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har similarity index 81% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har index c896ff7f6..4db8b0c34 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_D/environment", + "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/environment", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,7 +25,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -44,11 +44,11 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1914, + "headersSize": 1907, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/scopes/service-accounts" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" }, "response": { "bodySize": 1991, @@ -73,15 +73,15 @@ }, { "name": "etag", - "value": "W/\"7c7-t9cH5tToABi5gG7VpxSZQdhWOW0\"" + "value": "" }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:33 GMT" + "value": "" }, { "name": "x-forgerock-transactionid", - "value": "2dd7e8f2-ec2b-4c1f-b4df-ebed6ebe5326" + "value": "" }, { "name": "strict-transport-security", @@ -93,21 +93,21 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + "value": "" } ], - "headersSize": 413, + "headersSize": 388, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.312Z", - "time": 102, + "startedDateTime": "2026-08-19T21:15:21.641Z", + "time": 81, "timings": { "blocked": -1, "connect": -1, @@ -115,15 +115,15 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 102 + "wait": 81 } }, { - "_id": "8fa5c3016197480d45c0cd23a469aac8", + "_id": "b7bd49f37f88d137b4d1bb25e25661cc", "_order": 0, "cache": {}, "request": { - "bodySize": 180, + "bodySize": 195, "cookies": [], "headers": [ { @@ -136,7 +136,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/4.0.0-43" + "value": "" }, { "name": "accept-api-version", @@ -148,7 +148,7 @@ }, { "name": "content-length", - "value": "180" + "value": "195" }, { "name": "accept-encoding", @@ -159,23 +159,23 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1934, + "headersSize": 1929, "httpVersion": "HTTP/1.1", "method": "PUT", "postData": { "mimeType": "application/json", "params": [], - "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"test-value\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + "text": "{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"test-value\",\"api-secret\":\"test-value\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" }, "queryString": [], - "url": "https://openam-trivir-demo.forgeblocks.com/environment/telemetry/otlp/datadog" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/test-otlp" }, "response": { - "bodySize": 171, + "bodySize": 176, "content": { "mimeType": "application/json", - "size": 171, - "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + "size": 176, + "text": "{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"\",\"api-secret\":\"\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" }, "cookies": [], "headers": [ @@ -189,15 +189,15 @@ }, { "name": "date", - "value": "Wed, 08 Jul 2026 18:54:34 GMT" + "value": "" }, { "name": "content-length", - "value": "171" + "value": "176" }, { "name": "x-forgerock-transactionid", - "value": "0285c614-b084-4f0e-a7ce-1931effe8f0d" + "value": "" }, { "name": "strict-transport-security", @@ -209,11 +209,11 @@ }, { "name": "via", - "value": "1.1 google" + "value": "" }, { "name": "alt-svc", - "value": "h3=\":443\"; ma=2592000" + "value": "" } ], "headersSize": 335, @@ -222,8 +222,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-07-08T18:54:33.535Z", - "time": 623, + "startedDateTime": "2026-08-19T21:15:21.810Z", + "time": 1347, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 623 + "wait": 1347 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har new file mode 100644 index 000000000..092f37b35 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 951, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:15:21.351Z", + "time": 186, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 186 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har new file mode 100644 index 000000000..31db5048c --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:15:21.609Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-19T21:15:21.728Z", + "time": 74, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 74 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/tmp.txt b/tmp.txt new file mode 100644 index 000000000..ae114fc93 --- /dev/null +++ b/tmp.txt @@ -0,0 +1,12 @@ +curl -o delete-test.json --fail-with-body \ + --request GET \ + "https://openam-frodo-dev.forgeblocks.com/environment/telemetry" \ + --header "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..sbKzfonbP63jakHaXfwDBQ.UWfosHu3UIcyk89BJPFHFLsT7wtHyxE2poRfAXarCqijqR14J0tp-eWHrfDfQcMSKTvnhiqGg49iYZ_B0AsvQGN1muyqR6yucFH9DKUYTTzd4i0I_ML72U44vC3n_xMhKhQ7OPOF17fg5nalJmn18YIl93FdTdwdh6CgC8ppYQgoLxahaGrFRi8aXMly5IAjZ8kZZ2AtHERNiO9bfcfZPrMNnmDYh6f_qcWKBlP0J03ntR9xfwlv6BzQyuwLNTIblwbnMfnXCpMC1rR81ywQEYM7rRf6h1NgYO1ZLG0qrRfAVy5bR7CywrgRb34Xe8OH9Rb0Xhyx6m18xpaPdUBFH_CaY0kgWo5cVA5HhmY-RtzZZnGfl8R_Rt7hXywBi9_6qCPGJul9NXOZs0tT-cR_R36pmulIp_VveLZqMEaYZIqmeBrqNWY5Z__ZyW9Y1lclvOsFV1AnwJQ03sL37EFizLNq7eXw6rEXHpOUtiHTiOS51svdfOJvMU-NCyzCOJ1CLvCRjJqDoR38fX2p83pSf4QN91hg2I21V09y7MgCLy4BExNbPlZWLYYrpBD8ZpTbKpCoSRAXP1hsSsUPRjI75aAJB60FiN9o8Pr2Wjkolj0XcatQjTfDCXHCgc3CTgxWXBZ6g72-b0UH77AowGZDXZzSHeCQ3R0mMe8SeMnJrfxrrlXdku_niZd-JH7yyF9SQdgCKjhRKMGtTx6YYQ_-_DsJBJpwMvTPbMniJBA6noLpKb3P3qHDavbeECk_QGjvqgBdRUDe-rUiK-R7Y2zSU3UY5h-AXK-4uc-l826_nszYuMVs7JyQ9qCPZdBNf4tY1JhVCO2im5d87guUVSmLPFS4CACYW7xQcE-UEPf1GsHDPfvAjUoBJWRbtygvQf_KgYVD0gHpU2nBst5N-mTr7c_2HMMs5akLueZw9kYSom-3HqMOHNwkRKDjbgrQZH4TYsWdN6qdv9aCz8QGMMJHpXSeEz7jrQrITerwd6GxXiTr5H95AaYjqnKPzVK3b8JAjZqtuFNzgdFqGU2nDhI9npHw2UmhqePRQVx7s9_TXXlJJPNRlW2pyKH2LsqpNQ0abIYV7N_vnDUM__LCQ-caTbH-hfOe7BfpwLh4VeTo0YSq7qRzgUq7OrLazidobzOrliSjHolqFq-h4eer_218Xubwqq4L8VkRr-X5YAp5PqzZeuWojVAZ5oLLuww4OI1UW1nuqQu7KZUxAgO_EoGrXbx5OpBGknNQpT5T5zo8Z9PuJOnCpn8f16YNoq3Et6wuyf-O_xDxEuvChVhhgo3L4ii_py7_Hah2M7NlXNxZkwDsH5rH3v-pRIp5PHrP37ILU6U0W4TPKzwRE-7sKeQkuXdBRT-JduWq3m4EUrXxLcfh4mKEjhPPP6utZNOUXEekK33ZnL-7SX_Tvy5PdBH-wQ.Ne45IjWCJaL4wkCN4vgGhg" + --header "Content-Type: application/json" | + jq + +curl -o delete-test.json --fail-with-body \ + --request DELETE \ + "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/test-otlp" \ + --header "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..sbKzfonbP63jakHaXfwDBQ.UWfosHu3UIcyk89BJPFHFLsT7wtHyxE2poRfAXarCqijqR14J0tp-eWHrfDfQcMSKTvnhiqGg49iYZ_B0AsvQGN1muyqR6yucFH9DKUYTTzd4i0I_ML72U44vC3n_xMhKhQ7OPOF17fg5nalJmn18YIl93FdTdwdh6CgC8ppYQgoLxahaGrFRi8aXMly5IAjZ8kZZ2AtHERNiO9bfcfZPrMNnmDYh6f_qcWKBlP0J03ntR9xfwlv6BzQyuwLNTIblwbnMfnXCpMC1rR81ywQEYM7rRf6h1NgYO1ZLG0qrRfAVy5bR7CywrgRb34Xe8OH9Rb0Xhyx6m18xpaPdUBFH_CaY0kgWo5cVA5HhmY-RtzZZnGfl8R_Rt7hXywBi9_6qCPGJul9NXOZs0tT-cR_R36pmulIp_VveLZqMEaYZIqmeBrqNWY5Z__ZyW9Y1lclvOsFV1AnwJQ03sL37EFizLNq7eXw6rEXHpOUtiHTiOS51svdfOJvMU-NCyzCOJ1CLvCRjJqDoR38fX2p83pSf4QN91hg2I21V09y7MgCLy4BExNbPlZWLYYrpBD8ZpTbKpCoSRAXP1hsSsUPRjI75aAJB60FiN9o8Pr2Wjkolj0XcatQjTfDCXHCgc3CTgxWXBZ6g72-b0UH77AowGZDXZzSHeCQ3R0mMe8SeMnJrfxrrlXdku_niZd-JH7yyF9SQdgCKjhRKMGtTx6YYQ_-_DsJBJpwMvTPbMniJBA6noLpKb3P3qHDavbeECk_QGjvqgBdRUDe-rUiK-R7Y2zSU3UY5h-AXK-4uc-l826_nszYuMVs7JyQ9qCPZdBNf4tY1JhVCO2im5d87guUVSmLPFS4CACYW7xQcE-UEPf1GsHDPfvAjUoBJWRbtygvQf_KgYVD0gHpU2nBst5N-mTr7c_2HMMs5akLueZw9kYSom-3HqMOHNwkRKDjbgrQZH4TYsWdN6qdv9aCz8QGMMJHpXSeEz7jrQrITerwd6GxXiTr5H95AaYjqnKPzVK3b8JAjZqtuFNzgdFqGU2nDhI9npHw2UmhqePRQVx7s9_TXXlJJPNRlW2pyKH2LsqpNQ0abIYV7N_vnDUM__LCQ-caTbH-hfOe7BfpwLh4VeTo0YSq7qRzgUq7OrLazidobzOrliSjHolqFq-h4eer_218Xubwqq4L8VkRr-X5YAp5PqzZeuWojVAZ5oLLuww4OI1UW1nuqQu7KZUxAgO_EoGrXbx5OpBGknNQpT5T5zo8Z9PuJOnCpn8f16YNoq3Et6wuyf-O_xDxEuvChVhhgo3L4ii_py7_Hah2M7NlXNxZkwDsH5rH3v-pRIp5PHrP37ILU6U0W4TPKzwRE-7sKeQkuXdBRT-JduWq3m4EUrXxLcfh4mKEjhPPP6utZNOUXEekK33ZnL-7SX_Tvy5PdBH-wQ.Ne45IjWCJaL4wkCN4vgGhg" | + jq \ No newline at end of file From b36d21429dfb2cafa035a42a4dc08487e1020f2d Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Thu, 20 Aug 2026 09:56:26 -0600 Subject: [PATCH 09/10] iwp --- src/configManagerOps/FrConfigTelemetryOps.ts | 100 ++++++++++++++++++- 1 file changed, 97 insertions(+), 3 deletions(-) diff --git a/src/configManagerOps/FrConfigTelemetryOps.ts b/src/configManagerOps/FrConfigTelemetryOps.ts index 4ebc229a1..8ed7e2b66 100644 --- a/src/configManagerOps/FrConfigTelemetryOps.ts +++ b/src/configManagerOps/FrConfigTelemetryOps.ts @@ -1,10 +1,12 @@ import { frodo } from '@rockcarver/frodo-lib'; import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; -import { printError } from '../utils/Console'; +import { createProgressIndicator, printError, stopProgressIndicator } from '../utils/Console'; +import { TelemetryExportInterface} from '@rockcarver/frodo-lib/types/ops/cloud/TelemetryOps'; +import fs from 'fs' -const { saveJsonToFile, getFilePath } = frodo.utils; -const { exportTelemetry } = frodo.cloud.telemetry; +const { saveJsonToFile, getFilePath, readJsonFile } = frodo.utils; +const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; /** * Exports telemetry configuration in config manager format @@ -45,3 +47,95 @@ export async function configManagerExportTelemetry( } return false; } + +export async function configManagerImportTelemetry( + category?: TelemetryExporterCategory, + name?: string +): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + 0, + `Reading telemetry exporters...` + ); + let indicatorId: string; + try { + const telemetryDir = getFilePath('telemetry'); + + if (!fs.existsSync(telemetryDir)) { + stopProgressIndicator( + spinnerId, + 'No telemetry exporters found to import', + 'fail' + ); + return true; + } + + const categories = fs + .readdirSync(telemetryDir, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => entry.name as TelemetryExporterCategory) + .filter((cat) => !category || cat === category); + + const importData: TelemetryExportInterface = { + telemetry: Object.fromEntries( + categories.map((cat) => [cat, []]) + ) as TelemetryExportInterface['telemetry'], + }; + + let exportCounter = 0; + + for (const cat of categories) { + const catDir = getFilePath(`telemetry/${cat}`); + if (!fs.existsSync(catDir)) { + continue; + } + const files = fs + .readdirSync(catDir) + .filter((f) => f.toLowerCase().endsWith('.json')) + .filter((f) => !name || f === `${name}.json`); + for (const file of files) { + const filePath = `${catDir}/${file}`; + const provider = readJsonFile(filePath) as any; + importData.telemetry[cat].push(provider); + exportCounter++; + } + } + if (exportCounter === 0) { + stopProgressIndicator( + spinnerId, + name + ? `No matching telemetry exporter found for ${name}` + : 'No telemetry exporters found to import', + 'fail' + ); + indicatorId = undefined; + return true; + } + + stopProgressIndicator( + spinnerId, + `Successfully read ${exportCounter} telemetry exporter(s).`, + 'success' + ); + indicatorId = undefined; + + indicatorId = createProgressIndicator( + 'indeterminate', + 0, + 'Importing telemetry exporters...' + ); + + await importTelemetry(importData); + + stopProgressIndicator( + spinnerId, + `Successfully read ${exportCounter} telemetry exporter(s).`, + 'success' + ); + + return true; + } catch (error) { + printError(error); + return false; + } +} From 43d75b7b0c3a349a302c45dcdb2e3b3cedfda88b Mon Sep 17 00:00:00 2001 From: Dallin Sevy Date: Thu, 20 Aug 2026 14:01:24 -0600 Subject: [PATCH 10/10] fixup! resolve PR comments. update tests --- .../config-manager-pull-telemetry.ts | 2 +- .../config-manager-push-telemetry.ts | 20 +- src/configManagerOps/FrConfigTelemetry.ts | 145 -------- src/configManagerOps/FrConfigTelemetryOps.ts | 44 +-- ...ig-manager-push-telemetry.e2e.test.js.snap | 49 ++- .../config-manager-push-telemetry.e2e.test.js | 35 +- .../cloud/telemetry/otlp/datadog.json | 13 - .../am_1076162899/recording.har | 312 ++++++++++++++++++ .../environment_1072573434/recording.har | 125 +++++++ .../oauth2_393036114/recording.har | 10 +- .../openidm_3290118515/recording.har | 18 +- .../am_1076162899/recording.har | 16 +- .../environment_1072573434/recording.har | 16 +- .../oauth2_393036114/recording.har | 8 +- .../openidm_3290118515/recording.har | 14 +- .../am_1076162899/recording.har | 14 +- .../environment_1072573434/recording.har | 40 +-- .../oauth2_393036114/recording.har | 8 +- .../openidm_3290118515/recording.har | 14 +- .../am_1076162899/recording.har | 14 +- .../environment_1072573434/recording.har | 14 +- .../oauth2_393036114/recording.har | 8 +- .../openidm_3290118515/recording.har | 14 +- .../am_1076162899/recording.har | 12 +- .../environment_1072573434/recording.har | 30 +- .../oauth2_393036114/recording.har | 146 ++++++++ .../openidm_3290118515/recording.har | 310 +++++++++++++++++ 27 files changed, 1097 insertions(+), 354 deletions(-) delete mode 100644 src/configManagerOps/FrConfigTelemetry.ts delete mode 100644 test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_n_E_E_D_892394825 => 0_D_2157136892}/oauth2_393036114/recording.har (96%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_E_D_600140151 => 0_D_2157136892}/openidm_3290118515/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_n_E_E_D_892394825 => 0_c_env_env_D_4183115610}/am_1076162899/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_E_D_600140151 => 0_c_env_env_D_4183115610}/environment_1072573434/recording.har (88%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_D_2934808319 => 0_c_env_env_D_4183115610}/oauth2_393036114/recording.har (96%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_D_2934808319 => 0_c_env_env_D_4183115610}/openidm_3290118515/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_E_D_600140151 => 0_c_n_E_E_D_2883341119}/am_1076162899/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_n_E_E_D_892394825 => 0_c_n_E_E_D_2883341119}/environment_1072573434/recording.har (96%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_E_D_600140151 => 0_c_n_E_E_D_2883341119}/oauth2_393036114/recording.har (96%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_n_E_E_D_892394825 => 0_c_n_E_E_D_2883341119}/openidm_3290118515/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_D_2934808319 => 0_c_name_D_712843954}/am_1076162899/recording.har (97%) rename test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/{0_c_n_D_2934808319 => 0_c_name_D_712843954}/environment_1072573434/recording.har (92%) create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/openidm_3290118515/recording.har diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts index d2a1de5a7..63dca5a87 100644 --- a/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull-telemetry.ts @@ -1,6 +1,6 @@ import { frodo } from '@rockcarver/frodo-lib'; -import { configManagerExportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; +import { configManagerExportTelemetry } from '../../../configManagerOps/FrConfigTelemetryOps'; import { getTokens } from '../../../ops/AuthenticateOps'; import { verboseMessage } from '../../../utils/Console'; import { FrodoCommand } from '../../FrodoCommand'; diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts index ee9cbc067..53f35eff9 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push-telemetry.ts @@ -1,17 +1,13 @@ import { frodo } from '@rockcarver/frodo-lib'; -import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetry'; +import { configManagerImportTelemetry } from '../../../configManagerOps/FrConfigTelemetryOps'; import { getTokens } from '../../../ops/AuthenticateOps'; -import { verboseMessage } from '../../../utils/Console'; +import { printMessage, verboseMessage } from '../../../utils/Console'; import { FrodoCommand } from '../../FrodoCommand'; -const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = - frodo.utils.constants; +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; -const deploymentTypes = [ - CLOUD_DEPLOYMENT_TYPE_KEY, - FORGEOPS_DEPLOYMENT_TYPE_KEY, -]; +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; export default function setup() { const program = new FrodoCommand( @@ -38,6 +34,14 @@ export default function setup() { options, command ); + if (options.name && !options.category) { + printMessage( + 'Named telemetry config requires category (e.g. --category otlp)', + 'error' + ); + process.exitCode = 1; + program.help(); + } const getTokensIsSuccessful = await getTokens( false, diff --git a/src/configManagerOps/FrConfigTelemetry.ts b/src/configManagerOps/FrConfigTelemetry.ts deleted file mode 100644 index 8777c76cf..000000000 --- a/src/configManagerOps/FrConfigTelemetry.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { frodo } from '@rockcarver/frodo-lib'; -import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; -import { TelemetryExportInterface } from '@rockcarver/frodo-lib/types/ops/cloud/TelemetryOps'; -import fs from 'fs'; - -import { - createProgressIndicator, - printError, - stopProgressIndicator, -} from '../utils/Console'; - -const { saveJsonToFile, getFilePath, readJsonFile } = frodo.utils; -const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; - -/** - * Exports telemetry configuration in config manager format - * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. - * @param {string} name optional parameter to export telemetry config by name. - * @returns { Promise } returns true if telemetry was successfully exported - */ -export async function configManagerExportTelemetry( - category?: TelemetryExporterCategory, - name?: string -): Promise { - try { - const exporters = await exportTelemetry(name, category); - - for (const [cat, providers] of Object.entries(exporters.telemetry)) { - for (const provider of providers) { - const exportProvider = provider as any; - if (exportProvider.headers) { - const placeholders: Record = {}; - Object.keys(exportProvider.headers).forEach((headerName) => { - placeholders[headerName] = - `\${TELEMETRY_HEADER_${cat}_${provider.id}_${headerName}}` - .replaceAll('-', '_') - .toUpperCase(); - }); - exportProvider.headers = placeholders; - } - saveJsonToFile( - exportProvider, - getFilePath(`telemetry/${cat}/${provider.id}.json`, true), - false - ); - } - } - return true; - } catch (e) { - printError(e); - } - return false; -} - -export async function configManagerImportTelemetry( - category?: TelemetryExporterCategory, - name?: string -): Promise { - const spinnerId = createProgressIndicator( - 'indeterminate', - 0, - `Reading telemetry exporters...` - ); - let indicatorId: string; - try { - const telemetryDir = getFilePath('telemetry'); - - if (!fs.existsSync(telemetryDir)) { - stopProgressIndicator( - spinnerId, - 'No telemetry exporters found to import', - 'fail' - ); - return true; - } - - const categories = fs - .readdirSync(telemetryDir, { withFileTypes: true }) - .filter((entry) => entry.isDirectory()) - .map((entry) => entry.name as TelemetryExporterCategory) - .filter((cat) => !category || cat === category); - - const importData: TelemetryExportInterface = { - telemetry: Object.fromEntries( - categories.map((cat) => [cat, []]) - ) as TelemetryExportInterface['telemetry'], - }; - - let exportCounter = 0; - - for (const cat of categories) { - const catDir = getFilePath(`telemetry/${cat}`); - if (!fs.existsSync(catDir)) { - continue; - } - const files = fs - .readdirSync(catDir) - .filter((f) => f.toLowerCase().endsWith('.json')) - .filter((f) => !name || f === `${name}.json`); - for (const file of files) { - const filePath = `${catDir}/${file}`; - const provider = readJsonFile(filePath) as any; - importData.telemetry[cat].push(provider); - exportCounter++; - } - } - if (exportCounter === 0) { - stopProgressIndicator( - spinnerId, - name - ? `No matching telemetry exporter found for ${name}` - : 'No telemetry exporters found to import', - 'fail' - ); - indicatorId = undefined; - return true; - } - - stopProgressIndicator( - spinnerId, - `Successfully read ${exportCounter} telemetry exporter(s).`, - 'success' - ); - indicatorId = undefined; - - indicatorId = createProgressIndicator( - 'indeterminate', - 0, - 'Importing telemetry exporters...' - ); - - await importTelemetry(importData); - - stopProgressIndicator( - spinnerId, - `Successfully read ${exportCounter} telemetry exporter(s).`, - 'success' - ); - - return true; - } catch (error) { - printError(error); - return false; - } -} diff --git a/src/configManagerOps/FrConfigTelemetryOps.ts b/src/configManagerOps/FrConfigTelemetryOps.ts index 8ed7e2b66..0688d4f5c 100644 --- a/src/configManagerOps/FrConfigTelemetryOps.ts +++ b/src/configManagerOps/FrConfigTelemetryOps.ts @@ -1,9 +1,13 @@ import { frodo } from '@rockcarver/frodo-lib'; import { TelemetryExporterCategory } from '@rockcarver/frodo-lib/types/api/cloud/TelemetryApi'; +import { TelemetryExportInterface } from '@rockcarver/frodo-lib/types/ops/cloud/TelemetryOps'; +import fs from 'fs'; -import { createProgressIndicator, printError, stopProgressIndicator } from '../utils/Console'; -import { TelemetryExportInterface} from '@rockcarver/frodo-lib/types/ops/cloud/TelemetryOps'; -import fs from 'fs' +import { + createProgressIndicator, + printError, + stopProgressIndicator, +} from '../utils/Console'; const { saveJsonToFile, getFilePath, readJsonFile } = frodo.utils; const { exportTelemetry, importTelemetry } = frodo.cloud.telemetry; @@ -48,6 +52,12 @@ export async function configManagerExportTelemetry( return false; } +/** + * Imports telemetry configuration in config manager format + * @param {TelemetryExporterCategory} category optional paremeter to export specific telemetry. + * @param {string} name optional parameter to export telemetry config by name. + * @returns { Promise } returns true if telemetry was successfully imported + */ export async function configManagerImportTelemetry( category?: TelemetryExporterCategory, name?: string @@ -57,7 +67,7 @@ export async function configManagerImportTelemetry( 0, `Reading telemetry exporters...` ); - let indicatorId: string; + try { const telemetryDir = getFilePath('telemetry'); @@ -67,7 +77,7 @@ export async function configManagerImportTelemetry( 'No telemetry exporters found to import', 'fail' ); - return true; + return false; } const categories = fs @@ -76,11 +86,9 @@ export async function configManagerImportTelemetry( .map((entry) => entry.name as TelemetryExporterCategory) .filter((cat) => !category || cat === category); - const importData: TelemetryExportInterface = { - telemetry: Object.fromEntries( - categories.map((cat) => [cat, []]) - ) as TelemetryExportInterface['telemetry'], - }; + const importData = { + telemetry: Object.fromEntries(categories.map((cat) => [cat, []])), + } as TelemetryExportInterface; let exportCounter = 0; @@ -108,8 +116,7 @@ export async function configManagerImportTelemetry( : 'No telemetry exporters found to import', 'fail' ); - indicatorId = undefined; - return true; + return false; } stopProgressIndicator( @@ -117,25 +124,18 @@ export async function configManagerImportTelemetry( `Successfully read ${exportCounter} telemetry exporter(s).`, 'success' ); - indicatorId = undefined; - indicatorId = createProgressIndicator( - 'indeterminate', - 0, - 'Importing telemetry exporters...' - ); - await importTelemetry(importData); - + stopProgressIndicator( spinnerId, - `Successfully read ${exportCounter} telemetry exporter(s).`, + `Successfully imported ${exportCounter} telemetry exporter(s).`, 'success' ); return true; } catch (error) { - printError(error); + printError(error, 'Error importing telemetry configuration'); return false; } } diff --git a/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap index d1b111f61..8f259bc93 100644 --- a/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-manager-push-telemetry.e2e.test.js.snap @@ -1,57 +1,56 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud": should fail to import otlp telemetry 1`] = ` +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/cloud": should fail to import all telemetry config 1`] = ` "A new version of frodo is available. Please run 'frodo -v' for more details. Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. -✔ Successfully read 1 telemetry exporter(s). -Error importing telemetry exporters - Error updating telemetry exporter - Network error: - URL: https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/datadog - Status: 409 - Code: ERR_BAD_REQUEST - Message: maximum number of exporters reached +Error importing telemetry configuration +No value found for placeholder "TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY" " `; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud": should fail to import otlp telemetry 2`] = `1`; +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/cloud": should fail to import all telemetry config 2`] = `1`; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 1`] = `""`; +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should import otlp telemetry by category and update placeholder values 1`] = `""`; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 2`] = ` +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should import otlp telemetry by category and update placeholder values 2`] = ` "A new version of frodo is available. Please run 'frodo -v' for more details. Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. ✔ Successfully read 1 telemetry exporter(s). -Progress indicator 21cadce3-505d-4edb-967b-5339051be81f not found. +Progress indicator e0cd34f3-450c-403e-b082-5c433f685ae2 not found. " `; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 1`] = ` +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should import otlp telemetry by name and update placeholder values 1`] = `""`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c otlp -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should import otlp telemetry by name and update placeholder values 2`] = ` "A new version of frodo is available. Please run 'frodo -v' for more details. Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. ✔ Successfully read 1 telemetry exporter(s). -Error importing telemetry exporters - Error updating telemetry exporter - Network error: - URL: https://openam-frodo-dev.forgeblocks.com/environment/telemetry/splunk/frodo-test-splunk-1 - Status: 409 - Code: ERR_BAD_REQUEST - Message: maximum number of exporters reached +Progress indicator 185e23e0-32d7-4fe5-8577-182f50f17346 not found. " `; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud": should fail to import splunk telemetry 2`] = `1`; +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk --name test -D test/e2e/exports/fr-config-manager/cloud": should import splunk telemetry by name 1`] = `""`; + +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk --name test -D test/e2e/exports/fr-config-manager/cloud": should import splunk telemetry by name 2`] = ` +"A new version of frodo is available. +Please run 'frodo -v' for more details. +Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. +✔ Successfully read 1 telemetry exporter(s). +Progress indicator dc8426b5-f043-4aea-b22f-8a2873b847eb not found. +" +`; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should push telemetry to cloud 1`] = `""`; +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should import splunk telemetry by category 1`] = `""`; -exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud": should push telemetry to cloud 2`] = ` +exports[`frodo config-manager push telemetry "frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud": should import splunk telemetry by category 2`] = ` "A new version of frodo is available. Please run 'frodo -v' for more details. Experimental feature in use: 'frodo config-manager push telemetry'. This feature may change without notice. ✔ Successfully read 1 telemetry exporter(s). -Progress indicator f34d3e8a-de5d-49c8-99df-2451d920f416 not found. +Progress indicator dcd920ad-d9a9-4702-9dcb-3616cc83565b not found. " `; diff --git a/test/e2e/config-manager-push-telemetry.e2e.test.js b/test/e2e/config-manager-push-telemetry.e2e.test.js index 01427baff..8f67e83ae 100644 --- a/test/e2e/config-manager-push-telemetry.e2e.test.js +++ b/test/e2e/config-manager-push-telemetry.e2e.test.js @@ -47,10 +47,11 @@ */ /* -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D test/e2e/exports/fr-config-manager/cloud -FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c splunk -n test -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c otlp -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c splunk --name test -D test/e2e/exports/fr-config-manager/cloud FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -c splunk -D test/e2e/exports/fr-config-manager/cloud +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config-manager push telemetry -D test/e2e/exports/fr-config-manager/cloud */ import { getEnv, testFail, testSuccess } from './utils/TestUtils'; @@ -65,23 +66,27 @@ const env = getEnv(c); const telemetryDir = 'test/e2e/exports/fr-config-manager/cloud'; describe('frodo config-manager push telemetry', () => { - test(`"frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}": should push telemetry to cloud`, async () => { - const CMD = `frodo config-manager push telemetry -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}`; + test(`"frodo config-manager push telemetry -c otlp --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}": should import otlp telemetry by category and update placeholder values`, async () => { + const CMD = `frodo config-manager push telemetry -c otlp --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value --env TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}`; await testSuccess(CMD, env); }); - test(`"frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D ${telemetryDir}": should fail to import otlp telemetry`, async () => { - const CMD = `frodo config-manager push telemetry -c otlp -n datadog -E TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY=test-value -D ${telemetryDir}`; - await testFail(CMD, env); + test(`"frodo config-manager push telemetry -c otlp -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}": should import otlp telemetry by name and update placeholder values`, async () => { + const CMD = `frodo config-manager push telemetry -c otlp -n test-otlp -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_KEY=test-value -E TELEMETRY_HEADER_OTLP_TEST_OTLP_API_SECRET=test-value -D ${telemetryDir}`; + await testSuccess(CMD, env); }); - test(`"frodo config-manager push telemetry -c splunk -n test -D ${telemetryDir}": should fail to import splunk telemetry`, async () => { - const CMD = `frodo config-manager push telemetry -c splunk -n test -D ${telemetryDir}`; - await testFail(CMD, env); + test(`"frodo config-manager push telemetry -c splunk --name test -D ${telemetryDir}": should import splunk telemetry by name`, async () => { + const CMD = `frodo config-manager push telemetry -c splunk --name test -D ${telemetryDir}`; + await testSuccess(CMD, env); }); - test(`"frodo config-manager push telemetry -c splunk -D ${telemetryDir}": should fail to import splunk telemetry`, async () => { - const CMD = `frodo config-manager push telemetry -c splunk -D ${telemetryDir}`; - await testSuccess(CMD, env); + test(`"frodo config-manager push telemetry -c splunk -D ${telemetryDir}": should import splunk telemetry by category`, async () => { + const CMD = `frodo config-manager push telemetry -c splunk -D ${telemetryDir}`; + await testSuccess(CMD, env); + }); + test(`"frodo config-manager push telemetry -D ${telemetryDir}": should fail to import all telemetry config`, async () => { + const CMD = `frodo config-manager push telemetry -D ${telemetryDir}`; + await testFail(CMD, env); + }); }); -}); \ No newline at end of file diff --git a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json b/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json deleted file mode 100644 index ebd061f2c..000000000 --- a/test/e2e/exports/fr-config-manager/cloud/telemetry/otlp/datadog.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "encoding": "PROTO", - "endpoint": "https://otlp.us5.datadoghq.com/v1/logs", - "headers": { - "dd-api-key": "${TELEMETRY_HEADER_OTLP_DATADOG_DD_API_KEY}" - }, - "id": "datadog", - "sources": [ - "am-activity", - "idm-activity" - ], - "type": "HTTP" -} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har new file mode 100644 index 000000000..394e10983 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 385, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 636, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 636, + "text": "{\"_id\":\"*\",\"_rev\":\"-660094397\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"6ac6499e9da2071\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true,\"oauth2AIAgentsEnabled\":true,\"cdkDeployment\":false}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "636" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1200, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:41.190Z", + "time": 124, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 124 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 276, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 276, + "text": "{\"_id\":\"version\",\"_rev\":\"682709768\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 1e6c015f8efa612ddc1fca2905bac0a4425e6ea0 (2026-August-14 17:23)\",\"revision\":\"1e6c015f8efa612ddc1fca2905bac0a4425e6ea0\",\"date\":\"2026-August-14 17:23\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com, default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 1199, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:41.443Z", + "time": 86, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 86 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har new file mode 100644 index 000000000..2f68524cd --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1907, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1991, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1991, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idc:telemetry:*\",\"description\":\"All telemetry APIs\",\"childScopes\":[{\"scope\":\"fr:idc:telemetry:read\",\"description\":\"Read telemetry\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1991" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:41.535Z", + "time": 73, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 73 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har similarity index 96% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har index 092f37b35..312a6b6b3 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/oauth2_393036114/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/oauth2", + "_recordingName": "config-manager/push/telemetry/0_D/oauth2", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -121,14 +121,14 @@ "value": "" } ], - "headersSize": 951, + "headersSize": 976, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.351Z", - "time": 186, + "startedDateTime": "2026-08-20T19:20:41.328Z", + "time": 109, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 186 + "wait": 109 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har index d96df2229..9a2fe8815 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_D_2157136892/openidm_3290118515/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/openidm", + "_recordingName": "config-manager/push/telemetry/0_D/openidm", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -137,14 +137,14 @@ "value": "" } ], - "headersSize": 658, + "headersSize": 683, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.503Z", - "time": 164, + "startedDateTime": "2026-08-20T19:20:41.506Z", + "time": 151, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 164 + "wait": 151 } }, { @@ -285,14 +285,14 @@ "value": "" } ], - "headersSize": 658, + "headersSize": 683, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.635Z", - "time": 72, + "startedDateTime": "2026-08-20T19:20:41.616Z", + "time": 68, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 72 + "wait": 68 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har index d82b0a2a1..13aa7eb24 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/am_1076162899/recording.har @@ -136,14 +136,14 @@ "value": "" } ], - "headersSize": 1175, + "headersSize": 1200, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:34.958Z", - "time": 127, + "startedDateTime": "2026-08-20T19:20:20.936Z", + "time": 119, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 127 + "wait": 119 } }, { @@ -287,14 +287,14 @@ "value": "" } ], - "headersSize": 1174, + "headersSize": 1199, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.254Z", - "time": 98, + "startedDateTime": "2026-08-20T19:20:21.183Z", + "time": 81, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 98 + "wait": 81 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har index ee7e42bb8..6eb9470cb 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/environment_1072573434/recording.har @@ -100,14 +100,14 @@ "value": "" } ], - "headersSize": 388, + "headersSize": 413, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.358Z", - "time": 80, + "startedDateTime": "2026-08-20T19:20:21.268Z", + "time": 74, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 80 + "wait": 74 } }, { @@ -216,14 +216,14 @@ "value": "" } ], - "headersSize": 335, + "headersSize": 360, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.525Z", - "time": 439, + "startedDateTime": "2026-08-20T19:20:21.424Z", + "time": 415, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 439 + "wait": 415 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har index 006528cb4..8d5c5a1aa 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/oauth2_393036114/recording.har @@ -121,14 +121,14 @@ "value": "" } ], - "headersSize": 951, + "headersSize": 976, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.099Z", - "time": 149, + "startedDateTime": "2026-08-20T19:20:21.068Z", + "time": 108, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 149 + "wait": 108 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har index 0fc6d315d..7bb7ea844 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_D_1040842898/openidm_3290118515/recording.har @@ -137,14 +137,14 @@ "value": "" } ], - "headersSize": 683, + "headersSize": 658, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.317Z", - "time": 192, + "startedDateTime": "2026-08-20T19:20:21.243Z", + "time": 165, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 192 + "wait": 165 } }, { @@ -291,8 +291,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:44:35.445Z", - "time": 73, + "startedDateTime": "2026-08-20T19:20:21.349Z", + "time": 69, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 73 + "wait": 69 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/am_1076162899/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/am_1076162899/recording.har index 59fb3ade6..529fff5f2 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/am_1076162899/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/am", + "_recordingName": "config-manager/push/telemetry/0_c_env_env_D/am", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -142,8 +142,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.089Z", - "time": 248, + "startedDateTime": "2026-08-20T19:59:14.887Z", + "time": 126, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 248 + "wait": 126 } }, { @@ -293,8 +293,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.543Z", - "time": 92, + "startedDateTime": "2026-08-20T19:59:15.169Z", + "time": 87, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 92 + "wait": 87 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/environment_1072573434/recording.har similarity index 88% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/environment_1072573434/recording.har index f283a6bde..24beab5fc 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/environment_1072573434/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/environment", + "_recordingName": "config-manager/push/telemetry/0_c_env_env_D/environment", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -106,8 +106,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.551Z", - "time": 78, + "startedDateTime": "2026-08-20T19:59:15.262Z", + "time": 75, "timings": { "blocked": -1, "connect": -1, @@ -115,15 +115,15 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 78 + "wait": 75 } }, { - "_id": "8fa5c3016197480d45c0cd23a469aac8", + "_id": "b7bd49f37f88d137b4d1bb25e25661cc", "_order": 0, "cache": {}, "request": { - "bodySize": 180, + "bodySize": 195, "cookies": [], "headers": [ { @@ -148,7 +148,7 @@ }, { "name": "content-length", - "value": "180" + "value": "195" }, { "name": "accept-encoding", @@ -159,23 +159,23 @@ "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 1927, + "headersSize": 1929, "httpVersion": "HTTP/1.1", "method": "PUT", "postData": { "mimeType": "application/json", "params": [], - "text": "{\"encoding\":\"PROTO\",\"endpoint\":\"https://otlp.us5.datadoghq.com/v1/logs\",\"headers\":{\"dd-api-key\":\"test-value\"},\"id\":\"datadog\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" + "text": "{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"test-value\",\"api-secret\":\"test-value\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" }, "queryString": [], - "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/datadog" + "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/otlp/test-otlp" }, "response": { - "bodySize": 61, + "bodySize": 176, "content": { "mimeType": "application/json", - "size": 61, - "text": "{\"code\":409,\"message\":\"maximum number of exporters reached\"}" + "size": 176, + "text": "{\"encoding\":\"JSON\",\"endpoint\":\"https://example-siem.com:4317\",\"headers\":{\"api-key\":\"\",\"api-secret\":\"\"},\"id\":\"test-otlp\",\"sources\":[\"am-activity\",\"idm-activity\"],\"type\":\"HTTP\"}" }, "cookies": [], "headers": [ @@ -193,7 +193,7 @@ }, { "name": "content-length", - "value": "61" + "value": "176" }, { "name": "x-forgerock-transactionid", @@ -216,14 +216,14 @@ "value": "" } ], - "headersSize": 334, + "headersSize": 335, "httpVersion": "HTTP/1.1", "redirectURL": "", - "status": 409, - "statusText": "Conflict" + "status": 200, + "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.713Z", - "time": 1383, + "startedDateTime": "2026-08-20T19:59:15.426Z", + "time": 406, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 1383 + "wait": 406 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/oauth2_393036114/recording.har similarity index 96% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/oauth2_393036114/recording.har index d2abb6886..4080ed05b 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/oauth2_393036114/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_D/oauth2", + "_recordingName": "config-manager/push/telemetry/0_c_env_env_D/oauth2", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -127,8 +127,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.651Z", - "time": 139, + "startedDateTime": "2026-08-20T19:59:15.027Z", + "time": 135, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 139 + "wait": 135 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/openidm_3290118515/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/openidm_3290118515/recording.har index 808cc8d04..ac7df5afd 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_env_env_D_4183115610/openidm_3290118515/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_D/openidm", + "_recordingName": "config-manager/push/telemetry/0_c_env_env_D/openidm", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -143,8 +143,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.859Z", - "time": 168, + "startedDateTime": "2026-08-20T19:59:15.227Z", + "time": 155, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 168 + "wait": 155 } }, { @@ -291,8 +291,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.965Z", - "time": 79, + "startedDateTime": "2026-08-20T19:59:15.342Z", + "time": 71, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 79 + "wait": 71 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/am_1076162899/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/am_1076162899/recording.har index a31a51897..4963ccb4b 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/am_1076162899/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/am", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_E_D/am", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -142,8 +142,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.124Z", - "time": 123, + "startedDateTime": "2026-08-20T19:18:32.000Z", + "time": 124, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 123 + "wait": 124 } }, { @@ -293,8 +293,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.443Z", - "time": 102, + "startedDateTime": "2026-08-20T19:18:32.256Z", + "time": 95, "timings": { "blocked": -1, "connect": -1, @@ -302,7 +302,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 102 + "wait": 95 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/environment_1072573434/recording.har similarity index 96% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/environment_1072573434/recording.har index 4db8b0c34..b3c649b74 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/environment_1072573434/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/environment", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_E_D/environment", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -106,8 +106,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.641Z", - "time": 81, + "startedDateTime": "2026-08-20T19:18:32.357Z", + "time": 72, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 81 + "wait": 72 } }, { @@ -222,8 +222,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.810Z", - "time": 1347, + "startedDateTime": "2026-08-20T19:18:32.509Z", + "time": 478, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 1347 + "wait": 478 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/oauth2_393036114/recording.har similarity index 96% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/oauth2_393036114/recording.har index 8ec01ab5b..011c2b115 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_D_600140151/oauth2_393036114/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/oauth2_393036114/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_E_D/oauth2", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_E_D/oauth2", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -127,8 +127,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:00.261Z", - "time": 175, + "startedDateTime": "2026-08-20T19:18:32.138Z", + "time": 113, "timings": { "blocked": -1, "connect": -1, @@ -136,7 +136,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 175 + "wait": 113 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/openidm_3290118515/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/openidm_3290118515/recording.har index 31db5048c..b1dabbe12 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_n_E_E_D_892394825/openidm_3290118515/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_E_E_D_2883341119/openidm_3290118515/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_n_E_E_D/openidm", + "_recordingName": "config-manager/push/telemetry/0_c_n_E_E_D/openidm", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -143,8 +143,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.609Z", - "time": 169, + "startedDateTime": "2026-08-20T19:18:32.320Z", + "time": 153, "timings": { "blocked": -1, "connect": -1, @@ -152,7 +152,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 169 + "wait": 153 } }, { @@ -291,8 +291,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:15:21.728Z", - "time": 74, + "startedDateTime": "2026-08-20T19:18:32.436Z", + "time": 65, "timings": { "blocked": -1, "connect": -1, @@ -300,7 +300,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 74 + "wait": 65 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/am_1076162899/recording.har similarity index 97% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/am_1076162899/recording.har index 2cfdd1a3f..25b22a8e7 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/am_1076162899/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/am_1076162899/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_D/am", + "_recordingName": "config-manager/push/telemetry/0_c_name_D/am", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -136,14 +136,14 @@ "value": "" } ], - "headersSize": 1175, + "headersSize": 1200, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.506Z", - "time": 130, + "startedDateTime": "2026-08-20T19:20:02.083Z", + "time": 125, "timings": { "blocked": -1, "connect": -1, @@ -151,7 +151,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 130 + "wait": 125 } }, { @@ -293,7 +293,7 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.797Z", + "startedDateTime": "2026-08-20T19:20:02.339Z", "time": 84, "timings": { "blocked": -1, diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/environment_1072573434/recording.har similarity index 92% rename from test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har rename to test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/environment_1072573434/recording.har index 31c8f6af2..adea9cf41 100644 --- a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_n_D_2934808319/environment_1072573434/recording.har +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/environment_1072573434/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "config-manager/push/telemetry/0_c_n_D/environment", + "_recordingName": "config-manager/push/telemetry/0_c_name_D/environment", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -100,14 +100,14 @@ "value": "" } ], - "headersSize": 388, + "headersSize": 413, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:18.888Z", - "time": 71, + "startedDateTime": "2026-08-20T19:20:02.429Z", + "time": 70, "timings": { "blocked": -1, "connect": -1, @@ -115,7 +115,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 71 + "wait": 70 } }, { @@ -171,11 +171,11 @@ "url": "https://openam-frodo-dev.forgeblocks.com/environment/telemetry/splunk/frodo-test-splunk-1" }, "response": { - "bodySize": 61, + "bodySize": 118, "content": { "mimeType": "application/json", - "size": 61, - "text": "{\"code\":409,\"message\":\"maximum number of exporters reached\"}" + "size": 118, + "text": "{\"endpoint\":\"https://example.com:8088'\",\"id\":\"frodo-test-splunk-1\",\"index\":\"test\",\"sources\":[\"am-access\"],\"token\":\"\"}" }, "cookies": [], "headers": [ @@ -193,7 +193,7 @@ }, { "name": "content-length", - "value": "61" + "value": "118" }, { "name": "x-forgerock-transactionid", @@ -216,14 +216,14 @@ "value": "" } ], - "headersSize": 334, + "headersSize": 360, "httpVersion": "HTTP/1.1", "redirectURL": "", - "status": 409, - "statusText": "Conflict" + "status": 200, + "statusText": "OK" }, - "startedDateTime": "2026-08-19T21:16:19.051Z", - "time": 351, + "startedDateTime": "2026-08-20T19:20:02.580Z", + "time": 402, "timings": { "blocked": -1, "connect": -1, @@ -231,7 +231,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 351 + "wait": 402 } } ], diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/oauth2_393036114/recording.har new file mode 100644 index 000000000..3c28e15c8 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_name_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1349, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1349" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 440, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1850, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1850, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:idc:esv:* fr:idc:analytics:* fr:idc:telemetry:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:dataset:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "content-security-policy", + "value": "connect-src 'self' https://*.googletagmanager.com https://*.google-analytics.com https://cdn.forgerock.com; form-action 'self' https://*.pingidentity.com; frame-ancestors 'self' https://*.pingidentity.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googletagmanager.com https://*.google-analytics.com; script-src-elem 'self' 'unsafe-inline' https://*.googletagmanager.com https://*.google-analytics.com" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1850" + }, + { + "name": "date", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 976, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:02.221Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/openidm_3290118515/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/openidm_3290118515/recording.har new file mode 100644 index 000000000..5897be1ec --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/telemetry_3234901888/0_c_name_D_712843954/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "config-manager/push/telemetry/0_c_name_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:02.402Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/openidm/managed/svcacct/a4438bd2-3e7f-4924-b422-46d5cb049b21?_fields=%2A" + }, + "response": { + "bodySize": 1394, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1394, + "text": "{\"_id\":\"a4438bd2-3e7f-4924-b422-46d5cb049b21\",\"_rev\":\"fe92e226-481b-4208-a6ef-5b8378e8d937-41244\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1784660925315\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\",\"fr:idc:telemetry:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"8GP2_8kFC4G22JXxDAz4RX0ZfNB7LHTgMcrCcpRLKtU\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"5mHyhvq1p_5h8BF8AYjZdx8L812q0ddyNlM9Cfy-upkOAO1Bx5SI8X8WkoHX2r90INRBCIPh5sqOm_vUZIE4fdzX54Bsa35V3z9S8JcHAte0uyM3SkFP3bYwzV3iRDgg5-naUqRPSoaORsj-SxeT3o8n04kuvg9MwwIOWuOx0fKtEQdJXTzeiAhRbUEQUYGlDdAC6Gz-L16OMgLWUhX-eiLHGjarm6wq-brnrfdDZqJ2XfAeZ04QIFpEl7kOh1Mhj7MZMx-LZy7itR7xG1nd_nE-ZP6-O_3mgWxWxISP-3AXjD1MOPl5z7c_T89TYIAM8oHSf-1fkNkWgwA8G0frdh2EKeOFexKGjPQO3aNPeYWBaGJ1NQHij-RmtXstHX3-qiy32NT2sheMgNcSfmlPQqAEhU3Md45JUFyBacgbJEYq6ygQUSvyNGAeQVEMJ8VBWa6jvuqKXGYVIaNvn-7CWYDhJBKHJXtqfhXndGCBf_6VMqpWfEBB2awzpep0knZTKggZp-ppDJAjrm_RntFEgEIOoc69CekpU9oNV9cFFL6nl3oPNq1Qw1tkjtpJSbLwQAYNyo1qy1Z95xWt4TcOe7EvlSRMOUuREUYc0IUOJfvXeJbSe0BcWUXG_7Vi8W3jyjTZIt9KrATt6jx09EbtzzgVfk2IJhWmPd0H3Y-Rohc\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1394" + }, + { + "name": "x-forgerock-transactionid", + "value": "" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "" + }, + { + "name": "alt-svc", + "value": "" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-08-20T19:20:02.506Z", + "time": 66, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 66 + } + } + ], + "pages": [], + "version": "1.2" + } +}