diff --git a/src/api/SecretStoreApi.ts b/src/api/SecretStoreApi.ts new file mode 100644 index 000000000..3f4ba663a --- /dev/null +++ b/src/api/SecretStoreApi.ts @@ -0,0 +1,456 @@ +import util from 'util'; + +import { State } from '../shared/State'; +import { getConfigPath, getRealmPathGlobal } from '../utils/ForgeRockUtils'; +import { AmConfigEntityInterface, PagedResult } from './ApiTypes'; +import { generateAmApi } from './BaseApi'; + +const secretStoreURLTemplate = '%s/json%s/%s/secrets/stores/%s/%s'; +const secretStoreSchemaURLTemplate = + '%s/json%s/%s/secrets/stores/%s?_action=schema'; +const secretStoresURLTemplate = + '%s/json%s/%s/secrets/stores?_action=nextdescendents'; +const secretStoreMappingURLTemplate = secretStoreURLTemplate + '/mappings/%s'; +const createSecretStoreMappingURLTemplate = + secretStoreURLTemplate + '/mappings?_action=create'; +const secretStoreMappingsURLTemplate = + secretStoreURLTemplate + '/mappings?_queryFilter=true'; + +const secretTypesThatIgnoreId = ['EnvironmentAndSystemPropertySecretStore']; + +const apiVersion = 'protocol=2.1,resource=%s'; +const globalVersion = '1.0'; +const realmVersion = '2.0'; +const getApiConfig = (globalConfig) => { + return { + apiVersion: util.format( + apiVersion, + globalConfig ? globalVersion : realmVersion + ), + }; +}; + +export type SecretStoreSkeleton = + | KeyStoreSecretStoreSkeleton + | HsmSecretStoreSkeleton + | FileSystemSecretStoreSkeleton + | GoogleKeyManagementServiceSecretStoreSkeleton + | GoogleSecretManagerSecretStoreProviderSkeleton + | EnvironmentAndSystemPropertySecretStoreSkeleton; + +export type SecretStoreMappingSkeleton = AmConfigEntityInterface & { + secretId: string; + aliases: string[]; +}; + +export type SecretStoreSchemaSkeleton = { + type: string; + properties: Record< + string, + { + title: string; + description: string; + propertyOrder: number; + required: boolean; + type: string; + exampleValue: string; + } + >; +}; + +export type KeyStoreSecretStoreSkeleton = AmConfigEntityInterface & { + storePassword: string; + file: string; + leaseExpiryDuration: number; + providerName: string; + storetype: string; + keyEntryPassword: string; +}; + +export type HsmSecretStoreSkeleton = AmConfigEntityInterface & { + file: string; + leaseExpiryDuration: number; + storePassword: string; + providerGuiceKey: string; +}; + +export type FileSystemSecretStoreSkeleton = AmConfigEntityInterface & { + suffix: string; + versionSuffix: string; + directory: string; + format: string; +}; + +export type GoogleKeyManagementServiceSecretStoreSkeleton = + AmConfigEntityInterface & { + publicKeyCacheMaxSize: number; + keyRing: string; + publicKeyCacheDuration: number; + project: string; + location: string; + }; + +export type GoogleSecretManagerSecretStoreProviderSkeleton = + AmConfigEntityInterface & { + expiryDurationSeconds: number; + secretFormat: string; + project: string; + serviceAccount: string; + }; + +export type EnvironmentAndSystemPropertySecretStoreSkeleton = + AmConfigEntityInterface & { + format: string; + }; + +/** + * Get secret store + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ +export async function getSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).get(urlString, { + withCredentials: true, + }); + return data; +} + +/** + * Get secret store schema + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store schema object + */ +export async function getSecretStoreSchema({ + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreTypeId: string; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreSchemaURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).post(urlString, undefined, { + withCredentials: true, + }); + return data; +} + +/** + * Get all secret stores + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise>} a promise that resolves to an array of secret store objects + */ +export async function getSecretStores({ + globalConfig = false, + state, +}: { + globalConfig: boolean; + state: State; +}): Promise> { + const urlString = util.format( + secretStoresURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig) + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).post(urlString, undefined, { + withCredentials: true, + }); + return data; +} + +/** + * Get secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ +export async function getSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + secretId: string; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreMappingURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId, + secretId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).get(urlString, { + withCredentials: true, + }); + return data; +} + +/** + * Get secret store mappings + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise>} a promise that resolves to an array of secret store mapping objects + */ +export async function getSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + globalConfig: boolean; + state: State; +}): Promise> { + const urlString = util.format( + secretStoreMappingsURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).get(urlString, { + withCredentials: true, + }); + return data; +} + +/** + * Create secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {SecretStoreMappingSkeleton} secretStoreMappingData The secret store mapping data, + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object of the mapping created + */ +export async function createSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + secretStoreMappingData: SecretStoreMappingSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + createSecretStoreMappingURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).post(urlString, secretStoreMappingData, { + withCredentials: true, + }); + return data; +} + +/** + * Put secret store + * @param {SecretStoreSkeleton} secretStoreData secret store to import + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ +export async function putSecretStore({ + secretStoreData, + globalConfig = false, + state, +}: { + secretStoreData: SecretStoreSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreData._type._id, + secretTypesThatIgnoreId.includes(secretStoreData._type._id) + ? '' + : secretStoreData._id + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).put(urlString, secretStoreData, { + withCredentials: true, + }); + return data; +} + +/** + * Put secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +export async function putSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + secretStoreMappingData: SecretStoreMappingSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreMappingURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId, + secretStoreMappingData.secretId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).put(urlString, secretStoreMappingData, { + withCredentials: true, + }); + return data; +} + +/** + * Delete secret store by id + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ +export async function deleteSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).delete(urlString, { + withCredentials: true, + }); + return data; +} + +/** + * Delete secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string} secretStoreTypeId Secret store type id + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +export async function deleteSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string; + secretId: string; + globalConfig: boolean; + state: State; +}): Promise { + const urlString = util.format( + secretStoreMappingURLTemplate, + state.getHost(), + getRealmPathGlobal(globalConfig, state), + getConfigPath(globalConfig), + secretStoreTypeId, + secretTypesThatIgnoreId.includes(secretStoreTypeId) ? '' : secretStoreId, + secretId + ); + const { data } = await generateAmApi({ + resource: getApiConfig(globalConfig), + state, + }).delete(urlString, { + withCredentials: true, + }); + return data; +} diff --git a/src/api/classic/SecretStoreApi.ts b/src/api/classic/SecretStoreApi.ts deleted file mode 100644 index 823c42174..000000000 --- a/src/api/classic/SecretStoreApi.ts +++ /dev/null @@ -1,173 +0,0 @@ -import util from 'util'; - -import { State } from '../../shared/State'; -import { getConfigPath, getRealmPathGlobal } from '../../utils/ForgeRockUtils'; -import { - AmConfigEntityInterface, - IdObjectSkeletonInterface, - PagedResult, -} from '../ApiTypes'; -import { generateAmApi } from '../BaseApi'; - -const secretStoreURLTemplate = '%s/json%s/%s/secrets/stores/%s/%s'; -const secretStoresURLTemplate = - '%s/json%s/%s/secrets/stores?_action=nextdescendents'; -const secretStoreMappingURLTemplate = secretStoreURLTemplate + '/mappings/%s'; -const secretStoreMappingsURLTemplate = - secretStoreURLTemplate + '/mappings?_queryFilter=true'; - -const secretTypesThatIgnoreId = ['EnvironmentAndSystemPropertySecretStore']; - -const apiVersion = 'protocol=2.1,resource=%s'; -const globalVersion = '1.0'; -const realmVersion = '2.0'; -const getApiConfig = (globalConfig) => { - return { - apiVersion: util.format( - apiVersion, - globalConfig ? globalVersion : realmVersion - ), - }; -}; - -export type SecretStoreSkeleton = AmConfigEntityInterface; - -export type SecretStoreMappingSkeleton = IdObjectSkeletonInterface & { - secretId: string; - aliases: string[]; -}; - -/** - * Get all secret stores - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise>} a promise that resolves to an array of secret store objects - */ -export async function getSecretStores({ - globalConfig = false, - state, -}: { - globalConfig: boolean; - state: State; -}): Promise> { - const urlString = util.format( - secretStoresURLTemplate, - state.getHost(), - getRealmPathGlobal(globalConfig, state), - getConfigPath(globalConfig) - ); - const { data } = await generateAmApi({ - resource: getApiConfig(globalConfig), - state, - }).post(urlString, undefined, { - withCredentials: true, - }); - return data; -} - -/** - * Get secret store mappings - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to an array of secret store mapping objects - */ -export async function getSecretStoreMappings({ - secretStoreId, - secretStoreTypeId, - globalConfig = false, - state, -}: { - secretStoreId: string; - secretStoreTypeId: string; - globalConfig: boolean; - state: State; -}): Promise> { - const urlString = util.format( - secretStoreMappingsURLTemplate, - state.getHost(), - getRealmPathGlobal(globalConfig, state), - getConfigPath(globalConfig), - secretStoreTypeId, - secretStoreId - ); - const { data } = await generateAmApi({ - resource: getApiConfig(globalConfig), - state, - }).get(urlString, { - withCredentials: true, - }); - return data; -} - -/** - * Put secret store - * @param {SecretStoreSkeleton} secretStoreData secret store to import - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store object - */ -export async function putSecretStore({ - secretStoreData, - globalConfig = false, - state, -}: { - secretStoreData: SecretStoreSkeleton; - globalConfig: boolean; - state: State; -}): Promise { - const urlString = util.format( - secretStoreURLTemplate, - state.getHost(), - getRealmPathGlobal(globalConfig, state), - getConfigPath(globalConfig), - secretStoreData._type._id, - secretTypesThatIgnoreId.includes(secretStoreData._type._id) - ? '' - : secretStoreData._id - ); - const { data } = await generateAmApi({ - resource: getApiConfig(globalConfig), - state, - }).put(urlString, secretStoreData, { - withCredentials: true, - }); - return data; -} - -/** - * Put secret store mapping - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import - * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store mapping object - */ -export async function putSecretStoreMapping({ - secretStoreId, - secretStoreTypeId, - secretStoreMappingData, - globalConfig = false, - state, -}: { - secretStoreId: string; - secretStoreTypeId: string; - secretStoreMappingData: SecretStoreMappingSkeleton; - globalConfig: boolean; - state: State; -}): Promise { - const urlString = util.format( - secretStoreMappingURLTemplate, - state.getHost(), - getRealmPathGlobal(globalConfig, state), - getConfigPath(globalConfig), - secretStoreTypeId, - secretStoreId, - secretStoreMappingData._id - ); - const { data } = await generateAmApi({ - resource: getApiConfig(globalConfig), - state, - }).put(urlString, secretStoreMappingData, { - withCredentials: true, - }); - return data; -} diff --git a/src/lib/FrodoLib.ts b/src/lib/FrodoLib.ts index 097d48748..4392f1140 100644 --- a/src/lib/FrodoLib.ts +++ b/src/lib/FrodoLib.ts @@ -9,7 +9,6 @@ import AuthenticationSettingsOps, { AuthenticationSettings, } from '../ops/AuthenticationSettingsOps'; import CirclesOfTrustOps, { CirclesOfTrust } from '../ops/CirclesOfTrustOps'; -import SecretStoreOps, { SecretStore } from '../ops/classic/SecretStoreOps'; import ServerOps, { Server } from '../ops/classic/ServerOps'; import SiteOps, { Site } from '../ops/classic/SiteOps'; import AdminFederationOps, { @@ -81,6 +80,7 @@ import ResourceTypeOps, { ResourceType } from '../ops/ResourceTypeOps'; import Saml2Ops, { Saml2 } from '../ops/Saml2Ops'; import ScriptOps, { Script } from '../ops/ScriptOps'; import ScriptTypeOps, { ScriptType } from '../ops/ScriptTypeOps'; +import SecretStoreOps, { SecretStore } from '../ops/SecretStoreOps'; import ServiceOps, { Service } from '../ops/ServiceOps'; import SessionOps, { Session } from '../ops/SessionOps'; import ThemeOps, { Theme } from '../ops/ThemeOps'; diff --git a/src/ops/ConfigOps.ts b/src/ops/ConfigOps.ts index 369d4ed36..a6487de62 100644 --- a/src/ops/ConfigOps.ts +++ b/src/ops/ConfigOps.ts @@ -54,11 +54,6 @@ import { exportCirclesOfTrust, importCirclesOfTrust, } from './CirclesOfTrustOps'; -import { - exportSecretStores, - importSecretStores, - SecretStoreExportSkeleton, -} from './classic/SecretStoreOps'; import { exportServers, importServers, @@ -110,6 +105,11 @@ import { importScriptTypes, ScriptTypeExportSkeleton, } from './ScriptTypeOps'; +import { + exportSecretStores, + importSecretStores, + SecretStoreExportSkeleton, +} from './SecretStoreOps'; import { exportServices, importServices } from './ServiceOps'; import { exportThemes, importThemes, ThemeSkeleton } from './ThemeOps'; @@ -683,7 +683,7 @@ export async function exportFullConfiguration({ realmStateObj, 'Secret Stores', resultCallback, - isClassicDeployment + isClassicDeployment || isCloudDeployment ) )?.secretstore, service: ( @@ -1052,7 +1052,8 @@ export async function importFullConfiguration({ indicatorId, 'Secret Stores', resultCallback, - isClassicDeployment && !!importData.realm[realm].secretstore + (isClassicDeployment || isCloudDeployment) && + !!importData.realm[realm].secretstore ) ); response.push( diff --git a/src/ops/OpsTypes.ts b/src/ops/OpsTypes.ts index 030165389..32e9dd08a 100644 --- a/src/ops/OpsTypes.ts +++ b/src/ops/OpsTypes.ts @@ -9,6 +9,6 @@ export interface ExportMetaData { exportToolVersion: string; } -export type ResultCallback = (error: FrodoError, result: R) => void; +export type ResultCallback = (error?: FrodoError, result?: R) => void; export type ErrorFilter = (error: FrodoError) => boolean; diff --git a/src/ops/SecretStoreOps.test.ts b/src/ops/SecretStoreOps.test.ts new file mode 100644 index 000000000..17d685196 --- /dev/null +++ b/src/ops/SecretStoreOps.test.ts @@ -0,0 +1,770 @@ +/** + * To record and update snapshots, you must perform 3 steps in order: + * + * 1. Record API responses + * + * Recording requires an available classic deployment, since secret stores + * can only be accessed in classic. Set FRODO_HOST and FRODO_REALM + * environment variables or alternatively FRODO_DEPLOY=classic + * in order to appropriately record requests to the classic deployment. + * + * To record API responses, you must call the test:record script and + * override all the connection state required to connect to the + * env to record from: + * + * ATTENTION: For the recording to succeed, you MUST make sure to use a + * user account, not a service account. + * + * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record SecretStoreOps + * + * The above command assumes that you have a connection profile for + * 'frodo-dev' on your development machine. + * + * 2. Update snapshots + * + * After recording API responses, you must manually update/create snapshots + * by running: + * + * FRODO_DEBUG=1 npm run test:update SecretStoreOps + * + * 3. Test your changes + * + * If 1 and 2 didn't produce any errors, you are ready to run the tests in + * replay mode and make sure they all succeed as well: + * + * FRODO_DEBUG=1 npm run test:only SecretStoreOps + * + * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output + * in case things don't function as expected + */ +import { autoSetupPolly, setDefaultState } from "../utils/AutoSetupPolly"; +import { filterRecording } from "../utils/PollyUtils"; +import * as SecretStoreOps from "./SecretStoreOps"; +import { state } from "../lib/FrodoLib"; +import Constants from "../shared/Constants"; +import { snapshotResultCallback } from "../test/utils/TestUtils"; +import { SecretStoreMappingSkeleton } from "../api/SecretStoreApi"; +import { SecretStoreExportInterface } from "./SecretStoreOps"; + +const ctx = autoSetupPolly(); + +describe('SecretStoreOps', () => { + beforeEach(async () => { + if (process.env.FRODO_POLLY_MODE === 'record') { + ctx.polly.server.any().on('beforePersist', (_req, recording) => { + filterRecording(recording); + }); + } + setDefaultState(Constants.CLASSIC_DEPLOYMENT_TYPE_KEY); + }); + + describe('createSecretStoreExportTemplate()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.createSecretStoreExportTemplate).toBeDefined(); + }); + + test('1: Create SecretStore Export Template', async () => { + const response = SecretStoreOps.createSecretStoreExportTemplate({ state }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + }); + + // Phase 1 + if ( + !process.env.FRODO_POLLY_MODE || + (process.env.FRODO_POLLY_MODE === 'record' && + process.env.FRODO_RECORD_PHASE === '1') + ) { + describe('Cloud Tests', () => { + const CLOUD_MAPPING_1: SecretStoreMappingSkeleton = { + _id: 'am.services.oauth2.oidc.signing.EDDSA', + secretId: 'am.services.oauth2.oidc.signing.EDDSA', + aliases: [ + 'esv-test-signing-cert' + ] + } + + beforeEach(() => { + setDefaultState(); + }); + + afterAll(async () => { + await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretId: CLOUD_MAPPING_1.secretId, + globalConfig: false, + state, + }); + }); + + describe('createSecretStoreMapping()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.createSecretStoreMapping).toBeDefined(); + }); + test('1: Create secret store mapping', async () => { + try { + await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretId: CLOUD_MAPPING_1.secretId, + globalConfig: false, + state, + }); + } catch (e) { /* Ignore error */ } + const response = await SecretStoreOps.createSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretStoreMappingData: CLOUD_MAPPING_1, + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStore()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.readSecretStore).toBeDefined(); + }); + + test('1: Read ESV secret store', async () => { + const response = await SecretStoreOps.readSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStoreSchema()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.readSecretStoreSchema).toBeDefined(); + }); + + test('1: Read ESV secret store schema', async () => { + const response = await SecretStoreOps.readSecretStoreSchema({ + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStores()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.readSecretStores).toBeDefined(); + }); + + test('1: Read realm SecretStores', async () => { + const response = await SecretStoreOps.readSecretStores({ globalConfig: false, state }); + expect(response).toMatchSnapshot(); + }); + + test('2: Read global SecretStores', async () => { + await expect(SecretStoreOps.readSecretStores({ globalConfig: true, state })).rejects.toThrow('Error reading secret stores'); + }); + }); + + describe('readSecretStoreMapping()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.readSecretStoreMapping).toBeDefined(); + }); + + test('1: Read ESV secret store mapping', async () => { + try { + await SecretStoreOps.createSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretStoreMappingData: CLOUD_MAPPING_1, + globalConfig: false, + state, + }); + } catch (e) {/* Ignore error since it means it already exists */} + const response = await SecretStoreOps.readSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretId: CLOUD_MAPPING_1.secretId, + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStoreMappings()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.readSecretStoreMappings).toBeDefined(); + }); + + test('1: Read ESV secret store mappings', async () => { + const response = await SecretStoreOps.readSecretStoreMappings({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('exportSecretStore()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.exportSecretStore).toBeDefined(); + }); + test('1: Export ESV secret store', async () => { + const response = await SecretStoreOps.exportSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + }); + + describe('exportSecretStores()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.exportSecretStores).toBeDefined(); + }); + + test('1: Export realm SecretStores', async () => { + const response = await SecretStoreOps.exportSecretStores({ globalConfig: false, resultCallback: snapshotResultCallback, state }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + + test('2: Export global SecretStores', async () => { + await expect(SecretStoreOps.exportSecretStores({ globalConfig: true, state })).rejects.toThrow('Error reading secret stores'); + }); + }); + + describe('updateSecretStore()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.updateSecretStore).toBeDefined(); + }); + test('1: Unable to update ESV secret store', async () => { + const esvSecretStore = await SecretStoreOps.exportSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + const secretStoreData = {...esvSecretStore.secretstore.ESV} + delete secretStoreData.mappings; + secretStoreData.expiryDurationSeconds = 599; + await expect(SecretStoreOps.updateSecretStore({ + secretStoreData, + globalConfig: true, + state, + })).rejects.toThrow('Request failed with status code 403'); + }); + }); + + describe('updateSecretStoreMapping()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.updateSecretStoreMapping).toBeDefined(); + }); + test('1: Update ESV secret store mapping', async () => { + try { + await SecretStoreOps.createSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretStoreMappingData: CLOUD_MAPPING_1, + globalConfig: false, + state, + }); + } catch (e) {/* Ignore error since it means it already exists */} + const secretStoreMappingData = {...CLOUD_MAPPING_1} + secretStoreMappingData.aliases = ['esv-test']; + const response = await SecretStoreOps.updateSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretStoreMappingData: secretStoreMappingData, + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('importSecretStores()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.importSecretStores).toBeDefined(); + }); + test('1: Import ESV secret store', async () => { + const secretStore = await SecretStoreOps.exportSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + const response = await SecretStoreOps.importSecretStores({ + importData: secretStore, + globalConfig: false, + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + resultCallback: snapshotResultCallback, + state, + }); + expect(response).toMatchSnapshot(); + }) + }); + + describe('deleteSecretStore()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.deleteSecretStore).toBeDefined(); + }); + test('1: Fail to delete ESV secret store', async () => { + await expect(SecretStoreOps.deleteSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + })).rejects.toThrow('Error deleting the secret store ESV'); + }); + }); + + describe('deleteSecretStores()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.deleteSecretStores).toBeDefined(); + }); + test('1: Fail to delete secret stores', async () => { + await expect(SecretStoreOps.deleteSecretStores({ + globalConfig: false, + state, + })).rejects.toThrow('Error deleting secret stores'); + }); + }); + + describe('deleteSecretStoreMapping()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.deleteSecretStoreMapping).toBeDefined(); + }); + test('1: Delete ESV secret store mapping', async () => { + try { + await SecretStoreOps.createSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretStoreMappingData: CLOUD_MAPPING_1, + globalConfig: false, + state, + }); + } catch (e) {/* Ignore error since it means it already exists */} + const response = await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + secretId: CLOUD_MAPPING_1.secretId, + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('deleteSecretStoreMappings()', () => { + test('0: Method is implemented', async () => { + expect(SecretStoreOps.deleteSecretStoreMappings).toBeDefined(); + }); + test('0: Delete ESV secret store mappings', async () => { + const esvSecretStore = await SecretStoreOps.exportSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + const response = await SecretStoreOps.deleteSecretStoreMappings({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig: false, + state, + }); + await SecretStoreOps.importSecretStores({ + importData: esvSecretStore, + globalConfig: true, + state + }); + expect(response).toMatchSnapshot(); + }); + }); + }); + } + + // Phase 2 + if ( + !process.env.FRODO_POLLY_MODE || + (process.env.FRODO_POLLY_MODE === 'record' && + process.env.FRODO_RECORD_PHASE === '2') + ) { + describe('Classic Tests', () => { + const CLASSIC_MAPPING_1: SecretStoreMappingSkeleton = { + _id: 'am.uma.resource.labels.mtls.cert', + secretId: 'am.uma.resource.labels.mtls.cert', + aliases: [ + 'new', + 'new2', + 'new3' + ] + } + + const CLASSIC_MAPPING_2: SecretStoreMappingSkeleton = { + _id: 'am.applications.agents.remote.consent.request.signing.ES256', + secretId: 'am.applications.agents.remote.consent.request.signing.ES256', + aliases: [ 'es256test' ] + } + + const CLASSIC_SECRET_STORE_1_ID = 'test-keystore'; + const CLASSIC_SECRET_STORE_2_ID = 'test-keystore-2'; + const CLASSIC_SECRET_STORES: SecretStoreExportInterface = { + secretstore: { + [CLASSIC_SECRET_STORE_1_ID]: { + _id: CLASSIC_SECRET_STORE_1_ID, + _type: { + _id: 'KeyStoreSecretStore', + collection: true, + name: 'Keystore' + }, + file: '/root/am/security/keystores/keystore.jceks', + keyEntryPassword: 'entrypass', + leaseExpiryDuration: 5, + providerName: 'SunJCE', + storePassword: 'storepass', + storetype: 'JCEKS', + mappings: [ + CLASSIC_MAPPING_1, + CLASSIC_MAPPING_2 + ], + }, + [CLASSIC_SECRET_STORE_2_ID]: { + _id: CLASSIC_SECRET_STORE_2_ID, + _type: { + _id: 'FileSystemSecretStore', + collection: true, + name: 'File System Secret Volumes' + }, + directory: '/root/am/security/secrets/encrypted', + format: 'ENCRYPTED_PLAIN' + } + } + } + + beforeEach(() => { + setDefaultState(Constants.CLASSIC_DEPLOYMENT_TYPE_KEY); + }); + + afterAll(async () => { + await SecretStoreOps.deleteSecretStore({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + await SecretStoreOps.deleteSecretStore({ + secretStoreId: CLASSIC_SECRET_STORE_2_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + }); + + describe('createSecretStoreMapping()', () => { + test('0: Create global secret store mapping', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + secretId: CLASSIC_MAPPING_1.secretId, + globalConfig: true, + state, + }); + const response = await SecretStoreOps.createSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + secretStoreMappingData: CLASSIC_MAPPING_1, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStore()', () => { + test('0: Read global secret store', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.readSecretStore({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStoreSchema()', () => { + test('0: Read realm secret store schema', async () => { + const response = await SecretStoreOps.readSecretStoreSchema({ + secretStoreTypeId: 'KeyStoreSecretStore', + globalConfig: false, + state, + }); + expect(response).toMatchSnapshot(); + }); + + test('1: Read global secret store schema', async () => { + const response = await SecretStoreOps.readSecretStoreSchema({ + secretStoreTypeId: 'EnvironmentAndSystemPropertySecretStore', + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStores()', () => { + test('0: Read realm SecretStores', async () => { + const response = await SecretStoreOps.readSecretStores({ globalConfig: false, state }); + expect(response).toMatchSnapshot(); + }); + + test('1: Read global SecretStores', async () => { + const response = await SecretStoreOps.readSecretStores({ globalConfig: true, state }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStoreMapping()', () => { + test('0: Read global secret store mapping', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.readSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + secretId: CLASSIC_MAPPING_1.secretId, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('readSecretStoreMappings()', () => { + test('0: Read global secret store mappings', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.readSecretStoreMappings({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('exportSecretStore()', () => { + test('0: Export global secret store', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.exportSecretStore({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + }); + + describe('exportSecretStores()', () => { + test('0: Export realm SecretStores', async () => { + const response = await SecretStoreOps.exportSecretStores({ globalConfig: false, resultCallback: snapshotResultCallback, state }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + + test('1: Export global SecretStores', async () => { + const response = await SecretStoreOps.exportSecretStores({ globalConfig: true, resultCallback: snapshotResultCallback, state }); + expect(response).toMatchSnapshot({ + meta: expect.any(Object), + }); + }); + }); + + describe('updateSecretStore()', () => { + test('0: Update global secret store', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const secretStoreData = {...CLASSIC_SECRET_STORES.secretstore[CLASSIC_SECRET_STORE_1_ID]} + delete secretStoreData.mappings; + secretStoreData.leaseExpiryDuration = 6; + const response = await SecretStoreOps.updateSecretStore({ + secretStoreData, + globalConfig: true, + state, + }); + expect(response.leaseExpiryDuration).toBe(6); + expect(response).toMatchSnapshot(); + }); + }); + + describe('updateSecretStoreMapping()', () => { + test('0: Update global secret store mapping', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const secretStoreMappingData = {...CLASSIC_MAPPING_1} + secretStoreMappingData.aliases = CLASSIC_MAPPING_1.aliases.concat(['new4', 'new5']); + const response = await SecretStoreOps.updateSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: CLASSIC_SECRET_STORES.secretstore[CLASSIC_SECRET_STORE_1_ID]._type._id, + secretStoreMappingData, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('importSecretStores()', () => { + test('0: Import global secret stores', async () => { + const response = await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('deleteSecretStore()', () => { + test('0: Delete global secret store', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + secretId: CLASSIC_MAPPING_1.secretId, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('deleteSecretStores()', () => { + test('0: Delete global secret stores', async () => { + const globalSecretStores = await SecretStoreOps.exportSecretStores({ + globalConfig: true, + state + }); + const response = await SecretStoreOps.deleteSecretStores({ + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + await SecretStoreOps.importSecretStores({ + importData: globalSecretStores, + globalConfig: true, + state + }); + // This secretstore cannot be deleted, so verify it doesn't get returned + expect(response.find(s => s._type._id === "EnvironmentAndSystemPropertySecretStore")).toBeUndefined() + expect(response).toMatchSnapshot(); + }); + }); + + describe('deleteSecretStoreMapping()', () => { + test('0: Delete global secret store mapping', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.deleteSecretStoreMapping({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + secretId: CLASSIC_MAPPING_1.secretId, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + + describe('deleteSecretStoreMappings()', () => { + test('0: Delete global secret store mappings', async () => { + await SecretStoreOps.importSecretStores({ + importData: CLASSIC_SECRET_STORES, + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + globalConfig: true, + resultCallback: snapshotResultCallback, + state, + }); + const response = await SecretStoreOps.deleteSecretStoreMappings({ + secretStoreId: CLASSIC_SECRET_STORE_1_ID, + secretStoreTypeId: undefined, + globalConfig: true, + state, + }); + expect(response).toMatchSnapshot(); + }); + }); + }); + } +}); diff --git a/src/ops/SecretStoreOps.ts b/src/ops/SecretStoreOps.ts new file mode 100644 index 000000000..bc59dd6eb --- /dev/null +++ b/src/ops/SecretStoreOps.ts @@ -0,0 +1,1185 @@ +import { + createSecretStoreMapping as _createSecretStoreMapping, + deleteSecretStore as _deleteSecretStore, + deleteSecretStoreMapping as _deleteSecretStoreMapping, + getSecretStore, + getSecretStoreMapping, + getSecretStoreMappings, + getSecretStores, + getSecretStoreSchema, + putSecretStore, + putSecretStoreMapping, + SecretStoreMappingSkeleton, + SecretStoreSchemaSkeleton, + SecretStoreSkeleton, +} from '../api/SecretStoreApi'; +import Constants from '../shared/Constants'; +import { State } from '../shared/State'; +import { + createProgressIndicator, + debugMessage, + stopProgressIndicator, + updateProgressIndicator, +} from '../utils/Console'; +import { getMetadata, getResult } from '../utils/ExportImportUtils'; +import { FrodoError } from './FrodoError'; +import { ExportMetaData, ResultCallback } from './OpsTypes'; + +export type SecretStore = { + /** + * Create an empty secret store export template + * @returns {SecretStoreExportInterface} an empty secret store export template + */ + createSecretStoreExportTemplate(): SecretStoreExportInterface; + /** + * Create secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {SecretStoreMappingSkeleton} secretStoreMappingData The secret store mapping data, + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object of the mapping created + */ + createSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretStoreMappingData: SecretStoreMappingSkeleton, + globalConfig: boolean + ): Promise; + /** + * Read secret store by id. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ + readSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean + ): Promise; + /** + * Read secret store schema + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store schema object + */ + readSecretStoreSchema( + secretStoreTypeId: string, + globalConfig: boolean + ): Promise; + /** + * Read all secret stores. + * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store objects + */ + readSecretStores(globalConfig: boolean): Promise; + /** + * Read secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ + readSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretId: string, + globalConfig: boolean + ): Promise; + /** + * Read secret store mappings. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ + readSecretStoreMappings( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean + ): Promise; + /** + * Export a single secret store by id. The response can be saved to file as is. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. + * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. + */ + exportSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean + ): Promise; + /** + * Export all secret stores. The response can be saved to file as is. + * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. + */ + exportSecretStores( + globalConfig: boolean, + resultCallback?: ResultCallback + ): Promise; + /** + * Update secret store + * @param {SecretStoreSkeleton} secretStoreData secret store to import + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ + updateSecretStore( + secretStoreData: SecretStoreSkeleton, + globalConfig: boolean + ): Promise; + /** + * Update secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ + updateSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretStoreMappingData: SecretStoreMappingSkeleton, + globalConfig: boolean + ): Promise; + /** + * Import secret stores and mappings + * @param {SecretStoreExportInterface} importData secret store import data + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @param {string} secretStoreId optional secret store id. If supplied, only the secret store of that id is imported. + * @param {string} secretStoreTypeId optional secret store type id + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} the imported secret stores and mappings + */ + importSecretStores( + importData: SecretStoreExportInterface, + globalConfig: boolean, + secretStoreId?: string, + secretStoreTypeId?: string, + resultCallback?: ResultCallback + ): Promise; + /** + * Delete secret store by id + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ + deleteSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean + ): Promise; + /** + * Delete all secret stores + * @param {boolean} globalConfig true if the secret store mappings are global, false otherwise. Default: false. + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} a promise that resolves to an array of secret store objects + */ + deleteSecretStores( + globalConfig: boolean, + resultCallback?: ResultCallback + ): Promise; + /** + * Delete secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ + deleteSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretId: string, + globalConfig: boolean + ): Promise; + /** + * Delete secret store mappings + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} a promise that resolves to a secret store mapping object + */ + deleteSecretStoreMappings( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean, + resultCallback?: ResultCallback + ): Promise; + /** + * Function that returns true if the given secret store type can have mappings, false otherwise + * @param secretStoreTypeId The secret store type + * @returns true if the given secret store type can have mappings, false otherwise + */ + canSecretStoreHaveMappings(secretStoreTypeId: string): boolean; +}; + +export default (state: State): SecretStore => { + return { + createSecretStoreExportTemplate(): SecretStoreExportInterface { + return createSecretStoreExportTemplate({ state }); + }, + async createSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretStoreMappingData: SecretStoreMappingSkeleton, + globalConfig: boolean + ): Promise { + return createSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig, + state, + }); + }, + async readSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean = false + ): Promise { + return readSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + }, + readSecretStoreSchema( + secretStoreTypeId: string, + globalConfig: boolean = false + ): Promise { + return readSecretStoreSchema({ + secretStoreTypeId, + globalConfig, + state, + }); + }, + async readSecretStores( + globalConfig: boolean = false + ): Promise { + return readSecretStores({ globalConfig, state }); + }, + async readSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretId: string, + globalConfig: boolean = false + ): Promise { + return readSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig, + state, + }); + }, + async readSecretStoreMappings( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean = false + ): Promise { + return readSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + }, + async exportSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean = false + ): Promise { + return exportSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + }, + async exportSecretStores( + globalConfig: boolean = false, + resultCallback: ResultCallback = void 0 + ): Promise { + return exportSecretStores({ globalConfig, resultCallback, state }); + }, + async updateSecretStore( + secretStoreData: SecretStoreSkeleton, + globalConfig: boolean = false + ): Promise { + return updateSecretStore({ + secretStoreData, + globalConfig, + state, + }); + }, + async updateSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretStoreMappingData: SecretStoreMappingSkeleton, + globalConfig: boolean = false + ): Promise { + return updateSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig, + state, + }); + }, + async importSecretStores( + importData: SecretStoreExportInterface, + globalConfig: boolean = false, + secretStoreId?: string, + secretStoreTypeId?: string, + resultCallback: ResultCallback = void 0 + ): Promise { + return importSecretStores({ + importData, + globalConfig, + secretStoreId, + secretStoreTypeId, + resultCallback, + state, + }); + }, + async deleteSecretStore( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean = false + ): Promise { + return deleteSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + }, + async deleteSecretStores( + globalConfig: boolean = false, + resultCallback?: ResultCallback + ): Promise { + return deleteSecretStores({ + globalConfig, + resultCallback, + state, + }); + }, + async deleteSecretStoreMapping( + secretStoreId: string, + secretStoreTypeId: string | undefined, + secretId: string, + globalConfig: boolean = false + ): Promise { + return deleteSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig, + state, + }); + }, + deleteSecretStoreMappings( + secretStoreId: string, + secretStoreTypeId: string | undefined, + globalConfig: boolean = false, + resultCallback?: ResultCallback + ): Promise { + return deleteSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig, + resultCallback, + state, + }); + }, + canSecretStoreHaveMappings, + }; +}; + +export const SECRET_STORES_WITH_NO_MAPPINGS = [ + 'EnvironmentAndSystemPropertySecretStore', + 'FileSystemSecretStore', +]; + +export type SecretStoreExportSkeleton = SecretStoreSkeleton & { + mappings?: SecretStoreMappingSkeleton[]; +}; + +export interface SecretStoreExportInterface { + meta?: ExportMetaData; + secretstore: Record; +} + +/** + * Create an empty secret store export template + * @returns {SecretStoreExportInterface} an empty secret store export template + */ +export function createSecretStoreExportTemplate({ + state, +}: { + state: State; +}): SecretStoreExportInterface { + return { + meta: getMetadata({ state }), + secretstore: {}, + }; +} + +/** + * Create secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {SecretStoreMappingSkeleton} secretStoreMappingData The secret store mapping data, + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object of the mapping created + */ +export async function createSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + secretStoreMappingData: SecretStoreMappingSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.createSecretStoreMapping: start`, + state, + }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + if (!canSecretStoreHaveMappings(secretStoreTypeId)) + throw new FrodoError( + `Cannot create mappings for the secret store type '${secretStoreTypeId}'` + ); + const mapping = await _createSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig, + state, + }); + debugMessage({ + message: `SecretStoreOps.createSecretStoreMapping: end`, + state, + }); + return mapping; + } catch (error) { + throw new FrodoError( + `Error creating mapping '${secretStoreMappingData.secretId}' for the secret store '${secretStoreId}'`, + error + ); + } +} + +/** + * Read secret store by id. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ +export async function readSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + globalConfig: boolean; + state: State; +}): Promise { + try { + return secretStoreTypeId + ? await getSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }) + : await findSecretStore({ secretStoreId, globalConfig, state }); + } catch (error) { + throw new FrodoError( + `Error reading secret store ${secretStoreId} of type ${secretStoreTypeId}`, + error + ); + } +} + +/** + * Read secret store schema + * @param {string} secretStoreTypeId Secret store type id + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store schema object + */ +export async function readSecretStoreSchema({ + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreTypeId: string; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.readSecretStoreSchema: start`, + state, + }); + const result = await getSecretStoreSchema({ + secretStoreTypeId, + globalConfig, + state, + }); + debugMessage({ + message: `SecretStoreOps.readSecretStoreSchema: end`, + state, + }); + return result; + } catch (error) { + throw new FrodoError( + `Error reading secret store schema for type ${secretStoreTypeId}`, + error + ); + } +} + +/** + * Read all secret stores. + * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store objects + */ +export async function readSecretStores({ + globalConfig = false, + state, +}: { + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.readSecretStores: start`, + state, + }); + const isCloudDeployment = + state.getDeploymentType() === Constants.CLOUD_DEPLOYMENT_TYPE_KEY; + const result = isCloudDeployment + ? [ + await getSecretStore({ + secretStoreId: 'ESV', + secretStoreTypeId: 'GoogleSecretManagerSecretStoreProvider', + globalConfig, + state, + }), + ] + : (await getSecretStores({ globalConfig, state })).result; + debugMessage({ message: `SecretStoreOps.readSecretStores: end`, state }); + return result; + } catch (error) { + throw new FrodoError(`Error reading secret stores`, error); + } +} + +/** + * Read secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ +export async function readSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + secretId: string; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.readSecretStoreMapping: start`, + state, + }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + if (!canSecretStoreHaveMappings(secretStoreTypeId)) + throw new FrodoError( + `No mappings exist for the secret store type '${secretStoreTypeId}'` + ); + const mapping = await getSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig, + state, + }); + debugMessage({ + message: `SecretStoreOps.readSecretStoreMapping: end`, + state, + }); + return mapping; + } catch (error) { + throw new FrodoError( + `Error reading secret store mapping '${secretId}' for the secret store '${secretStoreId}'`, + error + ); + } +} + +/** + * Read secret store mappings. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to an array of secret store mapping objects + */ +export async function readSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.readSecretStoreMappings: start`, + state, + }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + if (!canSecretStoreHaveMappings(secretStoreTypeId)) + throw new FrodoError( + `No mappings exist for the secret store type '${secretStoreTypeId}'` + ); + const { result } = await getSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + debugMessage({ + message: `SecretStoreOps.readSecretStoreMappings: end`, + state, + }); + return result; + } catch (error) { + throw new FrodoError( + `Error reading secret store mappings for the secret store '${secretStoreId}'`, + error + ); + } +} + +/** + * Export a single secret store by id. The response can be saved to file as is. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. + * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. + */ +export async function exportSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + globalConfig: boolean; + state: State; +}): Promise { + try { + const secretStore = (await readSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + })) as SecretStoreExportSkeleton; + if (canSecretStoreHaveMappings(secretStoreTypeId)) { + secretStore.mappings = await readSecretStoreMappings({ + secretStoreId, + secretStoreTypeId: secretStore._type._id, + globalConfig, + state, + }); + } + const exportData = createSecretStoreExportTemplate({ state }); + exportData.secretstore[secretStoreId] = + secretStore as SecretStoreExportSkeleton; + return exportData; + } catch (error) { + throw new FrodoError( + `Error exporting secret store ${secretStoreId}`, + error + ); + } +} + +/** + * Export all secret stores. The response can be saved to file as is. + * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. + * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. + */ +export async function exportSecretStores({ + globalConfig = false, + resultCallback = void 0, + state, +}: { + globalConfig: boolean; + resultCallback?: ResultCallback; + state: State; +}): Promise { + let indicatorId: string; + try { + debugMessage({ + message: `SecretStoreOps.exportSecretStores: start`, + state, + }); + const exportData = createSecretStoreExportTemplate({ state }); + const secretStores = await readSecretStores({ globalConfig, state }); + indicatorId = createProgressIndicator({ + total: secretStores.length, + message: 'Exporting secret stores...', + state, + }); + for (const secretStore of secretStores) { + updateProgressIndicator({ + id: indicatorId, + message: `Exporting secret store ${secretStore._id}`, + state, + }); + if (canSecretStoreHaveMappings(secretStore._type._id)) { + try { + secretStore.mappings = await readSecretStoreMappings({ + secretStoreId: secretStore._id, + secretStoreTypeId: secretStore._type._id, + globalConfig, + state, + }); + } catch (e) { + if (resultCallback) resultCallback(e); + } + } + exportData.secretstore[secretStore._id] = + secretStore as SecretStoreExportSkeleton; + if (resultCallback) resultCallback(undefined, secretStore); + } + stopProgressIndicator({ + id: indicatorId, + message: `Exported ${secretStores.length} secret stores.`, + state, + }); + debugMessage({ message: `SecretStoreOps.exportSecretStores: end`, state }); + return exportData; + } catch (error) { + stopProgressIndicator({ + id: indicatorId, + message: `Error exporting secret stores.`, + status: 'fail', + state, + }); + throw new FrodoError(`Error reading secret stores`, error); + } +} + +/** + * Update secret store + * @param {SecretStoreSkeleton} secretStoreData secret store to import + * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ +export async function updateSecretStore({ + secretStoreData, + globalConfig, + state, +}: { + secretStoreData: SecretStoreSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + return putSecretStore({ + secretStoreData, + globalConfig, + state, + }); +} + +/** + * Update secret store mapping. Will throw if type is not defined and multiple secret stores with the same id are found. + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +export async function updateSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + secretStoreMappingData: SecretStoreMappingSkeleton; + globalConfig: boolean; + state: State; +}): Promise { + if (!secretStoreTypeId) + secretStoreTypeId = + secretStoreMappingData._type?._id || + (await findSecretStore({ secretStoreId, globalConfig, state }))._type._id; + return putSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretStoreMappingData, + globalConfig, + state, + }); +} +/** + * Import secret stores and mappings + * @param {SecretStoreExportInterface} importData secret store import data + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @param {string} secretStoreId optional secret store id. If supplied, only the secret store of that id is imported. + * @param {string} secretStoreTypeId optional secret store type id + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} the imported secret stores and mappings + */ +export async function importSecretStores({ + importData, + globalConfig, + secretStoreId, + secretStoreTypeId, + resultCallback = void 0, + state, +}: { + importData: SecretStoreExportInterface; + globalConfig: boolean; + secretStoreId?: string; + secretStoreTypeId?: string; + resultCallback?: ResultCallback; + state: State; +}): Promise { + debugMessage({ + message: `SecretStoreOps.importSecretStores: start`, + state, + }); + const response = []; + for (const secretStore of Object.values(importData.secretstore)) { + try { + if (secretStoreId && secretStore._id !== secretStoreId) { + continue; + } + if (secretStoreId && !secretStoreTypeId) + secretStoreTypeId = + secretStore._type?._id || + (await findSecretStore({ secretStoreId, globalConfig, state }))._type + ._id; + const isCloudDeployment = + state.getDeploymentType() === Constants.CLOUD_DEPLOYMENT_TYPE_KEY; + let result = secretStore; + const secretStoreMappings = secretStore.mappings; + // Do secret store import first in case it doesn't exist + if (!isCloudDeployment || secretStore._id !== 'ESV') { + delete secretStore.mappings; + result = (await updateSecretStore({ + secretStoreData: secretStore, + globalConfig, + state, + })) as SecretStoreExportSkeleton; + } + secretStore.mappings = secretStoreMappings; + // Do mapping imports next + if (secretStoreMappings) { + try { + result.mappings = []; + for (const mapping of secretStoreMappings) { + result.mappings.push( + await updateSecretStoreMapping({ + secretStoreId: secretStore._id, + secretStoreTypeId: secretStore._type._id, + secretStoreMappingData: mapping, + globalConfig, + state, + }) + ); + } + } catch (e) { + if (resultCallback) resultCallback(e); + } + } + response.push(result); + if (resultCallback) resultCallback(undefined, result); + } catch (error) { + if (resultCallback) resultCallback(error); + } + } + debugMessage({ message: `SecretStoreOps.importSecretStores: end`, state }); + return response; +} + +/** + * Delete secret store by id + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store object + */ +export async function deleteSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ message: `SecretStoreOps.deleteSecretStore: start`, state }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + const store = await _deleteSecretStore({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + }); + debugMessage({ message: `SecretStoreOps.deleteSecretStore: end`, state }); + return store; + } catch (e) { + throw new FrodoError(`Error deleting the secret store ${secretStoreId}`, e); + } +} + +/** + * Delete all secret stores + * @param {boolean} globalConfig true if the secret store mappings are global, false otherwise. Default: false. + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} a promise that resolves to an array of secret store objects + */ +export async function deleteSecretStores({ + globalConfig = false, + resultCallback = void 0, + state, +}: { + globalConfig: boolean; + resultCallback?: ResultCallback; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.deleteSecretStores: start`, + state, + }); + const deleted = []; + for (const store of await readSecretStores({ globalConfig, state })) { + const result = await getResult( + resultCallback, + undefined, + deleteSecretStore, + { + secretStoreId: store._id, + secretStoreTypeId: store._type._id, + globalConfig, + state, + } + ); + deleted.push(result); + } + debugMessage({ message: `SecretStoreOps.deleteSecretStores: end`, state }); + return deleted.filter((s) => s); + } catch (e) { + throw new FrodoError(`Error deleting secret stores`, e); + } +} + +/** + * Delete secret store mapping + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {string} secretId Secret store mapping label + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +export async function deleteSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig = false, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + secretId: string; + globalConfig: boolean; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.deleteSecretStoreMapping: start`, + state, + }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + const store = await _deleteSecretStoreMapping({ + secretStoreId, + secretStoreTypeId, + secretId, + globalConfig, + state, + }); + debugMessage({ + message: `SecretStoreOps.deleteSecretStoreMapping: end`, + state, + }); + return store; + } catch (e) { + throw new FrodoError( + `Error deleting the secret store mapping ${secretId} from the secret store ${secretStoreId}`, + e + ); + } +} + +/** + * Delete secret store mappings + * @param {string} secretStoreId Secret store id + * @param {string | undefined} secretStoreTypeId Secret store type id (optional) + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @param {ResultCallback} resultCallback Optional callback to process individual results + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +export async function deleteSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig = false, + resultCallback = void 0, + state, +}: { + secretStoreId: string; + secretStoreTypeId: string | undefined; + globalConfig: boolean; + resultCallback?: ResultCallback; + state: State; +}): Promise { + try { + debugMessage({ + message: `SecretStoreOps.deleteSecretStoreMappings: start`, + state, + }); + if (!secretStoreTypeId) + secretStoreTypeId = ( + await findSecretStore({ secretStoreId, globalConfig, state }) + )._type._id; + const deleted = []; + for (const mapping of await readSecretStoreMappings({ + secretStoreId, + secretStoreTypeId, + globalConfig, + state, + })) { + const result = await getResult( + resultCallback, + undefined, + deleteSecretStoreMapping, + { + secretStoreId, + secretStoreTypeId, + secretId: mapping._id, + globalConfig, + state, + } + ); + deleted.push(result); + } + debugMessage({ + message: `SecretStoreOps.deleteSecretStoreMappings: end`, + state, + }); + return deleted.filter((s) => s); + } catch (e) { + throw new FrodoError( + `Error deleting the secret store mappings from the secret store ${secretStoreId}`, + e + ); + } +} + +/** + * Function that returns true if the given secret store type can have mappings, false otherwise + * @param secretStoreTypeId The secret store type + * @returns true if the given secret store type can have mappings, false otherwise + */ +export function canSecretStoreHaveMappings(secretStoreTypeId: string): boolean { + return !SECRET_STORES_WITH_NO_MAPPINGS.includes(secretStoreTypeId); +} + +/** + * Helper to find a secret store with a specified id. Throws if none or multiple secret stores with the same id are found across different secret store types. + * @param {string} secretStoreId Secret store id + * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. + * @returns {Promise} a promise that resolves to a secret store mapping object + */ +async function findSecretStore({ + secretStoreId, + globalConfig = false, + state, +}: { + secretStoreId: string; + globalConfig: boolean; + state: State; +}): Promise { + const stores = ( + await readSecretStores({ + globalConfig, + state, + }) + ).filter((s) => s._id === secretStoreId); + if (stores.length === 0) { + throw new FrodoError( + `No secret store found with the id '${secretStoreId}'` + ); + } + if (stores.length > 1) { + throw new FrodoError( + `Multiple secret stores found with the id '${secretStoreId}'` + ); + } + return stores[0]; +} diff --git a/src/ops/classic/SecretStoreOps.test.ts b/src/ops/classic/SecretStoreOps.test.ts deleted file mode 100644 index a9df10109..000000000 --- a/src/ops/classic/SecretStoreOps.test.ts +++ /dev/null @@ -1,142 +0,0 @@ -/** - * To record and update snapshots, you must perform 3 steps in order: - * - * 1. Record API responses - * - * Recording requires an available classic deployment, since secret stores - * can only be accessed in classic. Set FRODO_HOST and FRODO_REALM - * environment variables or alternatively FRODO_DEPLOY=classic - * in order to appropriately record requests to the classic deployment. - * - * To record API responses, you must call the test:record script and - * override all the connection state required to connect to the - * env to record from: - * - * ATTENTION: For the recording to succeed, you MUST make sure to use a - * user account, not a service account. - * - * FRODO_DEBUG=1 FRODO_HOST=frodo-dev npm run test:record SecretStoreOps - * - * The above command assumes that you have a connection profile for - * 'frodo-dev' on your development machine. - * - * 2. Update snapshots - * - * After recording API responses, you must manually update/create snapshots - * by running: - * - * FRODO_DEBUG=1 npm run test:update SecretStoreOps - * - * 3. Test your changes - * - * If 1 and 2 didn't produce any errors, you are ready to run the tests in - * replay mode and make sure they all succeed as well: - * - * FRODO_DEBUG=1 npm run test:only SecretStoreOps - * - * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output - * in case things don't function as expected - */ -import { autoSetupPolly, setDefaultState } from "../../utils/AutoSetupPolly"; -import { filterRecording } from "../../utils/PollyUtils"; -import * as SecretStoreOps from "./SecretStoreOps"; -import { state } from "../../lib/FrodoLib"; -import Constants from "../../shared/Constants"; - -const ctx = autoSetupPolly(); - -describe('SecretStoreOps', () => { - beforeEach(async () => { - if (process.env.FRODO_POLLY_MODE === 'record') { - ctx.polly.server.any().on('beforePersist', (_req, recording) => { - filterRecording(recording); - }); - } - setDefaultState(Constants.CLASSIC_DEPLOYMENT_TYPE_KEY); - }); - - describe('createSecretStoreExportTemplate()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.createSecretStoreExportTemplate).toBeDefined(); - }); - - test('1: Create SecretStore Export Template', async () => { - const response = SecretStoreOps.createSecretStoreExportTemplate({ state }); - expect(response).toMatchSnapshot({ - meta: expect.any(Object), - }); - }); - }); - - describe('readSecretStore()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.readSecretStore).toBeDefined(); - }); - //TODO: create tests - }); - - describe('readSecretStores()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.readSecretStores).toBeDefined(); - }); - - test('1: Read realm SecretStores', async () => { - const response = await SecretStoreOps.readSecretStores({ globalConfig: false, state }); - expect(response).toMatchSnapshot(); - }); - - test('2: Read global SecretStores', async () => { - const response = await SecretStoreOps.readSecretStores({ globalConfig: true, state }); - expect(response).toMatchSnapshot(); - }); - }); - - describe('exportSecretStore()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.exportSecretStore).toBeDefined(); - }); - //TODO: create tests - }); - - describe('exportSecretStores()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.exportSecretStores).toBeDefined(); - }); - - test('1: Export realm SecretStores', async () => { - const response = await SecretStoreOps.exportSecretStores({ globalConfig: false, state }); - expect(response).toMatchSnapshot({ - meta: expect.any(Object), - }); - }); - - test('2: Export global SecretStores', async () => { - const response = await SecretStoreOps.exportSecretStores({ globalConfig: true, state }); - expect(response).toMatchSnapshot({ - meta: expect.any(Object), - }); - }); - }); - - describe('updateSecretStore()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.updateSecretStore).toBeDefined(); - }); - //TODO: create tests - }); - - describe('updateSecretStoreMapping()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.updateSecretStoreMapping).toBeDefined(); - }); - //TODO: create tests - }); - - describe('importSecretStores()', () => { - test('0: Method is implemented', async () => { - expect(SecretStoreOps.importSecretStores).toBeDefined(); - }); - //TODO: create tests - }); - -}); diff --git a/src/ops/classic/SecretStoreOps.ts b/src/ops/classic/SecretStoreOps.ts deleted file mode 100644 index 1f9062e3d..000000000 --- a/src/ops/classic/SecretStoreOps.ts +++ /dev/null @@ -1,538 +0,0 @@ -import { - getSecretStoreMappings, - getSecretStores, - putSecretStore, - putSecretStoreMapping, - SecretStoreMappingSkeleton, - SecretStoreSkeleton, -} from '../../api/classic/SecretStoreApi'; -import { State } from '../../shared/State'; -import { - createProgressIndicator, - debugMessage, - printMessage, - stopProgressIndicator, - updateProgressIndicator, -} from '../../utils/Console'; -import { getMetadata } from '../../utils/ExportImportUtils'; -import { FrodoError } from '../FrodoError'; -import { ExportMetaData } from '../OpsTypes'; - -export type SecretStore = { - /** - * Create an empty secret store export template - * @returns {SecretStoreExportInterface} an empty secret store export template - */ - createSecretStoreExportTemplate(): SecretStoreExportInterface; - /** - * Read secret store by id - * @param {string} secretStoreId Secret store id - * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store object - */ - readSecretStore( - secretStoreId: string, - globalConfig: boolean - ): Promise; - /** - * Read all secret stores. - * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to an array of secret store objects - */ - readSecretStores(globalConfig: boolean): Promise; - /** - * Read secret store mappings - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to an array of secret store mapping objects - */ - readSecretStoreMappings( - secretStoreId: string, - secretStoreTypeId: string, - globalConfig: boolean - ): Promise; - /** - * Export a single secret store by id. The response can be saved to file as is. - * @param {string} secretStoreId Secret store id - * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. - * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. - */ - exportSecretStore( - secretStoreId: string, - globalConfig: boolean - ): Promise; - /** - * Export all secret stores. The response can be saved to file as is. - * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. - * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. - */ - exportSecretStores( - globalConfig: boolean - ): Promise; - /** - * Update secret store - * @param {SecretStoreSkeleton} secretStoreData secret store to import - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store object - */ - updateSecretStore( - secretStoreData: SecretStoreSkeleton, - globalConfig: boolean - ): Promise; - /** - * Update secret store mapping - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import - * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store mapping object - */ - updateSecretStoreMapping( - secretStoreId: string, - secretStoreTypeId: string, - secretStoreMappingData: SecretStoreMappingSkeleton, - globalConfig: boolean - ): Promise; - /** - * Import secret stores and mappings - * @param {SecretStoreExportInterface} importData secret store import data - * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. - * @param {string} secretStoreId optional secret store id. If supplied, only the secret store of that id is imported. - * @returns {Promise} the imported secret stores and mappings - */ - importSecretStores( - importData: SecretStoreExportInterface, - globalConfig: boolean, - secretStoreId?: string - ): Promise; -}; - -export default (state: State): SecretStore => { - return { - createSecretStoreExportTemplate(): SecretStoreExportInterface { - return createSecretStoreExportTemplate({ state }); - }, - async readSecretStore( - secretStoreId: string, - globalConfig: boolean = false - ): Promise { - return readSecretStore({ secretStoreId, globalConfig, state }); - }, - async readSecretStores( - globalConfig: boolean = false - ): Promise { - return readSecretStores({ globalConfig, state }); - }, - async readSecretStoreMappings( - secretStoreId: string, - secretStoreTypeId: string, - globalConfig: boolean = false - ): Promise { - return readSecretStoreMappings({ - secretStoreId, - secretStoreTypeId, - globalConfig, - state, - }); - }, - async exportSecretStore( - secretStoreId: string, - globalConfig: boolean = false - ): Promise { - return exportSecretStore({ secretStoreId, globalConfig, state }); - }, - async exportSecretStores( - globalConfig: boolean = false - ): Promise { - return exportSecretStores({ globalConfig, state }); - }, - async updateSecretStore( - secretStoreData: SecretStoreSkeleton, - globalConfig: boolean = false - ): Promise { - return updateSecretStore({ - secretStoreData, - globalConfig, - state, - }); - }, - async updateSecretStoreMapping( - secretStoreId: string, - secretStoreTypeId: string, - secretStoreMappingData: SecretStoreMappingSkeleton, - globalConfig: boolean = false - ): Promise { - return updateSecretStoreMapping({ - secretStoreId, - secretStoreTypeId, - secretStoreMappingData, - globalConfig, - state, - }); - }, - async importSecretStores( - importData: SecretStoreExportInterface, - globalConfig: boolean = false, - secretStoreId?: string - ): Promise { - return importSecretStores({ - importData, - globalConfig, - secretStoreId, - state, - }); - }, - }; -}; - -export type SecretStoreExportSkeleton = SecretStoreSkeleton & { - mappings: SecretStoreMappingSkeleton[]; -}; - -export interface SecretStoreExportInterface { - meta?: ExportMetaData; - secretstore: Record; -} - -/** - * Create an empty secret store export template - * @returns {SecretStoreExportInterface} an empty secret store export template - */ -export function createSecretStoreExportTemplate({ - state, -}: { - state: State; -}): SecretStoreExportInterface { - return { - meta: getMetadata({ state }), - secretstore: {}, - }; -} - -/** - * Read secret store by id - * @param {string} secretStoreId Secret store id - * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store object - */ -export async function readSecretStore({ - secretStoreId, - globalConfig = false, - state, -}: { - secretStoreId: string; - globalConfig: boolean; - state: State; -}): Promise { - try { - const found = (await readSecretStores({ globalConfig, state })).filter( - (secretStore) => secretStore._id === secretStoreId - ); - if (found.length === 1) { - return found[0]; - } - throw new Error(`Secret store with id '${secretStoreId}' not found!`); - } catch (error) { - throw new FrodoError(`Error reading secret store ${secretStoreId}`, error); - } -} - -/** - * Read all secret stores. - * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to an array of secret store objects - */ -export async function readSecretStores({ - globalConfig = false, - state, -}: { - globalConfig: boolean; - state: State; -}): Promise { - try { - debugMessage({ - message: `SecretStoreOps.readSecretStores: start`, - state, - }); - const { result } = await getSecretStores({ globalConfig, state }); - debugMessage({ message: `SecretStoreOps.readSecretStores: end`, state }); - return result; - } catch (error) { - throw new FrodoError(`Error reading secret stores`, error); - } -} - -/** - * Read secret store mappings - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to an array of secret store mapping objects - */ -export async function readSecretStoreMappings({ - secretStoreId, - secretStoreTypeId, - globalConfig = false, - state, -}: { - secretStoreId: string; - secretStoreTypeId: string; - globalConfig: boolean; - state: State; -}): Promise { - try { - debugMessage({ - message: `SecretStoreOps.readSecretStoreMappings: start`, - state, - }); - const { result } = await getSecretStoreMappings({ - secretStoreId, - secretStoreTypeId, - globalConfig, - state, - }); - debugMessage({ - message: `SecretStoreOps.readSecretStoreMappings: end`, - state, - }); - return result; - } catch (error) { - if (error.httpStatus === 404 || error.response?.status === 404) { - //Ignore this case since not all secret stores have mappings - } else { - throw new FrodoError( - `Error reading secret store mappings for the secret store '${secretStoreId}'`, - error - ); - } - } -} - -/** - * Export a single secret store by id. The response can be saved to file as is. - * @param {string} secretStoreId Secret store id - * @param {boolean} globalConfig true if global secret store is the target of the operation, false otherwise. Default: false. - * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. - */ -export async function exportSecretStore({ - secretStoreId, - globalConfig = false, - state, -}: { - secretStoreId: string; - globalConfig: boolean; - state: State; -}): Promise { - try { - const secretStore = (await readSecretStore({ - secretStoreId, - globalConfig, - state, - })) as SecretStoreExportSkeleton; - secretStore.mappings = await readSecretStoreMappings({ - secretStoreId, - secretStoreTypeId: secretStore._type._id, - globalConfig, - state, - }); - const exportData = createSecretStoreExportTemplate({ state }); - exportData.secretstore[secretStoreId] = - secretStore as SecretStoreExportSkeleton; - return exportData; - } catch (error) { - throw new FrodoError( - `Error exporting secret store ${secretStoreId}`, - error - ); - } -} - -/** - * Export all secret stores. The response can be saved to file as is. - * @param {boolean} globalConfig true if global secret stores are the target of the operation, false otherwise. Default: false. - * @returns {Promise} Promise resolving to a SecretStoreExportInterface object. - */ -export async function exportSecretStores({ - globalConfig = false, - state, -}: { - globalConfig: boolean; - state: State; -}): Promise { - let indicatorId: string; - try { - debugMessage({ - message: `SecretStoreOps.exportSecretStores: start`, - state, - }); - const exportData = createSecretStoreExportTemplate({ state }); - const secretStores = await readSecretStores({ globalConfig, state }); - indicatorId = createProgressIndicator({ - total: secretStores.length, - message: 'Exporting secret stores...', - state, - }); - for (const secretStore of secretStores) { - updateProgressIndicator({ - id: indicatorId, - message: `Exporting secret store ${secretStore._id}`, - state, - }); - try { - secretStore.mappings = await readSecretStoreMappings({ - secretStoreId: secretStore._id, - secretStoreTypeId: secretStore._type._id, - globalConfig, - state, - }); - } catch (e) { - printMessage({ - message: `Unable to export mapping for secret store with id '${secretStore._id}': ${e.message}`, - type: 'error', - state, - }); - } - exportData.secretstore[secretStore._id] = - secretStore as SecretStoreExportSkeleton; - } - stopProgressIndicator({ - id: indicatorId, - message: `Exported ${secretStores.length} secret stores.`, - state, - }); - debugMessage({ message: `SecretStoreOps.exportSecretStores: end`, state }); - return exportData; - } catch (error) { - stopProgressIndicator({ - id: indicatorId, - message: `Error exporting secret stores.`, - status: 'fail', - state, - }); - throw new FrodoError(`Error reading secret stores`, error); - } -} - -/** - * Update secret store - * @param {SecretStoreSkeleton} secretStoreData secret store to import - * @param {boolean} globalConfig true if the secret store is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store object - */ -export async function updateSecretStore({ - secretStoreData, - globalConfig, - state, -}: { - secretStoreData: SecretStoreSkeleton; - globalConfig: boolean; - state: State; -}): Promise { - return putSecretStore({ - secretStoreData, - globalConfig, - state, - }); -} - -/** - * Update secret store mapping - * @param {string} secretStoreId Secret store id - * @param {string} secretStoreTypeId Secret store type id - * @param {SecretStoreMappingSkeleton} secretStoreMappingData secret store mapping to import - * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. - * @returns {Promise} a promise that resolves to a secret store mapping object - */ -export async function updateSecretStoreMapping({ - secretStoreId, - secretStoreTypeId, - secretStoreMappingData, - globalConfig, - state, -}: { - secretStoreId: string; - secretStoreTypeId: string; - secretStoreMappingData: SecretStoreMappingSkeleton; - globalConfig: boolean; - state: State; -}): Promise { - return putSecretStoreMapping({ - secretStoreId, - secretStoreTypeId, - secretStoreMappingData, - globalConfig, - state, - }); -} -/** - * Import secret stores and mappings - * @param {SecretStoreExportInterface} importData secret store import data - * @param {boolean} globalConfig true if the secret store mapping is global, false otherwise. Default: false. - * @param {string} secretStoreId optional secret store id. If supplied, only the secret store of that id is imported. - * @returns {Promise} the imported secret stores and mappings - */ -export async function importSecretStores({ - importData, - globalConfig, - secretStoreId, - state, -}: { - importData: SecretStoreExportInterface; - globalConfig: boolean; - secretStoreId?: string; - state: State; -}): Promise { - const errors = []; - try { - debugMessage({ - message: `SecretStoreOps.importSecretStores: start`, - state, - }); - const response = []; - for (const secretStore of Object.values(importData.secretstore)) { - try { - if (secretStoreId && secretStore._id !== secretStoreId) { - continue; - } - let mappings; - if (secretStore.mappings) { - mappings = []; - for (const mapping of secretStore.mappings) { - mappings.push( - updateSecretStoreMapping({ - secretStoreId: secretStore._id, - secretStoreTypeId: secretStore._type._id, - secretStoreMappingData: mapping, - globalConfig, - state, - }) - ); - } - mappings = await Promise.all(mappings); - } - delete secretStore.mappings; - const result = await updateSecretStore({ - secretStoreData: secretStore, - globalConfig, - state, - }); - result.mappings = mappings; - response.push(result); - } catch (error) { - errors.push(error); - } - } - if (errors.length > 0) { - throw new FrodoError(`Error importing secret stores`, errors); - } - debugMessage({ message: `SecretStoreOps.importSecretStores: end`, state }); - return response; - } catch (error) { - // re-throw previously caught errors - if (errors.length > 0) { - throw error; - } - throw new FrodoError(`Error importing secret stores`, error); - } -} diff --git a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/1-Export-everything-with-string-arrays-decoding-variables-including-journey-coordinates-a_2200088734/recording.har b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/1-Export-everything-with-string-arrays-decoding-variables-including-journey-coordinates-a_2200088734/recording.har index ce6d1f04a..484859bac 100644 --- a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/1-Export-everything-with-string-arrays-decoding-variables-including-journey-coordinates-a_2200088734/recording.har +++ b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/1-Export-everything-with-string-arrays-decoding-variables-including-journey-coordinates-a_2200088734/recording.har @@ -7,6 +7,612 @@ "version": "6.0.6" }, "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.851Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.953Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + }, + { + "_id": "311fadb27d8b95716d000e9253df7d7f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.342Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "1300ccffbed25906f8097b6f35cab77f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.459Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, { "_id": "fc71be44855f4e764537c68893e9a626", "_order": 0, diff --git a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/2-Export-everything-without-string-arrays-decoding-variables-excluding-journey-coordinate_3883162875/recording.har b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/2-Export-everything-without-string-arrays-decoding-variables-excluding-journey-coordinate_3883162875/recording.har index f32264cb1..f3196ee00 100644 --- a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/2-Export-everything-without-string-arrays-decoding-variables-excluding-journey-coordinate_3883162875/recording.har +++ b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/2-Export-everything-without-string-arrays-decoding-variables-excluding-journey-coordinate_3883162875/recording.har @@ -7,6 +7,612 @@ "version": "6.0.6" }, "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.851Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.953Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + }, + { + "_id": "311fadb27d8b95716d000e9253df7d7f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.342Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "1300ccffbed25906f8097b6f35cab77f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.459Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, { "_id": "fc71be44855f4e764537c68893e9a626", "_order": 0, diff --git a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/3-Export-only-importable-config-with-string-arrays-decoding-variables-including-journey-c_2747516410/recording.har b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/3-Export-only-importable-config-with-string-arrays-decoding-variables-including-journey-c_2747516410/recording.har index f4174f16a..c173b2008 100644 --- a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/3-Export-only-importable-config-with-string-arrays-decoding-variables-including-journey-c_2747516410/recording.har +++ b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/3-Export-only-importable-config-with-string-arrays-decoding-variables-including-journey-c_2747516410/recording.har @@ -7,6 +7,612 @@ "version": "6.0.6" }, "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.851Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.953Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + }, + { + "_id": "311fadb27d8b95716d000e9253df7d7f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.342Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "1300ccffbed25906f8097b6f35cab77f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.459Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, { "_id": "fc71be44855f4e764537c68893e9a626", "_order": 0, diff --git a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/4-Export-only-alpha-realm-config-with-string-arrays-decoding-variables-including-journey-c_671213369/recording.har b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/4-Export-only-alpha-realm-config-with-string-arrays-decoding-variables-including-journey-c_671213369/recording.har index 8043f9d76..d668d5138 100644 --- a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/4-Export-only-alpha-realm-config-with-string-arrays-decoding-variables-including-journey-c_671213369/recording.har +++ b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/4-Export-only-alpha-realm-config-with-string-arrays-decoding-variables-including-journey-c_671213369/recording.har @@ -7,6 +7,612 @@ "version": "6.0.6" }, "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.851Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.953Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + }, + { + "_id": "311fadb27d8b95716d000e9253df7d7f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.342Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "1300ccffbed25906f8097b6f35cab77f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.459Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, { "_id": "fc71be44855f4e764537c68893e9a626", "_order": 0, diff --git a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/5-Export-only-global-config-with-string-arrays-decoding-variables-including-journey-coord_3002604266/recording.har b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/5-Export-only-global-config-with-string-arrays-decoding-variables-including-journey-coord_3002604266/recording.har index 0babc7ecd..e106133c0 100644 --- a/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/5-Export-only-global-config-with-string-arrays-decoding-variables-including-journey-coord_3002604266/recording.har +++ b/src/test/mock-recordings/ConfigOps_2138586609/Cloud-Tests_2178067211/exportFullConfiguration_221463303/5-Export-only-global-config-with-string-arrays-decoding-variables-including-journey-coord_3002604266/recording.har @@ -7,6 +7,612 @@ "version": "6.0.6" }, "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.851Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:25.953Z", + "time": 72, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 72 + } + }, + { + "_id": "311fadb27d8b95716d000e9253df7d7f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 785, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.342Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "1300ccffbed25906f8097b6f35cab77f", + "_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/3.0.1" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/bravo/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 07 Mar 2025 17:36:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0e650ca2-c69f-41ec-aa5b-05bf62034516" + }, + { + "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": 766, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-03-07T17:36:36.459Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, { "_id": "fc71be44855f4e764537c68893e9a626", "_order": 0, diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/createSecretStoreMapping_3494301463/0-Create-global-secret-store-mapping_310917655/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/createSecretStoreMapping_3494301463/0-Create-global-secret-store-mapping_310917655/recording.har new file mode 100644 index 000000000..40e916382 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/createSecretStoreMapping_3494301463/0-Create-global-secret-store-mapping_310917655/recording.har @@ -0,0 +1,882 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/createSecretStoreMapping()/0: Create global secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 608, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:29.244Z", + "time": 135, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 135 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 649, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:29.387Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 677, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:29.513Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.634Z", + "time": 12, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 12 + } + }, + { + "_id": "94f77490d670cb14dfad0aa0475b7ed9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 634, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.651Z", + "time": 110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 110 + } + }, + { + "_id": "b40fce5fa4e89aec63ec31e532a995ca", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 635, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_action=create" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 649, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:29.780Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMapping_580411860/0-Delete-global-secret-store-mapping_4173516424/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMapping_580411860/0-Delete-global-secret-store-mapping_4173516424/recording.har new file mode 100644 index 000000000..263b3c77c --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMapping_580411860/0-Delete-global-secret-store-mapping_4173516424/recording.har @@ -0,0 +1,725 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/deleteSecretStoreMapping()/0: Delete global secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.238Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 649, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:31.252Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 677, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:31.369Z", + "time": 110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 110 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 686, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 686, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "686" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.484Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "94f77490d670cb14dfad0aa0475b7ed9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 634, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.500Z", + "time": 110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 110 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMappings_3947745271/0-Delete-global-secret-store-mappings_2511066401/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMappings_3947745271/0-Delete-global-secret-store-mappings_2511066401/recording.har new file mode 100644 index 000000000..497194090 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStoreMappings_3947745271/0-Delete-global-secret-store-mappings_2511066401/recording.har @@ -0,0 +1,992 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/deleteSecretStoreMappings()/0: Delete global secret store mappings", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.618Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 649, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:31.631Z", + "time": 110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 110 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.745Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 686, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 686, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "686" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.760Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "4669dbd7756c299a1341a23d66896841", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 616, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 590, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 590, + "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":2,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "590" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 492, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.771Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "cb700c8766bbc0836597c3ee3927ed1b", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 661, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.783Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + }, + { + "_id": "94f77490d670cb14dfad0aa0475b7ed9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 634, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:32 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.900Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStore_1886580992/0-Delete-global-secret-store_279197522/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStore_1886580992/0-Delete-global-secret-store_279197522/recording.har new file mode 100644 index 000000000..928be9282 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStore_1886580992/0-Delete-global-secret-store_279197522/recording.har @@ -0,0 +1,717 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/deleteSecretStore()/0: Delete global secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.515Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.526Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.540Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 686, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 686, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "686" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.553Z", + "time": 11, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 11 + } + }, + { + "_id": "94f77490d670cb14dfad0aa0475b7ed9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 634, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.569Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStores_1727803707/0-Delete-global-secret-stores_1401080051/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStores_1727803707/0-Delete-global-secret-stores_1401080051/recording.har new file mode 100644 index 000000000..8952b82ab --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/deleteSecretStores_1727803707/0-Delete-global-secret-stores_1401080051/recording.har @@ -0,0 +1,1259 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/deleteSecretStores()/0: Delete global secret stores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 686, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 686, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "686" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.689Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "4669dbd7756c299a1341a23d66896841", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 616, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 387, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 387, + "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "387" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 492, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.701Z", + "time": 4, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4 + } + }, + { + "_id": "4efdeb8ff240194be92c1ecb17d6a610", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 592, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.722Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "4137aeea6212168f33aca4f61c00396a", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 596, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2" + }, + "response": { + "bodySize": 216, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 216, + "text": "{\"_id\":\"test-keystore-2\",\"_rev\":\"1389724204\",\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1389724204\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "216" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.842Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + }, + { + "_id": "1982a9c50bf62b93af8b6c15eb189d94", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 599, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/EnvironmentAndSystemPropertySecretStore/" + }, + "response": { + "bodySize": 88, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 88, + "text": "{\"code\":400,\"reason\":\"Bad Request\",\"message\":\"The singleton resource cannot be deleted\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "88" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 435, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-09-22T18:32:30.955Z", + "time": 4, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4 + } + }, + { + "_id": "395cda637d7de02c091d18dab60c4f10", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 608, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:30.973Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "07a03827f34d75e4636d85b5d10f720d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 249, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 128, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 128, + "text": "{\"code\":400,\"reason\":\"Bad Request\",\"message\":\"Invalid attribute specified.\",\"detail\":{\"validAttributes\":[\"aliases\",\"secretId\"]}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "connection", + "value": "close" + } + ], + "headersSize": 436, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-09-22T18:32:31.092Z", + "time": 3, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3 + } + }, + { + "_id": "26359b3f68e0eef30343e433c12c8209", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 196, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "196" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 614, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2" + }, + "response": { + "bodySize": 216, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 216, + "text": "{\"_id\":\"test-keystore-2\",\"_rev\":\"1389724204\",\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1389724204\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "216" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 612, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:31.101Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + }, + { + "_id": "d4d3708e38c623ae8bea4a4f6fdec48e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 199, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "199" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 617, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/EnvironmentAndSystemPropertySecretStore/" + }, + "response": { + "bodySize": 181, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 181, + "text": "{\"_id\":\"\",\"_rev\":\"-1564989563\",\"format\":\"BASE64\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1564989563\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "181" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:31 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 486, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:31.220Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStore_3107140639/0-Export-global-secret-store_2107769747/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStore_3107140639/0-Export-global-secret-store_2107769747/recording.har new file mode 100644 index 000000000..e6d1e979d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStore_3107140639/0-Export-global-secret-store_2107769747/recording.har @@ -0,0 +1,718 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/exportSecretStore()/0: Export global secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.160Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.172Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.187Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.201Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "4669dbd7756c299a1341a23d66896841", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 616, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 590, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 590, + "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":2,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "590" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 492, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.214Z", + "time": 4, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/0-Export-realm-SecretStores_2773206430/recording.har similarity index 80% rename from src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har rename to src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/0-Export-realm-SecretStores_2773206430/recording.har index d46ce44d0..b4b1bfbe1 100644 --- a/src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/0-Export-realm-SecretStores_2773206430/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "SecretStoreOps/exportSecretStores()/1: Export realm SecretStores", + "_recordingName": "SecretStoreOps/Classic Tests/exportSecretStores()/0: Export realm SecretStores", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,15 +25,15 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/2.0.3" + "value": "@rockcarver/frodo-lib/3.3.0" }, { "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" }, { "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" + "value": "protocol=2.1,resource=2.0" }, { "name": "cookie", @@ -60,11 +60,11 @@ "url": "http://openam-frodo-dev.classic.com:8080/am/json/realms/root/realm-config/secrets/stores?_action=nextdescendents" }, "response": { - "bodySize": 13, + "bodySize": 214, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 13, - "text": "{\"result\":[]}" + "size": 214, + "text": "{\"result\":[{\"suffix\":\".txt\",\"versionSuffix\":\".v\",\"directory\":\"/home/trivir/secrets\",\"format\":\"BASE64\",\"_id\":\"Volumes\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}]}" }, "cookies": [], "headers": [ @@ -82,7 +82,7 @@ }, { "name": "content-api-version", - "value": "resource=1.0" + "value": "resource=2.0" }, { "name": "content-security-policy", @@ -110,11 +110,11 @@ }, { "name": "content-length", - "value": "13" + "value": "214" }, { "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" + "value": "Mon, 22 Sep 2025 18:32:30 GMT" }, { "name": "keep-alive", @@ -125,14 +125,14 @@ "value": "keep-alive" } ], - "headersSize": 464, + "headersSize": 465, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2024-08-15T18:35:37.477Z", - "time": 18, + "startedDateTime": "2025-09-22T18:32:30.226Z", + "time": 9, "timings": { "blocked": -1, "connect": -1, @@ -140,7 +140,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 18 + "wait": 9 } } ], diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/1-Export-global-SecretStores_1073736167/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/1-Export-global-SecretStores_1073736167/recording.har new file mode 100644 index 000000000..d850be78d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/exportSecretStores_2218839234/1-Export-global-SecretStores_1073736167/recording.har @@ -0,0 +1,286 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/exportSecretStores()/1: Export global SecretStores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.243Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "4669dbd7756c299a1341a23d66896841", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 616, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 590, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 590, + "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":2,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "590" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 492, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.255Z", + "time": 4, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/importSecretStores_732967729/0-Import-global-secret-stores_1853192881/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/importSecretStores_732967729/0-Import-global-secret-stores_1853192881/recording.har new file mode 100644 index 000000000..3488ec1eb --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/importSecretStores_732967729/0-Import-global-secret-stores_1853192881/recording.har @@ -0,0 +1,594 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/importSecretStores()/0: Import global secret stores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.363Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.374Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.388Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "e88ff4a8a8298dc8f575bc87a07c69f6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 196, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "196" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 614, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore-2\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"collection\":true,\"name\":\"File System Secret Volumes\"},\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2" + }, + "response": { + "bodySize": 216, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 216, + "text": "{\"_id\":\"test-keystore-2\",\"_rev\":\"1389724204\",\"directory\":\"/root/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1389724204\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "216" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 612, + "httpVersion": "HTTP/1.1", + "redirectURL": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/test-keystore-2", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-09-22T18:32:30.399Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMapping_2617889343/0-Read-global-secret-store-mapping_1608883791/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMapping_2617889343/0-Read-global-secret-store-mapping_1608883791/recording.har new file mode 100644 index 000000000..d1d071f5d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMapping_2617889343/0-Read-global-secret-store-mapping_1608883791/recording.har @@ -0,0 +1,717 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStoreMapping()/0: Read global secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.019Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.031Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.045Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.061Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "65b91c059e353bfc87e5ab081856e00d", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.076Z", + "time": 4, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Create-global-secret-store-mappings_2423516012/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Create-global-secret-store-mappings_2423516012/recording.har new file mode 100644 index 000000000..0793010ad --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Create-global-secret-store-mappings_2423516012/recording.har @@ -0,0 +1,150 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStoreMappings()/0: Create global secret store mappings", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6138d23b-60c8-46cd-94a5-01672fa9b456" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 212, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 212, + "text": "{\"result\":[{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "212" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 16:19:14 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T16:19:14.608Z", + "time": 14, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 14 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Read-global-secret-store-mappings_846731380/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Read-global-secret-store-mappings_846731380/recording.har new file mode 100644 index 000000000..4017534c1 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreMappings_2082165858/0-Read-global-secret-store-mappings_846731380/recording.har @@ -0,0 +1,718 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStoreMappings()/0: Read global secret store mappings", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.092Z", + "time": 11, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 11 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.108Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.121Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.135Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "4669dbd7756c299a1341a23d66896841", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 616, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 590, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 590, + "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":2,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "590" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 492, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.148Z", + "time": 5, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 5 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/0-Read-realm-secret-store-schema_269612522/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/0-Read-realm-secret-store-schema_269612522/recording.har new file mode 100644 index 000000000..dffd6e172 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/0-Read-realm-secret-store-schema_269612522/recording.har @@ -0,0 +1,150 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStoreSchema()/0: Read realm secret store schema", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "de7dee1e82eef63f341eec7619c9036e", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 602, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "schema" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/realms/root/realm-config/secrets/stores/KeyStoreSecretStore?_action=schema" + }, + "response": { + "bodySize": 2072, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 2072, + "text": "{\"type\":\"object\",\"properties\":{\"file\":{\"title\":\"File\",\"description\":\"The keystore file to use\",\"propertyOrder\":100,\"required\":true,\"type\":\"string\",\"exampleValue\":\"\"},\"providerName\":{\"title\":\"Provider name\",\"description\":\"The classname of a provider to use to load the keystore. If blank, the JRE default will be used.\",\"propertyOrder\":300,\"required\":false,\"type\":\"string\",\"exampleValue\":\"\"},\"keyEntryPassword\":{\"title\":\"Entry password secret label\",\"description\":\"The secret value from which the entry password can be obtained, or none if the password is blank. This secret label will be resolved using one of the other secret stores configured.
It must not start or end with the . character.
The . character must not be followed by another . character.
Must contain a-z, A-Z, 0-9 and . characters only.\",\"propertyOrder\":500,\"required\":false,\"type\":\"string\",\"exampleValue\":\"\"},\"storePassword\":{\"title\":\"Store password secret label\",\"description\":\"The secret label from which the store password can be obtained, or none if the password is blank. This secret label will be resolved using one of the other secret stores configured.
It must not start or end with the . character
The . character must not be followed by another . character.
Must contain a-z, A-Z, 0-9 and . characters only.\",\"propertyOrder\":400,\"required\":false,\"type\":\"string\",\"exampleValue\":\"\"},\"leaseExpiryDuration\":{\"title\":\"Key lease expiry\",\"description\":\"The amount of minutes a key can be cached from the keystore before it needs to be reloaded.\",\"propertyOrder\":600,\"required\":true,\"type\":\"integer\",\"exampleValue\":\"\",\"default\":5},\"storetype\":{\"title\":\"Keystore type\",\"description\":\"The type of the keystore (JKS, JCEKS, PKCS11, PKCS12, others). This must be a keystore type known or configured on the JRE.\",\"propertyOrder\":200,\"required\":true,\"type\":\"string\",\"exampleValue\":\"\",\"default\":\"JCEKS\"}}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "2072" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 466, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.961Z", + "time": 3, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/1-Read-global-secret-store-schema_1565698229/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/1-Read-global-secret-store-schema_1565698229/recording.har new file mode 100644 index 000000000..3f1a4649f --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStoreSchema_3177849738/1-Read-global-secret-store-schema_1565698229/recording.har @@ -0,0 +1,150 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStoreSchema()/1: Read global secret store schema", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "d0c4e1f4307580d7b8bbf65df7abcd07", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 611, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "schema" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/EnvironmentAndSystemPropertySecretStore?_action=schema" + }, + "response": { + "bodySize": 2480, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 2480, + "text": "{\"type\":\"object\",\"properties\":{\"format\":{\"title\":\"Value format\",\"description\":\"Indicates what format is used to store the secrets in the files. The available options are:
  • Plain text: the secrets are stored as UTF-8 encoded text.
  • Base64 encoded: the secrets are stored as Base64 encoded binary values.
  • Encrypted text: the plain text secrets are encrypted using AM's encryption key.
  • Encrypted Base64 encoded: the Base64 encoded binary values are encrypted using AM's encryption key.
  • Encrypted with Google KMS: the secrets are encrypted using Google's Key Management Service.
  • PEM encoded certificate or key: the secrets are certificates, keys, or passwords, in Privacy Enhanced Mail (PEM) format, such as those produced by OpenSSL and other common tools.
  • Encrypted PEM: PEM-encoded objects that are encrypted with AM's server key.
  • Google KMS-encrypted PEM: PEM-encoded objects that are encrypted with Google KMS.

The following formats are also supported but are discouraged (use the PEM variants instead):

  • Encrypted HMAC key: the Base64 encoded binary representation of the HMAC key is encrypted using AM's encryption key. Use this format when working with non generic secrets.
  • Base64 encoded HMAC key: the secrets are binary HMAC keys encoded with Base64.
  • Google KMS-encrypted HMAC key: the secrets are binary HMAC keys that have been encrypted with Google's Key Management Service (KMS).
\",\"propertyOrder\":100,\"required\":true,\"enum\":[\"PLAIN\",\"BASE64\",\"ENCRYPTED_PLAIN\",\"ENCRYPTED_BASE64\",\"ENCRYPTED_HMAC_KEY\",\"BASE64_HMAC_KEY\",\"GOOGLE_KMS_ENCRYPTED\",\"GOOGLE_KMS_ENCRYPTED_HMAC_KEY\",\"PEM\",\"ENCRYPTED_PEM\",\"GOOGLE_KMS_ENCRYPTED_PEM\",\"JWK\"],\"options\":{\"enum_titles\":[\"Plain text\",\"Base64 encoded\",\"Encrypted text\",\"Encrypted Base64 encoded\",\"Encrypted HMAC key (deprecated)\",\"Base64 encoded HMAC key (deprecated)\",\"Encrypted with Google KMS\",\"Google KMS-encrypted HMAC key (deprecated)\",\"PEM encoded certificate, key, or password\",\"Encrypted PEM\",\"Google KMS-encrypted PEM\",\"JWK\"]},\"enumNames\":[\"Plain text\",\"Base64 encoded\",\"Encrypted text\",\"Encrypted Base64 encoded\",\"Encrypted HMAC key (deprecated)\",\"Base64 encoded HMAC key (deprecated)\",\"Encrypted with Google KMS\",\"Google KMS-encrypted HMAC key (deprecated)\",\"PEM encoded certificate, key, or password\",\"Encrypted PEM\",\"Google KMS-encrypted PEM\",\"JWK\"],\"type\":\"string\",\"exampleValue\":\"\",\"default\":\"BASE64\"}}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "2480" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 466, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.971Z", + "time": 5, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 5 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStore_986320477/0-Read-global-secret-store_2162259081/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStore_986320477/0-Read-global-secret-store_2162259081/recording.har new file mode 100644 index 000000000..7232ff09d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStore_986320477/0-Read-global-secret-store_2162259081/recording.har @@ -0,0 +1,582 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStore()/0: Read global secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.900Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.915Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.932Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + }, + { + "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 580, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "nextdescendents" + } + ], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" + }, + "response": { + "bodySize": 489, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "489" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:29 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 465, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:29.945Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/0-Read-realm-SecretStores_2740513196/recording.har similarity index 80% rename from src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har rename to src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/0-Read-realm-SecretStores_2740513196/recording.har index b4760f9fc..da48d68e0 100644 --- a/src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/0-Read-realm-SecretStores_2740513196/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "SecretStoreOps/readSecretStores()/1: Read realm SecretStores", + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStores()/0: Read realm SecretStores", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,15 +25,15 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/2.0.3" + "value": "@rockcarver/frodo-lib/3.3.0" }, { "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" }, { "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" + "value": "protocol=2.1,resource=2.0" }, { "name": "cookie", @@ -60,11 +60,11 @@ "url": "http://openam-frodo-dev.classic.com:8080/am/json/realms/root/realm-config/secrets/stores?_action=nextdescendents" }, "response": { - "bodySize": 13, + "bodySize": 214, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 13, - "text": "{\"result\":[]}" + "size": 214, + "text": "{\"result\":[{\"suffix\":\".txt\",\"versionSuffix\":\".v\",\"directory\":\"/home/trivir/secrets\",\"format\":\"BASE64\",\"_id\":\"Volumes\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}}]}" }, "cookies": [], "headers": [ @@ -82,7 +82,7 @@ }, { "name": "content-api-version", - "value": "resource=1.0" + "value": "resource=2.0" }, { "name": "content-security-policy", @@ -110,11 +110,11 @@ }, { "name": "content-length", - "value": "13" + "value": "214" }, { "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" + "value": "Mon, 22 Sep 2025 18:32:29 GMT" }, { "name": "keep-alive", @@ -125,14 +125,14 @@ "value": "keep-alive" } ], - "headersSize": 464, + "headersSize": 465, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2024-08-15T18:35:37.397Z", - "time": 26, + "startedDateTime": "2025-09-22T18:32:29.983Z", + "time": 13, "timings": { "blocked": -1, "connect": -1, @@ -140,7 +140,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 26 + "wait": 13 } } ], diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/1-Read-global-SecretStores_3090741449/recording.har similarity index 74% rename from src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har rename to src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/1-Read-global-SecretStores_3090741449/recording.har index 0a574ef28..c1330810a 100644 --- a/src/test/mock-recordings/SecretStoreOps_2115179242/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/readSecretStores_3885400800/1-Read-global-SecretStores_3090741449/recording.har @@ -1,6 +1,6 @@ { "log": { - "_recordingName": "SecretStoreOps/readSecretStores()/2: Read global SecretStores", + "_recordingName": "SecretStoreOps/Classic Tests/readSecretStores()/1: Read global SecretStores", "creator": { "comment": "persister:fs", "name": "Polly.JS", @@ -25,15 +25,15 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/2.0.3" + "value": "@rockcarver/frodo-lib/3.3.0" }, { "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" }, { "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" + "value": "protocol=2.1,resource=1.0" }, { "name": "cookie", @@ -60,11 +60,11 @@ "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" }, "response": { - "bodySize": 723, + "bodySize": 489, "content": { "mimeType": "application/json;charset=UTF-8", - "size": 723, - "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/home/prestonhales/am/security/keystores/keystore.jceks\",\"storetype\":\"JCEKS\",\"leaseExpiryDuration\":5,\"keyEntryPassword\":\"entrypass\",\"_id\":\"default-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/home/prestonhales/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"default-passwords-store\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" + "size": 489, + "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" }, "cookies": [], "headers": [ @@ -110,11 +110,11 @@ }, { "name": "content-length", - "value": "723" + "value": "489" }, { "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" + "value": "Mon, 22 Sep 2025 18:32:30 GMT" }, { "name": "keep-alive", @@ -131,8 +131,8 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2024-08-15T18:35:37.441Z", - "time": 19, + "startedDateTime": "2025-09-22T18:32:30.004Z", + "time": 8, "timings": { "blocked": -1, "connect": -1, @@ -140,7 +140,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 19 + "wait": 8 } } ], diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStoreMapping_450382174/0-Update-global-secret-store-mapping_485745798/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStoreMapping_450382174/0-Update-global-secret-store-mapping_485745798/recording.har new file mode 100644 index 000000000..bb3835806 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStoreMapping_450382174/0-Update-global-secret-store-mapping_485745798/recording.har @@ -0,0 +1,590 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/updateSecretStoreMapping()/0: Update global secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.310Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.322Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.335Z", + "time": 7, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 7 + } + }, + { + "_id": "60d6b0812351be225f79062773305dc3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\",\"new4\",\"new5\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 218, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 218, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-1586116305\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\",\"new4\",\"new5\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1586116305\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "218" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 486, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.346Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStore_965835038/0-Update-global-secret-store_2617253064/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStore_965835038/0-Update-global-secret-store_2617253064/recording.har new file mode 100644 index 000000000..42259414d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Classic-Tests_743483830/updateSecretStore_965835038/0-Update-global-secret-store_2617253064/recording.har @@ -0,0 +1,590 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Classic Tests/updateSecretStore()/0: Update global secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "7b04304d422fce962520b6bff948810d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219930\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":5,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219930\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.265Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "59655b02070cd389b1308bdddec9de33", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 652, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.uma.resource.labels.mtls.cert" + }, + "response": { + "bodySize": 202, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 202, + "text": "{\"_id\":\"am.uma.resource.labels.mtls.cert\",\"_rev\":\"-81392722\",\"secretId\":\"am.uma.resource.labels.mtls.cert\",\"aliases\":[\"new\",\"new2\",\"new3\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-81392722\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "202" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.276Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "94575679d0eb43f23db0fce5f28a6cf6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 166, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "166" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"]}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore/mappings/am.applications.agents.remote.consent.request.signing.ES256" + }, + "response": { + "bodySize": 249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 249, + "text": "{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1192664276\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "249" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.286Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "ce0255dae18b4cacd815aed6b81d5ca1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 276, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-7ddf942c-ab50-4c1f-8be5-654d2e6ff40a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "276" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.classic.com:8080" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"test-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"collection\":true,\"name\":\"Keystore\"},\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":6,\"providerName\":\"SunJCE\",\"storePassword\":\"storepass\",\"storetype\":\"JCEKS\"}" + }, + "queryString": [], + "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/test-keystore" + }, + "response": { + "bodySize": 296, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 296, + "text": "{\"_id\":\"test-keystore\",\"_rev\":\"-985219927\",\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/root/am/security/keystores/keystore.jceks\",\"keyEntryPassword\":\"entrypass\",\"leaseExpiryDuration\":6,\"storetype\":\"JCEKS\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-985219927\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "296" + }, + { + "name": "date", + "value": "Mon, 22 Sep 2025 18:32:30 GMT" + }, + { + "name": "keep-alive", + "value": "timeout=20" + }, + { + "name": "connection", + "value": "keep-alive" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-09-22T18:32:30.297Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/createSecretStoreMapping_3494301463/1-Create-secret-store-mapping_4017576209/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/createSecretStoreMapping_3494301463/1-Create-secret-store-mapping_4017576209/recording.har new file mode 100644 index 000000000..25a06856d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/createSecretStoreMapping_3494301463/1-Create-secret-store-mapping_4017576209/recording.har @@ -0,0 +1,322 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/createSecretStoreMapping()/1: Create secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "0a6e64c1e0242e2b864ce4a9c13458d9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2053, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + "response": { + "bodySize": 55, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 55, + "text": "{\"code\":404,\"reason\":\"Not Found\",\"message\":\"Not Found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "55" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 730, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2025-10-03T22:34:06.945Z", + "time": 106, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 106 + } + }, + { + "_id": "9404fcf0bd1ebc9b54644b22a62dd5b1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2049, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"]}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_action=create" + }, + "response": { + "bodySize": 215, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 215, + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"77842068\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "location", + "value": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "215" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 952, + "httpVersion": "HTTP/1.1", + "redirectURL": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA", + "status": 201, + "statusText": "Created" + }, + "startedDateTime": "2025-10-03T22:34:07.067Z", + "time": 230, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 230 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMapping_580411860/1-Delete-ESV-secret-store-mapping_121670490/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMapping_580411860/1-Delete-ESV-secret-store-mapping_121670490/recording.har new file mode 100644 index 000000000..3d998a5f0 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMapping_580411860/1-Delete-ESV-secret-store-mapping_121670490/recording.har @@ -0,0 +1,318 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/deleteSecretStoreMapping()/1: Delete ESV secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9404fcf0bd1ebc9b54644b22a62dd5b1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2049, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"]}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_action=create" + }, + "response": { + "bodySize": 90, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 90, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Unable to save config: Service already exists\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "90" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 730, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2025-10-03T22:34:08.943Z", + "time": 83, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 83 + } + }, + { + "_id": "0a6e64c1e0242e2b864ce4a9c13458d9", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2053, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + "response": { + "bodySize": 204, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 204, + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"1919880477\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1919880477\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "204" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 751, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:09.031Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMappings_3947745271/0-Delete-ESV-secret-store-mappings_4084474600/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMappings_3947745271/0-Delete-ESV-secret-store-mappings_4084474600/recording.har new file mode 100644 index 000000000..0e3bab1ec --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStoreMappings_3947745271/0-Delete-ESV-secret-store-mappings_4084474600/recording.har @@ -0,0 +1,309 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/deleteSecretStoreMappings()/0: Delete ESV secret store mappings", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:09.208Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 138, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 138, + "text": "{\"result\":[],\"resultCount\":0,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "138" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:09.273Z", + "time": 56, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 56 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStore_1886580992/1-Fail-to-delete-ESV-secret-store_3284059013/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStore_1886580992/1-Fail-to-delete-ESV-secret-store_3284059013/recording.har new file mode 100644 index 000000000..427622c49 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStore_1886580992/1-Fail-to-delete-ESV-secret-store_3284059013/recording.har @@ -0,0 +1,117 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/deleteSecretStore()/1: Fail to delete ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "8b03f5af5b4c3709fdcb89b79a5bb160", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2006, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 283, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:34:08.766Z", + "time": 47, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 47 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStores_1727803707/1-Fail-to-delete-secret-stores_2258254624/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStores_1727803707/1-Fail-to-delete-secret-stores_2258254624/recording.har new file mode 100644 index 000000000..c4323b303 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/deleteSecretStores_1727803707/1-Fail-to-delete-secret-stores_2258254624/recording.har @@ -0,0 +1,264 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/deleteSecretStores()/1: Fail to delete secret stores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.819Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + }, + { + "_id": "8b03f5af5b4c3709fdcb89b79a5bb160", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2006, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 283, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:34:08.887Z", + "time": 41, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 41 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStore_3107140639/1-Export-ESV-secret-store_1278089707/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStore_3107140639/1-Export-ESV-secret-store_1278089707/recording.har new file mode 100644 index 000000000..32452c825 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStore_3107140639/1-Export-ESV-secret-store_1278089707/recording.har @@ -0,0 +1,309 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/exportSecretStore()/1: Export ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.796Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 353, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 353, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "353" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.864Z", + "time": 53, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 53 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har new file mode 100644 index 000000000..1fb8e099c --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/1-Export-realm-SecretStores_100994395/recording.har @@ -0,0 +1,309 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/exportSecretStores()/1: Export realm SecretStores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.928Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 353, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 353, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "353" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.000Z", + "time": 65, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 65 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har new file mode 100644 index 000000000..7e1eb8a7d --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har @@ -0,0 +1,117 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/exportSecretStores()/2: Export global SecretStores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "0ad864c3fb400957b108be42352a44f0", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1979, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/global-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "private, no-store" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 292, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:34:08.073Z", + "time": 45, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 45 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/importSecretStores_732967729/1-Import-ESV-secret-store_2132776162/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/importSecretStores_732967729/1-Import-ESV-secret-store_2132776162/recording.har new file mode 100644 index 000000000..4c4ed6ecb --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/importSecretStores_732967729/1-Import-ESV-secret-store_2132776162/recording.har @@ -0,0 +1,461 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/importSecretStores()/1: Import ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.573Z", + "time": 57, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 57 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 342, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 342, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"1919880477\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "342" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.634Z", + "time": 55, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 55 + } + }, + { + "_id": "9fa3ac969a4d66392ba2804423a401fe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 204, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "204" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2071, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"1919880477\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + "response": { + "bodySize": 128, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 128, + "text": "{\"code\":400,\"reason\":\"Bad Request\",\"message\":\"Invalid attribute specified.\",\"detail\":{\"validAttributes\":[\"aliases\",\"secretId\"]}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 400, + "statusText": "Bad Request" + }, + "startedDateTime": "2025-10-03T22:34:08.695Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMapping_2617889343/1-Read-ESV-secret-store-mapping_2606668535/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMapping_2617889343/1-Read-ESV-secret-store-mapping_2606668535/recording.har new file mode 100644 index 000000000..42000b26e --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMapping_2617889343/1-Read-ESV-secret-store-mapping_2606668535/recording.har @@ -0,0 +1,318 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStoreMapping()/1: Read ESV secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9404fcf0bd1ebc9b54644b22a62dd5b1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2049, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"]}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_action=create" + }, + "response": { + "bodySize": 90, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 90, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Unable to save config: Service already exists\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "90" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 730, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2025-10-03T22:34:07.577Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + }, + { + "_id": "77c03529f53224838a5fd9210e5abf79", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2050, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + "response": { + "bodySize": 215, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 215, + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"77842068\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "215" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 749, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.668Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMappings_2082165858/1-Read-ESV-secret-store-mappings_434978252/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMappings_2082165858/1-Read-ESV-secret-store-mappings_434978252/recording.har new file mode 100644 index 000000000..edb903491 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreMappings_2082165858/1-Read-ESV-secret-store-mappings_434978252/recording.har @@ -0,0 +1,162 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStoreMappings()/1: Read ESV secret store mappings", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 353, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 353, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "353" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.734Z", + "time": 54, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 54 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreSchema_3177849738/1-Read-ESV-secret-store-schema_1767707524/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreSchema_3177849738/1-Read-ESV-secret-store-schema_1767707524/recording.har new file mode 100644 index 000000000..94f95a83c --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStoreSchema_3177849738/1-Read-ESV-secret-store-schema_1767707524/recording.har @@ -0,0 +1,162 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStoreSchema()/1: Read ESV secret store schema", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "a9ffdbf07e54557050105c617fd142dd", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2015, + "httpVersion": "HTTP/1.1", + "method": "POST", + "queryString": [ + { + "name": "_action", + "value": "schema" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider?_action=schema" + }, + "response": { + "bodySize": 3574, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 3574, + "text": "{\"type\":\"object\",\"properties\":{\"serviceAccount\":{\"title\":\"GCP Service Account ID\",\"description\":\"The ID of the GCP service account to use when connecting to Secret Manager.

GCP service accounts can be configured in the global Google Service Account service. The service account must be enabled for this realm otherwise the secret store will fail to load.\",\"propertyOrder\":200,\"required\":true,\"type\":\"string\",\"exampleValue\":\"\",\"default\":\"default\"},\"expiryDurationSeconds\":{\"title\":\"Expiry Time (seconds)\",\"description\":\"Maximum time that AM should cache secret values before refreshing them from Google SecretManager. A longer duration may be more efficient but may take longer for new secret versions to be picked up. Thistypically only affects operations that use the \\\"active\\\" (latest) version of a secret. Operations that use previousversions of a secret will always query Secret Manager to ensure timely revocation.\",\"propertyOrder\":400,\"required\":true,\"type\":\"integer\",\"exampleValue\":\"\",\"default\":600},\"secretFormat\":{\"title\":\"Secret Format\",\"description\":\"Indicates what format is used to store the secrets in the files. The available options are:
  • Plain text: the secrets are stored as UTF-8 encoded text.
  • Base64 encoded: the secrets are stored as Base64 encoded binary values.
  • Encrypted text: the plain text secrets are encrypted using AM's encryption key.
  • Encrypted Base64 encoded: the Base64 encoded binary values are encrypted using AM's encryption key.
  • Encrypted with Google KMS: the secrets are encrypted using Google's Key Management Service.
  • PEM encoded certificate or key: the secrets are certificates, keys, or passwords, in Privacy Enhanced Mail (PEM) format, such as those produced by OpenSSL and other common tools.
  • Encrypted PEM: PEM-encoded objects that are encrypted with AM's server key.
  • Google KMS-encrypted PEM: PEM-encoded objects that are encrypted with Google KMS.

The following formats are also supported but are discouraged (use the PEM variants instead):

  • Encrypted HMAC key: the Base64 encoded binary representation of the HMAC key is encrypted using AM's encryption key. Use this format when working with non generic secrets.
  • Base64 encoded HMAC key: the secrets are binary HMAC keys encoded with Base64.
  • Google KMS-encrypted HMAC key: the secrets are binary HMAC keys that have been encrypted with Google's Key Management Service (KMS).
\",\"propertyOrder\":300,\"required\":true,\"enum\":[\"PLAIN\",\"BASE64\",\"ENCRYPTED_PLAIN\",\"ENCRYPTED_BASE64\",\"ENCRYPTED_HMAC_KEY\",\"BASE64_HMAC_KEY\",\"GOOGLE_KMS_ENCRYPTED\",\"GOOGLE_KMS_ENCRYPTED_HMAC_KEY\",\"PEM\",\"ENCRYPTED_PEM\",\"GOOGLE_KMS_ENCRYPTED_PEM\",\"JWK\"],\"options\":{\"enum_titles\":[\"Plain text\",\"Base64 encoded\",\"Encrypted text\",\"Encrypted Base64-encoded\",\"Encrypted HMAC key\",\"Base64-encoded HMAC key\",\"Encrypted with Google KMS\",\"Google KMS-encrypted HMAC key\",\"PEM encoded certificate, key, or password\",\"Encrypted PEM\",\"Google KMS-encrypted PEM\",\"JWK\"]},\"enumNames\":[\"Plain text\",\"Base64 encoded\",\"Encrypted text\",\"Encrypted Base64-encoded\",\"Encrypted HMAC key\",\"Base64-encoded HMAC key\",\"Encrypted with Google KMS\",\"Google KMS-encrypted HMAC key\",\"PEM encoded certificate, key, or password\",\"Encrypted PEM\",\"Google KMS-encrypted PEM\",\"JWK\"],\"type\":\"string\",\"exampleValue\":\"\",\"default\":\"PLAIN\"},\"project\":{\"title\":\"Project\",\"description\":\"The GCP project that contains the Secret Manager instance to use.\",\"propertyOrder\":100,\"required\":true,\"type\":\"string\",\"exampleValue\":\"\"}}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "3574" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 732, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.389Z", + "time": 66, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 66 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStore_986320477/1-Read-ESV-secret-store_1798806273/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStore_986320477/1-Read-ESV-secret-store_1798806273/recording.har new file mode 100644 index 000000000..025c9b7a6 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStore_986320477/1-Read-ESV-secret-store_1798806273/recording.har @@ -0,0 +1,161 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStore()/1: Read ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.306Z", + "time": 74, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 74 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har new file mode 100644 index 000000000..78b634c5a --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/1-Read-realm-SecretStores_1859803097/recording.har @@ -0,0 +1,161 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStores()/1: Read realm SecretStores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:07.462Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har new file mode 100644 index 000000000..e559308f2 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/readSecretStores_3885400800/2-Read-global-SecretStores_3480416460/recording.har @@ -0,0 +1,117 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/readSecretStores()/2: Read global SecretStores", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "0ad864c3fb400957b108be42352a44f0", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1979, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/global-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "private, no-store" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:07 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 292, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:34:07.531Z", + "time": 38, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 38 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStoreMapping_450382174/1-Update-ESV-secret-store-mapping_5154972/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStoreMapping_450382174/1-Update-ESV-secret-store-mapping_5154972/recording.har new file mode 100644 index 000000000..c552ffe0b --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStoreMapping_450382174/1-Update-ESV-secret-store-mapping_5154972/recording.har @@ -0,0 +1,327 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/updateSecretStoreMapping()/1: Update ESV secret store mapping", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9404fcf0bd1ebc9b54644b22a62dd5b1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2049, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"]}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_action=create" + }, + "response": { + "bodySize": 90, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 90, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Unable to save config: Service already exists\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "90" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 730, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2025-10-03T22:34:08.315Z", + "time": 96, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 96 + } + }, + { + "_id": "fb4876e75362dad6f13ea9721de0ea1a", + "_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": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.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": 2071, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test\"]}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings/am.services.oauth2.oidc.signing.EDDSA" + }, + "response": { + "bodySize": 204, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 204, + "text": "{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"1919880477\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"1919880477\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "204" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 751, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.418Z", + "time": 145, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 145 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Unable-to-update-ESV-secret-store_2666966102/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Unable-to-update-ESV-secret-store_2666966102/recording.har new file mode 100644 index 000000000..5911012d5 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Unable-to-update-ESV-secret-store_2666966102/recording.har @@ -0,0 +1,421 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/updateSecretStore()/1: Unable to update ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.125Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 353, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 353, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "353" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:34:08.192Z", + "time": 68, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 68 + } + }, + { + "_id": "608745e795d593e2edca552fa7bacad1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 247, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-3075180a-4f39-4834-a77c-f06880733811" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2000, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":599,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/global-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:34:08 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 283, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:34:08.266Z", + "time": 40, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 40 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Update-ESV-secret-store_2294998302/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Update-ESV-secret-store_2294998302/recording.har new file mode 100644 index 000000000..37d11cba1 --- /dev/null +++ b/src/test/mock-recordings/SecretStoreOps_2115179242/Cloud-Tests_2178067211/updateSecretStore_965835038/1-Update-ESV-secret-store_2294998302/recording.har @@ -0,0 +1,421 @@ +{ + "log": { + "_recordingName": "SecretStoreOps/Cloud Tests/updateSecretStore()/1: Update ESV secret store", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "38a4f12ab8d8f567f084e4dbf8055523", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57dd44ac-93cd-4e12-b54f-067403dd39eb" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2003, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 247, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 247, + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":600,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"325689269\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:29:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57dd44ac-93cd-4e12-b54f-067403dd39eb" + }, + { + "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": 750, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:29:28.264Z", + "time": 54, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 54 + } + }, + { + "_id": "fd8bff16994e23ef672e1c02e1cd32ea", + "_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/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57dd44ac-93cd-4e12-b54f-067403dd39eb" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=2.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2030, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/realms/root/realms/alpha/realm-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV/mappings?_queryFilter=true" + }, + "response": { + "bodySize": 353, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 353, + "text": "{\"result\":[{\"_id\":\"am.services.oauth2.oidc.signing.EDDSA\",\"_rev\":\"77842068\",\"secretId\":\"am.services.oauth2.oidc.signing.EDDSA\",\"aliases\":[\"esv-test-signing-cert\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":1,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "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": "private" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "353" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:29:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57dd44ac-93cd-4e12-b54f-067403dd39eb" + }, + { + "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": 731, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2025-10-03T22:29:28.322Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + }, + { + "_id": "608745e795d593e2edca552fa7bacad1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 247, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/3.3.0" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57dd44ac-93cd-4e12-b54f-067403dd39eb" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "247" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2000, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ESV\",\"_rev\":\"325689269\",\"project\":\"&{google.project.id}\",\"expiryDurationSeconds\":599,\"serviceAccount\":\"default\",\"secretFormat\":\"PEM\",\"_type\":{\"_id\":\"GoogleSecretManagerSecretStoreProvider\",\"name\":\"Google Secret Manager\",\"collection\":true}}" + }, + "queryString": [], + "url": "https://openam-frodo-dev.forgeblocks.com/am/json/global-config/secrets/stores/GoogleSecretManagerSecretStoreProvider/ESV" + }, + "response": { + "bodySize": 114, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 114, + "text": "{\"code\":403,\"reason\":\"Forbidden\",\"message\":\"This operation is not available in PingOne Advanced Identity Cloud.\"}" + }, + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000;includeSubDomains;preload" + }, + { + "name": "date", + "value": "Fri, 03 Oct 2025 22:29:28 GMT" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 283, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 403, + "statusText": "Forbidden" + }, + "startedDateTime": "2025-10-03T22:29:28.390Z", + "time": 38, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 38 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har b/src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har deleted file mode 100644 index 32dbf3280..000000000 --- a/src/test/mock-recordings/SecretStoreOps_2115179242/exportSecretStores_2218839234/2-Export-global-SecretStores_2554154006/recording.har +++ /dev/null @@ -1,558 +0,0 @@ -{ - "log": { - "_recordingName": "SecretStoreOps/exportSecretStores()/2: Export global SecretStores", - "creator": { - "comment": "persister:fs", - "name": "Polly.JS", - "version": "6.0.6" - }, - "entries": [ - { - "_id": "c6d303acc9dfe3da7b43bb1f201d83d1", - "_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/2.0.3" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" - }, - { - "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" - }, - { - "name": "cookie", - "value": "iPlanetDirectoryPro=" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.classic.com:8080" - } - ], - "headersSize": 580, - "httpVersion": "HTTP/1.1", - "method": "POST", - "queryString": [ - { - "name": "_action", - "value": "nextdescendents" - } - ], - "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores?_action=nextdescendents" - }, - "response": { - "bodySize": 723, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 723, - "text": "{\"result\":[{\"storePassword\":\"storepass\",\"providerName\":\"SunJCE\",\"file\":\"/home/prestonhales/am/security/keystores/keystore.jceks\",\"storetype\":\"JCEKS\",\"leaseExpiryDuration\":5,\"keyEntryPassword\":\"entrypass\",\"_id\":\"default-keystore\",\"_type\":{\"_id\":\"KeyStoreSecretStore\",\"name\":\"Keystore\",\"collection\":true}},{\"directory\":\"/home/prestonhales/am/security/secrets/encrypted\",\"format\":\"ENCRYPTED_PLAIN\",\"_id\":\"default-passwords-store\",\"_type\":{\"_id\":\"FileSystemSecretStore\",\"name\":\"File System Secret Volumes\",\"collection\":true}},{\"format\":\"BASE64\",\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"_type\":{\"_id\":\"EnvironmentAndSystemPropertySecretStore\",\"name\":\"Environment and System Property Secrets Store\",\"collection\":false}}]}" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "SAMEORIGIN" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "private" - }, - { - "name": "content-api-version", - "value": "resource=1.0" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "723" - }, - { - "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" - }, - { - "name": "keep-alive", - "value": "timeout=20" - }, - { - "name": "connection", - "value": "keep-alive" - } - ], - "headersSize": 465, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2024-08-15T18:35:37.516Z", - "time": 10, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 10 - } - }, - { - "_id": "7b0a9b322d1263a64d7a14c13f9a91ec", - "_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/2.0.3" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" - }, - { - "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" - }, - { - "name": "cookie", - "value": "iPlanetDirectoryPro=" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.classic.com:8080" - } - ], - "headersSize": 619, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [ - { - "name": "_queryFilter", - "value": "true" - } - ], - "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/KeyStoreSecretStore/default-keystore/mappings?_queryFilter=true" - }, - "response": { - "bodySize": 9388, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 9388, - "text": "{\"result\":[{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"_rev\":\"1192664276\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES384\",\"_rev\":\"288173840\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES384\",\"aliases\":[\"es384test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.applications.agents.remote.consent.request.signing.ES512\",\"_rev\":\"-294942577\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.ES512\",\"aliases\":[\"es512test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.applications.agents.remote.consent.request.signing.RSA\",\"_rev\":\"1911324886\",\"secretId\":\"am.applications.agents.remote.consent.request.signing.RSA\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.authentication.nodes.persistentcookie.encryption\",\"_rev\":\"-91845293\",\"secretId\":\"am.authentication.nodes.persistentcookie.encryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.authn.authid.signing.HMAC\",\"_rev\":\"934473037\",\"secretId\":\"am.authn.authid.signing.HMAC\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.authn.trees.transientstate.encryption\",\"_rev\":\"1917709756\",\"secretId\":\"am.authn.trees.transientstate.encryption\",\"aliases\":[\"directenctest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.applications.federation.entity.providers.saml2.idp.encryption\",\"_rev\":\"1907232131\",\"secretId\":\"am.default.applications.federation.entity.providers.saml2.idp.encryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.applications.federation.entity.providers.saml2.idp.signing\",\"_rev\":\"1976286662\",\"secretId\":\"am.default.applications.federation.entity.providers.saml2.idp.signing\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.applications.federation.entity.providers.saml2.sp.encryption\",\"_rev\":\"1974801991\",\"secretId\":\"am.default.applications.federation.entity.providers.saml2.sp.encryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.applications.federation.entity.providers.saml2.sp.signing\",\"_rev\":\"-86805022\",\"secretId\":\"am.default.applications.federation.entity.providers.saml2.sp.signing\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.authentication.modules.persistentcookie.encryption\",\"_rev\":\"-239710853\",\"secretId\":\"am.default.authentication.modules.persistentcookie.encryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.authentication.modules.persistentcookie.signing\",\"_rev\":\"1188815885\",\"secretId\":\"am.default.authentication.modules.persistentcookie.signing\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.default.authentication.nodes.persistentcookie.signing\",\"_rev\":\"986410257\",\"secretId\":\"am.default.authentication.nodes.persistentcookie.signing\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.global.services.oauth2.oidc.agent.idtoken.signing\",\"_rev\":\"-122487018\",\"secretId\":\"am.global.services.oauth2.oidc.agent.idtoken.signing\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.global.services.saml2.client.storage.jwt.encryption\",\"_rev\":\"2003184760\",\"secretId\":\"am.global.services.saml2.client.storage.jwt.encryption\",\"aliases\":[\"directenctest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.global.services.session.clientbased.encryption.AES\",\"_rev\":\"599325994\",\"secretId\":\"am.global.services.session.clientbased.encryption.AES\",\"aliases\":[\"aestest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.global.services.session.clientbased.signing.HMAC\",\"_rev\":\"952853781\",\"secretId\":\"am.global.services.session.clientbased.signing.HMAC\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.iot.jwt.issuer.signing\",\"_rev\":\"-1095047595\",\"secretId\":\"am.services.iot.jwt.issuer.signing\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.jwt.authenticity.signing\",\"_rev\":\"-1210340267\",\"secretId\":\"am.services.oauth2.jwt.authenticity.signing\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.decryption.RSA.OAEP\",\"_rev\":\"-75049409\",\"secretId\":\"am.services.oauth2.oidc.decryption.RSA.OAEP\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.decryption.RSA.OAEP.256\",\"_rev\":\"-108687993\",\"secretId\":\"am.services.oauth2.oidc.decryption.RSA.OAEP.256\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.decryption.RSA1.5\",\"_rev\":\"2073465911\",\"secretId\":\"am.services.oauth2.oidc.decryption.RSA1.5\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.rp.idtoken.encryption\",\"_rev\":\"2025247879\",\"secretId\":\"am.services.oauth2.oidc.rp.idtoken.encryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.rp.jwt.authenticity.signing\",\"_rev\":\"-152865330\",\"secretId\":\"am.services.oauth2.oidc.rp.jwt.authenticity.signing\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.signing.ES256\",\"_rev\":\"1010246364\",\"secretId\":\"am.services.oauth2.oidc.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.signing.ES384\",\"_rev\":\"105751800\",\"secretId\":\"am.services.oauth2.oidc.signing.ES384\",\"aliases\":[\"es384test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.signing.ES512\",\"_rev\":\"-477362537\",\"secretId\":\"am.services.oauth2.oidc.signing.ES512\",\"aliases\":[\"es512test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.oidc.signing.RSA\",\"_rev\":\"2112649438\",\"secretId\":\"am.services.oauth2.oidc.signing.RSA\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.remote.consent.request.encryption\",\"_rev\":\"1156224168\",\"secretId\":\"am.services.oauth2.remote.consent.request.encryption\",\"aliases\":[\"selfserviceenctest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.remote.consent.response.decryption\",\"_rev\":\"2022034763\",\"secretId\":\"am.services.oauth2.remote.consent.response.decryption\",\"aliases\":[\"test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.remote.consent.response.signing.RSA\",\"_rev\":\"-219924262\",\"secretId\":\"am.services.oauth2.remote.consent.response.signing.RSA\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.signing.ES256\",\"_rev\":\"1077337120\",\"secretId\":\"am.services.oauth2.stateless.signing.ES256\",\"aliases\":[\"es256test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.signing.ES384\",\"_rev\":\"172846524\",\"secretId\":\"am.services.oauth2.stateless.signing.ES384\",\"aliases\":[\"es384test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.signing.ES512\",\"_rev\":\"-410267929\",\"secretId\":\"am.services.oauth2.stateless.signing.ES512\",\"aliases\":[\"es512test\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.signing.HMAC\",\"_rev\":\"-1093456131\",\"secretId\":\"am.services.oauth2.stateless.signing.HMAC\",\"aliases\":[\"hmacsigningtest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.signing.RSA\",\"_rev\":\"1960097294\",\"secretId\":\"am.services.oauth2.stateless.signing.RSA\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.oauth2.stateless.token.encryption\",\"_rev\":\"1900916088\",\"secretId\":\"am.services.oauth2.stateless.token.encryption\",\"aliases\":[\"directenctest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.saml2.metadata.signing.RSA\",\"_rev\":\"2008235726\",\"secretId\":\"am.services.saml2.metadata.signing.RSA\",\"aliases\":[\"rsajwtsigningkey\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}},{\"_id\":\"am.services.uma.pct.encryption\",\"_rev\":\"1883661748\",\"secretId\":\"am.services.uma.pct.encryption\",\"aliases\":[\"directenctest\"],\"_type\":{\"_id\":\"mappings\",\"name\":\"Mappings\",\"collection\":true}}],\"resultCount\":40,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"NONE\",\"totalPagedResults\":-1,\"remainingPagedResults\":-1}" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "SAMEORIGIN" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "private" - }, - { - "name": "content-api-version", - "value": "protocol=2.0,resource=1.0, resource=1.0" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "transfer-encoding", - "value": "chunked" - }, - { - "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" - }, - { - "name": "keep-alive", - "value": "timeout=20" - }, - { - "name": "connection", - "value": "keep-alive" - } - ], - "headersSize": 499, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 200, - "statusText": "OK" - }, - "startedDateTime": "2024-08-15T18:35:37.536Z", - "time": 48, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 48 - } - }, - { - "_id": "a849040f5abdab05d9c89abc330f4e11", - "_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/2.0.3" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" - }, - { - "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" - }, - { - "name": "cookie", - "value": "iPlanetDirectoryPro=" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.classic.com:8080" - } - ], - "headersSize": 628, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [ - { - "name": "_queryFilter", - "value": "true" - } - ], - "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/FileSystemSecretStore/default-passwords-store/mappings?_queryFilter=true" - }, - "response": { - "bodySize": 99, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 99, - "text": "{\"code\":404,\"reason\":\"Not Found\",\"message\":\"Resource 'default-passwords-store/mappings' not found\"}" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "SAMEORIGIN" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "private" - }, - { - "name": "content-api-version", - "value": "resource=1.0" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "99" - }, - { - "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" - }, - { - "name": "keep-alive", - "value": "timeout=20" - }, - { - "name": "connection", - "value": "keep-alive" - } - ], - "headersSize": 464, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 404, - "statusText": "Not Found" - }, - "startedDateTime": "2024-08-15T18:35:37.591Z", - "time": 4, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 4 - } - }, - { - "_id": "eebc5f870cfc1afef69c42fafb3efd16", - "_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/2.0.3" - }, - { - "name": "x-forgerock-transactionid", - "value": "frodo-a2dfc818-3386-45b1-a59e-2b70074f5e94" - }, - { - "name": "accept-api-version", - "value": "protocol=2.0,resource=1.0" - }, - { - "name": "cookie", - "value": "iPlanetDirectoryPro=" - }, - { - "name": "accept-encoding", - "value": "gzip, compress, deflate, br" - }, - { - "name": "host", - "value": "openam-frodo-dev.classic.com:8080" - } - ], - "headersSize": 662, - "httpVersion": "HTTP/1.1", - "method": "GET", - "queryString": [ - { - "name": "_queryFilter", - "value": "true" - } - ], - "url": "http://openam-frodo-dev.classic.com:8080/am/json/global-config/secrets/stores/EnvironmentAndSystemPropertySecretStore/EnvironmentAndSystemPropertySecretStore/mappings?_queryFilter=true" - }, - "response": { - "bodySize": 115, - "content": { - "mimeType": "application/json;charset=UTF-8", - "size": 115, - "text": "{\"code\":404,\"reason\":\"Not Found\",\"message\":\"Resource 'EnvironmentAndSystemPropertySecretStore/mappings' not found\"}" - }, - "cookies": [], - "headers": [ - { - "name": "x-frame-options", - "value": "SAMEORIGIN" - }, - { - "name": "x-content-type-options", - "value": "nosniff" - }, - { - "name": "cache-control", - "value": "private" - }, - { - "name": "content-api-version", - "value": "resource=1.0" - }, - { - "name": "content-security-policy", - "value": "default-src 'none';frame-ancestors 'none';sandbox" - }, - { - "name": "cross-origin-opener-policy", - "value": "same-origin" - }, - { - "name": "cross-origin-resource-policy", - "value": "same-origin" - }, - { - "name": "expires", - "value": "0" - }, - { - "name": "pragma", - "value": "no-cache" - }, - { - "name": "content-type", - "value": "application/json;charset=UTF-8" - }, - { - "name": "content-length", - "value": "115" - }, - { - "name": "date", - "value": "Thu, 15 Aug 2024 18:35:37 GMT" - }, - { - "name": "keep-alive", - "value": "timeout=20" - }, - { - "name": "connection", - "value": "keep-alive" - } - ], - "headersSize": 465, - "httpVersion": "HTTP/1.1", - "redirectURL": "", - "status": 404, - "statusText": "Not Found" - }, - "startedDateTime": "2024-08-15T18:35:37.610Z", - "time": 4, - "timings": { - "blocked": -1, - "connect": -1, - "dns": -1, - "receive": 0, - "send": 0, - "ssl": -1, - "wait": 4 - } - } - ], - "pages": [], - "version": "1.2" - } -} diff --git a/src/test/snapshots/ops/ConfigOps.test.js.snap b/src/test/snapshots/ops/ConfigOps.test.js.snap index 77983605d..c4e615393 100644 --- a/src/test/snapshots/ops/ConfigOps.test.js.snap +++ b/src/test/snapshots/ops/ConfigOps.test.js.snap @@ -5528,7 +5528,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 6: Export everything "name": "Environment and System Property Secrets Store", }, "format": "BASE64", - "mappings": undefined, }, "default-keystore": { "_id": "default-keystore", @@ -6075,7 +6074,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 6: Export everything }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "server": { @@ -17154,7 +17152,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 6: Export everything }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -26421,7 +26418,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 6: Export everything }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -34213,7 +34209,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 6: Export everything }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -43101,7 +43096,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 7: Export everything "name": "Environment and System Property Secrets Store", }, "format": "BASE64", - "mappings": undefined, }, "default-keystore": { "_id": "default-keystore", @@ -43648,7 +43642,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 7: Export everything }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "server": { @@ -50956,7 +50949,6 @@ exports.logDebug = (log, debugMessage) => log.debug(debugMessage); }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -56243,7 +56235,6 @@ exports.logDebug = (log, debugMessage) => log.debug(debugMessage); }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -60149,7 +60140,6 @@ exports.logDebug = (log, debugMessage) => log.debug(debugMessage); }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -67943,7 +67933,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 8: Export only import "name": "Environment and System Property Secrets Store", }, "format": "BASE64", - "mappings": undefined, }, "default-keystore": { "_id": "default-keystore", @@ -68490,7 +68479,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 8: Export only import }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "server": { @@ -79869,7 +79857,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 8: Export only import }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -88690,7 +88677,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 8: Export only import }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -95870,7 +95856,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 8: Export only import }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -107193,7 +107178,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 9: Export only root r }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "service": { @@ -117663,7 +117647,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 10: Export only globa "name": "Environment and System Property Secrets Store", }, "format": "BASE64", - "mappings": undefined, }, "default-keystore": { "_id": "default-keystore", @@ -118210,7 +118193,6 @@ exports[`ConfigOps Classic Tests exportFullConfiguration() 10: Export only globa }, "directory": "/home/prestonhales/am/security/secrets/encrypted", "format": "ENCRYPTED_PLAIN", - "mappings": undefined, }, }, "server": { @@ -174650,7 +174632,22 @@ isGoogleEligible; }, }, "secrets": {}, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -191675,7 +191672,22 @@ isGoogleEligible; }, }, "secrets": {}, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -244939,7 +244951,22 @@ outcome = "true"; }, }, "secrets": {}, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -256702,7 +256729,22 @@ outcome = "true"; }, }, "secrets": {}, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -297742,7 +297784,22 @@ isGoogleEligible; ], }, }, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -314144,7 +314201,22 @@ isGoogleEligible; ], }, }, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", @@ -340834,7 +340906,22 @@ exports[`ConfigOps Cloud Tests exportFullConfiguration() 4: Export only alpha re }, }, "secrets": {}, - "secretstore": undefined, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, "service": { "SocialIdentityProviders": { "_id": "", diff --git a/src/test/snapshots/ops/SecretStoreOps.test.js.snap b/src/test/snapshots/ops/SecretStoreOps.test.js.snap new file mode 100644 index 000000000..8de51043d --- /dev/null +++ b/src/test/snapshots/ops/SecretStoreOps.test.js.snap @@ -0,0 +1,883 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SecretStoreOps Classic Tests createSecretStoreMapping() 0: Create global secret store mapping 1`] = ` +{ + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", +} +`; + +exports[`SecretStoreOps Classic Tests deleteSecretStore() 0: Delete global secret store 1`] = ` +{ + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", +} +`; + +exports[`SecretStoreOps Classic Tests deleteSecretStoreMapping() 0: Delete global secret store mapping 1`] = ` +{ + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", +} +`; + +exports[`SecretStoreOps Classic Tests deleteSecretStoreMappings() 0: Delete global secret store mappings 1`] = ` +[ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_rev": "1192664276", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", + }, +] +`; + +exports[`SecretStoreOps Classic Tests deleteSecretStores() 0: Delete global secret stores 1`] = ` +"Error deleting the secret store EnvironmentAndSystemPropertySecretStore + HTTP client error + Code: ERR_BAD_REQUEST + Status: 400 + Reason: Bad Request + Message: The singleton resource cannot be deleted" +`; + +exports[`SecretStoreOps Classic Tests deleteSecretStores() 0: Delete global secret stores 2`] = ` +[ + { + "_id": "test-keystore", + "_rev": "-985219930", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + { + "_id": "test-keystore-2", + "_rev": "1389724204", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/root/am/security/secrets/encrypted", + "format": "ENCRYPTED_PLAIN", + }, +] +`; + +exports[`SecretStoreOps Classic Tests exportSecretStore() 0: Export global secret store 1`] = ` +{ + "meta": Any, + "secretstore": { + "test-keystore": { + "_id": "test-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_rev": "1192664276", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", + }, + ], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + }, +} +`; + +exports[`SecretStoreOps Classic Tests exportSecretStores() 0: Export realm SecretStores 1`] = ` +{ + "meta": Any, + "secretstore": { + "Volumes": { + "_id": "Volumes", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/home/trivir/secrets", + "format": "BASE64", + "suffix": ".txt", + "versionSuffix": ".v", + }, + }, +} +`; + +exports[`SecretStoreOps Classic Tests exportSecretStores() 1: Export global SecretStores 1`] = ` +{ + "meta": Any, + "secretstore": { + "EnvironmentAndSystemPropertySecretStore": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "_type": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "collection": false, + "name": "Environment and System Property Secrets Store", + }, + "format": "BASE64", + }, + "test-keystore": { + "_id": "test-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_rev": "1192664276", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", + }, + ], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + }, +} +`; + +exports[`SecretStoreOps Classic Tests importSecretStores() 0: Import global secret stores 1`] = ` +[ + { + "_id": "test-keystore", + "_rev": "-985219930", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [ + { + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_rev": "1192664276", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + ], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + { + "_id": "test-keystore-2", + "_rev": "1389724204", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/root/am/security/secrets/encrypted", + "format": "ENCRYPTED_PLAIN", + }, +] +`; + +exports[`SecretStoreOps Classic Tests readSecretStore() 0: Read global secret store 1`] = ` +{ + "_id": "test-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", +} +`; + +exports[`SecretStoreOps Classic Tests readSecretStoreMapping() 0: Read global secret store mapping 1`] = ` +{ + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", +} +`; + +exports[`SecretStoreOps Classic Tests readSecretStoreMappings() 0: Read global secret store mappings 1`] = ` +[ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_rev": "1192664276", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-81392722", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + ], + "secretId": "am.uma.resource.labels.mtls.cert", + }, +] +`; + +exports[`SecretStoreOps Classic Tests readSecretStoreSchema() 0: Read realm secret store schema 1`] = ` +{ + "properties": { + "file": { + "description": "The keystore file to use", + "exampleValue": "", + "propertyOrder": 100, + "required": true, + "title": "File", + "type": "string", + }, + "keyEntryPassword": { + "description": "The secret value from which the entry password can be obtained, or none if the password is blank. This secret label will be resolved using one of the other secret stores configured.
It must not start or end with the . character.
The . character must not be followed by another . character.
Must contain a-z, A-Z, 0-9 and . characters only.", + "exampleValue": "", + "propertyOrder": 500, + "required": false, + "title": "Entry password secret label", + "type": "string", + }, + "leaseExpiryDuration": { + "default": 5, + "description": "The amount of minutes a key can be cached from the keystore before it needs to be reloaded.", + "exampleValue": "", + "propertyOrder": 600, + "required": true, + "title": "Key lease expiry", + "type": "integer", + }, + "providerName": { + "description": "The classname of a provider to use to load the keystore. If blank, the JRE default will be used.", + "exampleValue": "", + "propertyOrder": 300, + "required": false, + "title": "Provider name", + "type": "string", + }, + "storePassword": { + "description": "The secret label from which the store password can be obtained, or none if the password is blank. This secret label will be resolved using one of the other secret stores configured.
It must not start or end with the . character
The . character must not be followed by another . character.
Must contain a-z, A-Z, 0-9 and . characters only.", + "exampleValue": "", + "propertyOrder": 400, + "required": false, + "title": "Store password secret label", + "type": "string", + }, + "storetype": { + "default": "JCEKS", + "description": "The type of the keystore (JKS, JCEKS, PKCS11, PKCS12, others). This must be a keystore type known or configured on the JRE.", + "exampleValue": "", + "propertyOrder": 200, + "required": true, + "title": "Keystore type", + "type": "string", + }, + }, + "type": "object", +} +`; + +exports[`SecretStoreOps Classic Tests readSecretStoreSchema() 1: Read global secret store schema 1`] = ` +{ + "properties": { + "format": { + "default": "BASE64", + "description": "Indicates what format is used to store the secrets in the files. The available options are:
  • Plain text: the secrets are stored as UTF-8 encoded text.
  • Base64 encoded: the secrets are stored as Base64 encoded binary values.
  • Encrypted text: the plain text secrets are encrypted using AM's encryption key.
  • Encrypted Base64 encoded: the Base64 encoded binary values are encrypted using AM's encryption key.
  • Encrypted with Google KMS: the secrets are encrypted using Google's Key Management Service.
  • PEM encoded certificate or key: the secrets are certificates, keys, or passwords, in Privacy Enhanced Mail (PEM) format, such as those produced by OpenSSL and other common tools.
  • Encrypted PEM: PEM-encoded objects that are encrypted with AM's server key.
  • Google KMS-encrypted PEM: PEM-encoded objects that are encrypted with Google KMS.

The following formats are also supported but are discouraged (use the PEM variants instead):

  • Encrypted HMAC key: the Base64 encoded binary representation of the HMAC key is encrypted using AM's encryption key. Use this format when working with non generic secrets.
  • Base64 encoded HMAC key: the secrets are binary HMAC keys encoded with Base64.
  • Google KMS-encrypted HMAC key: the secrets are binary HMAC keys that have been encrypted with Google's Key Management Service (KMS).
", + "enum": [ + "PLAIN", + "BASE64", + "ENCRYPTED_PLAIN", + "ENCRYPTED_BASE64", + "ENCRYPTED_HMAC_KEY", + "BASE64_HMAC_KEY", + "GOOGLE_KMS_ENCRYPTED", + "GOOGLE_KMS_ENCRYPTED_HMAC_KEY", + "PEM", + "ENCRYPTED_PEM", + "GOOGLE_KMS_ENCRYPTED_PEM", + "JWK", + ], + "enumNames": [ + "Plain text", + "Base64 encoded", + "Encrypted text", + "Encrypted Base64 encoded", + "Encrypted HMAC key (deprecated)", + "Base64 encoded HMAC key (deprecated)", + "Encrypted with Google KMS", + "Google KMS-encrypted HMAC key (deprecated)", + "PEM encoded certificate, key, or password", + "Encrypted PEM", + "Google KMS-encrypted PEM", + "JWK", + ], + "exampleValue": "", + "options": { + "enum_titles": [ + "Plain text", + "Base64 encoded", + "Encrypted text", + "Encrypted Base64 encoded", + "Encrypted HMAC key (deprecated)", + "Base64 encoded HMAC key (deprecated)", + "Encrypted with Google KMS", + "Google KMS-encrypted HMAC key (deprecated)", + "PEM encoded certificate, key, or password", + "Encrypted PEM", + "Google KMS-encrypted PEM", + "JWK", + ], + }, + "propertyOrder": 100, + "required": true, + "title": "Value format", + "type": "string", + }, + }, + "type": "object", +} +`; + +exports[`SecretStoreOps Classic Tests readSecretStores() 0: Read realm SecretStores 1`] = ` +[ + { + "_id": "Volumes", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/home/trivir/secrets", + "format": "BASE64", + "suffix": ".txt", + "versionSuffix": ".v", + }, +] +`; + +exports[`SecretStoreOps Classic Tests readSecretStores() 1: Read global SecretStores 1`] = ` +[ + { + "_id": "test-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + { + "_id": "EnvironmentAndSystemPropertySecretStore", + "_type": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "collection": false, + "name": "Environment and System Property Secrets Store", + }, + "format": "BASE64", + }, +] +`; + +exports[`SecretStoreOps Classic Tests updateSecretStore() 0: Update global secret store 1`] = ` +{ + "_id": "test-keystore", + "_rev": "-985219927", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 6, + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", +} +`; + +exports[`SecretStoreOps Classic Tests updateSecretStoreMapping() 0: Update global secret store mapping 1`] = ` +{ + "_id": "am.uma.resource.labels.mtls.cert", + "_rev": "-1586116305", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "new", + "new2", + "new3", + "new4", + "new5", + ], + "secretId": "am.uma.resource.labels.mtls.cert", +} +`; + +exports[`SecretStoreOps Cloud Tests createSecretStoreMapping() 1: Create secret store mapping 1`] = ` +{ + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "77842068", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test-signing-cert", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", +} +`; + +exports[`SecretStoreOps Cloud Tests deleteSecretStoreMapping() 1: Delete ESV secret store mapping 1`] = ` +{ + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "1919880477", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", +} +`; + +exports[`SecretStoreOps Cloud Tests deleteSecretStoreMappings() 0: Delete ESV secret store mappings 1`] = `[]`; + +exports[`SecretStoreOps Cloud Tests exportSecretStore() 1: Export ESV secret store 1`] = ` +{ + "meta": Any, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [ + { + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "77842068", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test-signing-cert", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", + }, + ], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, +} +`; + +exports[`SecretStoreOps Cloud Tests exportSecretStores() 1: Export realm SecretStores 1`] = ` +{ + "meta": Any, + "secretstore": { + "ESV": { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "mappings": [ + { + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "77842068", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test-signing-cert", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", + }, + ], + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, + }, +} +`; + +exports[`SecretStoreOps Cloud Tests importSecretStores() 1: Import ESV secret store 1`] = ` +"TESTING ERROR: Expected a FrodoError, but got a different error. +Message: Request failed with status code 400" +`; + +exports[`SecretStoreOps Cloud Tests importSecretStores() 1: Import ESV secret store 2`] = `[]`; + +exports[`SecretStoreOps Cloud Tests readSecretStore() 1: Read ESV secret store 1`] = ` +{ + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", +} +`; + +exports[`SecretStoreOps Cloud Tests readSecretStoreMapping() 1: Read ESV secret store mapping 1`] = ` +{ + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "77842068", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test-signing-cert", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", +} +`; + +exports[`SecretStoreOps Cloud Tests readSecretStoreMappings() 1: Read ESV secret store mappings 1`] = ` +[ + { + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "77842068", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test-signing-cert", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", + }, +] +`; + +exports[`SecretStoreOps Cloud Tests readSecretStoreSchema() 1: Read ESV secret store schema 1`] = ` +{ + "properties": { + "expiryDurationSeconds": { + "default": 600, + "description": "Maximum time that AM should cache secret values before refreshing them from Google SecretManager. A longer duration may be more efficient but may take longer for new secret versions to be picked up. Thistypically only affects operations that use the "active" (latest) version of a secret. Operations that use previousversions of a secret will always query Secret Manager to ensure timely revocation.", + "exampleValue": "", + "propertyOrder": 400, + "required": true, + "title": "Expiry Time (seconds)", + "type": "integer", + }, + "project": { + "description": "The GCP project that contains the Secret Manager instance to use.", + "exampleValue": "", + "propertyOrder": 100, + "required": true, + "title": "Project", + "type": "string", + }, + "secretFormat": { + "default": "PLAIN", + "description": "Indicates what format is used to store the secrets in the files. The available options are:
  • Plain text: the secrets are stored as UTF-8 encoded text.
  • Base64 encoded: the secrets are stored as Base64 encoded binary values.
  • Encrypted text: the plain text secrets are encrypted using AM's encryption key.
  • Encrypted Base64 encoded: the Base64 encoded binary values are encrypted using AM's encryption key.
  • Encrypted with Google KMS: the secrets are encrypted using Google's Key Management Service.
  • PEM encoded certificate or key: the secrets are certificates, keys, or passwords, in Privacy Enhanced Mail (PEM) format, such as those produced by OpenSSL and other common tools.
  • Encrypted PEM: PEM-encoded objects that are encrypted with AM's server key.
  • Google KMS-encrypted PEM: PEM-encoded objects that are encrypted with Google KMS.

The following formats are also supported but are discouraged (use the PEM variants instead):

  • Encrypted HMAC key: the Base64 encoded binary representation of the HMAC key is encrypted using AM's encryption key. Use this format when working with non generic secrets.
  • Base64 encoded HMAC key: the secrets are binary HMAC keys encoded with Base64.
  • Google KMS-encrypted HMAC key: the secrets are binary HMAC keys that have been encrypted with Google's Key Management Service (KMS).
", + "enum": [ + "PLAIN", + "BASE64", + "ENCRYPTED_PLAIN", + "ENCRYPTED_BASE64", + "ENCRYPTED_HMAC_KEY", + "BASE64_HMAC_KEY", + "GOOGLE_KMS_ENCRYPTED", + "GOOGLE_KMS_ENCRYPTED_HMAC_KEY", + "PEM", + "ENCRYPTED_PEM", + "GOOGLE_KMS_ENCRYPTED_PEM", + "JWK", + ], + "enumNames": [ + "Plain text", + "Base64 encoded", + "Encrypted text", + "Encrypted Base64-encoded", + "Encrypted HMAC key", + "Base64-encoded HMAC key", + "Encrypted with Google KMS", + "Google KMS-encrypted HMAC key", + "PEM encoded certificate, key, or password", + "Encrypted PEM", + "Google KMS-encrypted PEM", + "JWK", + ], + "exampleValue": "", + "options": { + "enum_titles": [ + "Plain text", + "Base64 encoded", + "Encrypted text", + "Encrypted Base64-encoded", + "Encrypted HMAC key", + "Base64-encoded HMAC key", + "Encrypted with Google KMS", + "Google KMS-encrypted HMAC key", + "PEM encoded certificate, key, or password", + "Encrypted PEM", + "Google KMS-encrypted PEM", + "JWK", + ], + }, + "propertyOrder": 300, + "required": true, + "title": "Secret Format", + "type": "string", + }, + "serviceAccount": { + "default": "default", + "description": "The ID of the GCP service account to use when connecting to Secret Manager.

GCP service accounts can be configured in the global Google Service Account service. The service account must be enabled for this realm otherwise the secret store will fail to load.", + "exampleValue": "", + "propertyOrder": 200, + "required": true, + "title": "GCP Service Account ID", + "type": "string", + }, + }, + "type": "object", +} +`; + +exports[`SecretStoreOps Cloud Tests readSecretStores() 1: Read realm SecretStores 1`] = ` +[ + { + "_id": "ESV", + "_rev": "325689269", + "_type": { + "_id": "GoogleSecretManagerSecretStoreProvider", + "collection": true, + "name": "Google Secret Manager", + }, + "expiryDurationSeconds": 600, + "project": "&{google.project.id}", + "secretFormat": "PEM", + "serviceAccount": "default", + }, +] +`; + +exports[`SecretStoreOps Cloud Tests updateSecretStoreMapping() 1: Update ESV secret store mapping 1`] = ` +{ + "_id": "am.services.oauth2.oidc.signing.EDDSA", + "_rev": "1919880477", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "esv-test", + ], + "secretId": "am.services.oauth2.oidc.signing.EDDSA", +} +`; + +exports[`SecretStoreOps createSecretStoreExportTemplate() 1: Create SecretStore Export Template 1`] = ` +{ + "meta": Any, + "secretstore": {}, +} +`; diff --git a/src/test/snapshots/ops/classic/SecretStoreOps.test.js.snap b/src/test/snapshots/ops/classic/SecretStoreOps.test.js.snap deleted file mode 100644 index 3f8b309ff..000000000 --- a/src/test/snapshots/ops/classic/SecretStoreOps.test.js.snap +++ /dev/null @@ -1,620 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SecretStoreOps createSecretStoreExportTemplate() 1: Create SecretStore Export Template 1`] = ` -{ - "meta": Any, - "secretstore": {}, -} -`; - -exports[`SecretStoreOps exportSecretStores() 1: Export realm SecretStores 1`] = ` -{ - "meta": Any, - "secretstore": {}, -} -`; - -exports[`SecretStoreOps exportSecretStores() 2: Export global SecretStores 1`] = ` -{ - "meta": Any, - "secretstore": { - "EnvironmentAndSystemPropertySecretStore": { - "_id": "EnvironmentAndSystemPropertySecretStore", - "_type": { - "_id": "EnvironmentAndSystemPropertySecretStore", - "collection": false, - "name": "Environment and System Property Secrets Store", - }, - "format": "BASE64", - "mappings": undefined, - }, - "default-keystore": { - "_id": "default-keystore", - "_type": { - "_id": "KeyStoreSecretStore", - "collection": true, - "name": "Keystore", - }, - "file": "/home/prestonhales/am/security/keystores/keystore.jceks", - "keyEntryPassword": "entrypass", - "leaseExpiryDuration": 5, - "mappings": [ - { - "_id": "am.applications.agents.remote.consent.request.signing.ES256", - "_rev": "1192664276", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es256test", - ], - "secretId": "am.applications.agents.remote.consent.request.signing.ES256", - }, - { - "_id": "am.applications.agents.remote.consent.request.signing.ES384", - "_rev": "288173840", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es384test", - ], - "secretId": "am.applications.agents.remote.consent.request.signing.ES384", - }, - { - "_id": "am.applications.agents.remote.consent.request.signing.ES512", - "_rev": "-294942577", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es512test", - ], - "secretId": "am.applications.agents.remote.consent.request.signing.ES512", - }, - { - "_id": "am.applications.agents.remote.consent.request.signing.RSA", - "_rev": "1911324886", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.applications.agents.remote.consent.request.signing.RSA", - }, - { - "_id": "am.authentication.nodes.persistentcookie.encryption", - "_rev": "-91845293", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.authentication.nodes.persistentcookie.encryption", - }, - { - "_id": "am.authn.authid.signing.HMAC", - "_rev": "934473037", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.authn.authid.signing.HMAC", - }, - { - "_id": "am.authn.trees.transientstate.encryption", - "_rev": "1917709756", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "directenctest", - ], - "secretId": "am.authn.trees.transientstate.encryption", - }, - { - "_id": "am.default.applications.federation.entity.providers.saml2.idp.encryption", - "_rev": "1907232131", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.default.applications.federation.entity.providers.saml2.idp.encryption", - }, - { - "_id": "am.default.applications.federation.entity.providers.saml2.idp.signing", - "_rev": "1976286662", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.default.applications.federation.entity.providers.saml2.idp.signing", - }, - { - "_id": "am.default.applications.federation.entity.providers.saml2.sp.encryption", - "_rev": "1974801991", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.default.applications.federation.entity.providers.saml2.sp.encryption", - }, - { - "_id": "am.default.applications.federation.entity.providers.saml2.sp.signing", - "_rev": "-86805022", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.default.applications.federation.entity.providers.saml2.sp.signing", - }, - { - "_id": "am.default.authentication.modules.persistentcookie.encryption", - "_rev": "-239710853", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.default.authentication.modules.persistentcookie.encryption", - }, - { - "_id": "am.default.authentication.modules.persistentcookie.signing", - "_rev": "1188815885", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.default.authentication.modules.persistentcookie.signing", - }, - { - "_id": "am.default.authentication.nodes.persistentcookie.signing", - "_rev": "986410257", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.default.authentication.nodes.persistentcookie.signing", - }, - { - "_id": "am.global.services.oauth2.oidc.agent.idtoken.signing", - "_rev": "-122487018", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.global.services.oauth2.oidc.agent.idtoken.signing", - }, - { - "_id": "am.global.services.saml2.client.storage.jwt.encryption", - "_rev": "2003184760", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "directenctest", - ], - "secretId": "am.global.services.saml2.client.storage.jwt.encryption", - }, - { - "_id": "am.global.services.session.clientbased.encryption.AES", - "_rev": "599325994", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "aestest", - ], - "secretId": "am.global.services.session.clientbased.encryption.AES", - }, - { - "_id": "am.global.services.session.clientbased.signing.HMAC", - "_rev": "952853781", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.global.services.session.clientbased.signing.HMAC", - }, - { - "_id": "am.services.iot.jwt.issuer.signing", - "_rev": "-1095047595", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.services.iot.jwt.issuer.signing", - }, - { - "_id": "am.services.oauth2.jwt.authenticity.signing", - "_rev": "-1210340267", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.services.oauth2.jwt.authenticity.signing", - }, - { - "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP", - "_rev": "-75049409", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP", - }, - { - "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", - "_rev": "-108687993", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", - }, - { - "_id": "am.services.oauth2.oidc.decryption.RSA1.5", - "_rev": "2073465911", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.services.oauth2.oidc.decryption.RSA1.5", - }, - { - "_id": "am.services.oauth2.oidc.rp.idtoken.encryption", - "_rev": "2025247879", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.services.oauth2.oidc.rp.idtoken.encryption", - }, - { - "_id": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", - "_rev": "-152865330", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", - }, - { - "_id": "am.services.oauth2.oidc.signing.ES256", - "_rev": "1010246364", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es256test", - ], - "secretId": "am.services.oauth2.oidc.signing.ES256", - }, - { - "_id": "am.services.oauth2.oidc.signing.ES384", - "_rev": "105751800", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es384test", - ], - "secretId": "am.services.oauth2.oidc.signing.ES384", - }, - { - "_id": "am.services.oauth2.oidc.signing.ES512", - "_rev": "-477362537", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es512test", - ], - "secretId": "am.services.oauth2.oidc.signing.ES512", - }, - { - "_id": "am.services.oauth2.oidc.signing.RSA", - "_rev": "2112649438", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.services.oauth2.oidc.signing.RSA", - }, - { - "_id": "am.services.oauth2.remote.consent.request.encryption", - "_rev": "1156224168", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "selfserviceenctest", - ], - "secretId": "am.services.oauth2.remote.consent.request.encryption", - }, - { - "_id": "am.services.oauth2.remote.consent.response.decryption", - "_rev": "2022034763", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "test", - ], - "secretId": "am.services.oauth2.remote.consent.response.decryption", - }, - { - "_id": "am.services.oauth2.remote.consent.response.signing.RSA", - "_rev": "-219924262", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.services.oauth2.remote.consent.response.signing.RSA", - }, - { - "_id": "am.services.oauth2.stateless.signing.ES256", - "_rev": "1077337120", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es256test", - ], - "secretId": "am.services.oauth2.stateless.signing.ES256", - }, - { - "_id": "am.services.oauth2.stateless.signing.ES384", - "_rev": "172846524", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es384test", - ], - "secretId": "am.services.oauth2.stateless.signing.ES384", - }, - { - "_id": "am.services.oauth2.stateless.signing.ES512", - "_rev": "-410267929", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "es512test", - ], - "secretId": "am.services.oauth2.stateless.signing.ES512", - }, - { - "_id": "am.services.oauth2.stateless.signing.HMAC", - "_rev": "-1093456131", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "hmacsigningtest", - ], - "secretId": "am.services.oauth2.stateless.signing.HMAC", - }, - { - "_id": "am.services.oauth2.stateless.signing.RSA", - "_rev": "1960097294", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.services.oauth2.stateless.signing.RSA", - }, - { - "_id": "am.services.oauth2.stateless.token.encryption", - "_rev": "1900916088", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "directenctest", - ], - "secretId": "am.services.oauth2.stateless.token.encryption", - }, - { - "_id": "am.services.saml2.metadata.signing.RSA", - "_rev": "2008235726", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "rsajwtsigningkey", - ], - "secretId": "am.services.saml2.metadata.signing.RSA", - }, - { - "_id": "am.services.uma.pct.encryption", - "_rev": "1883661748", - "_type": { - "_id": "mappings", - "collection": true, - "name": "Mappings", - }, - "aliases": [ - "directenctest", - ], - "secretId": "am.services.uma.pct.encryption", - }, - ], - "providerName": "SunJCE", - "storePassword": "storepass", - "storetype": "JCEKS", - }, - "default-passwords-store": { - "_id": "default-passwords-store", - "_type": { - "_id": "FileSystemSecretStore", - "collection": true, - "name": "File System Secret Volumes", - }, - "directory": "/home/prestonhales/am/security/secrets/encrypted", - "format": "ENCRYPTED_PLAIN", - "mappings": undefined, - }, - }, -} -`; - -exports[`SecretStoreOps readSecretStores() 1: Read realm SecretStores 1`] = `[]`; - -exports[`SecretStoreOps readSecretStores() 2: Read global SecretStores 1`] = ` -[ - { - "_id": "default-keystore", - "_type": { - "_id": "KeyStoreSecretStore", - "collection": true, - "name": "Keystore", - }, - "file": "/home/prestonhales/am/security/keystores/keystore.jceks", - "keyEntryPassword": "entrypass", - "leaseExpiryDuration": 5, - "providerName": "SunJCE", - "storePassword": "storepass", - "storetype": "JCEKS", - }, - { - "_id": "default-passwords-store", - "_type": { - "_id": "FileSystemSecretStore", - "collection": true, - "name": "File System Secret Volumes", - }, - "directory": "/home/prestonhales/am/security/secrets/encrypted", - "format": "ENCRYPTED_PLAIN", - }, - { - "_id": "EnvironmentAndSystemPropertySecretStore", - "_type": { - "_id": "EnvironmentAndSystemPropertySecretStore", - "collection": false, - "name": "Environment and System Property Secrets Store", - }, - "format": "BASE64", - }, -] -`; diff --git a/src/test/utils/TestUtils.ts b/src/test/utils/TestUtils.ts index 6f849bc8e..4a12ec5e1 100644 --- a/src/test/utils/TestUtils.ts +++ b/src/test/utils/TestUtils.ts @@ -245,6 +245,13 @@ export function printError(error: Error, message?: string) { export function snapshotResultCallback(error: FrodoError) { if (error) { - expect(error.getCombinedMessage()).toMatchSnapshot(); + if (typeof error.getCombinedMessage === 'function') { + expect(error.getCombinedMessage()).toMatchSnapshot(); + } else { + throw new FrodoError( + 'TESTING ERROR: Expected a FrodoError, but got a different error.\nMessage: ' + + error.message + ); + } } }