@rockcarver/frodo-lib 0.17.2-0 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -1
- package/cjs/api/AgentApi.js +1 -1
- package/cjs/api/AgentApi.js.map +1 -1
- package/cjs/api/AgentApi.test.js.map +1 -1
- package/cjs/api/AuthenticateApi.js +17 -12
- package/cjs/api/AuthenticateApi.js.map +1 -1
- package/cjs/api/AuthenticateApi.test.js.map +1 -1
- package/cjs/api/NodeApi.test.js.map +1 -1
- package/cjs/api/SecretsApi.test.js.map +1 -1
- package/cjs/api/TreeApi.test.js.map +1 -1
- package/cjs/api/VariablesApi.test.js.map +1 -1
- package/cjs/api/utils/ApiUtils.js +13 -4
- package/cjs/api/utils/ApiUtils.js.map +1 -1
- package/cjs/api/utils/ApiUtils.test.js.map +1 -1
- package/cjs/ops/AgentOps.test.js.map +1 -1
- package/cjs/ops/AuthenticateOps.js +0 -7
- package/cjs/ops/AuthenticateOps.js.map +1 -1
- package/cjs/ops/SecretsOps.js +3 -3
- package/cjs/ops/SecretsOps.js.map +1 -1
- package/cjs/ops/VariablesOps.js +3 -3
- package/cjs/ops/VariablesOps.js.map +1 -1
- package/cjs/shared/State.js +1 -1
- package/cjs/shared/State.js.map +1 -1
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/ig_mytestrun_com.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent1.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/{ig_chico.json → FrodoOpsTestGatewayAgent2.json} +0 -2
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/ig_chico.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent3.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/{ig_mytestrun_com.json → FrodoOpsTestGatewayAgent4.json} +0 -2
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/api_client.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent5.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/{api_client.json → FrodoOpsTestGatewayAgent6.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent7.json +20 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent8.json +20 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent9.json +30 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent1.json +30 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent2.json +20 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent3.json +20 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/{javaAgent.json → FrodoOpsTestJavaAgent1.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/{tomcatagent.json → FrodoOpsTestJavaAgent2.json} +0 -2
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/tomcatagent.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent3.json} +0 -2
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/javaAgent.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent4.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent5.json +621 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent6.json +628 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent7.json +628 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent8.json +628 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent9.json +628 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent1.json +621 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent2.json +628 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent3.json +628 -0
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/apacheagent.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent1.json} +0 -2
- package/{esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/webserver.json → cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent2.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/{webserver.json → FrodoOpsTestWebAgent3.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/{apacheagent.json → FrodoOpsTestWebAgent4.json} +0 -2
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent5.json +454 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent6.json +453 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent7.json +453 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent8.json +453 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent9.json +453 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent1.json +454 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent2.json +453 -0
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent3.json +453 -0
- package/esm/api/AgentApi.mjs +1 -1
- package/esm/api/AgentApi.test.mjs +323 -246
- package/esm/api/AuthenticateApi.mjs +16 -12
- package/esm/api/AuthenticateApi.test.mjs +77 -35
- package/esm/api/NodeApi.test.mjs +248 -914
- package/esm/api/SecretsApi.test.mjs +252 -245
- package/esm/api/TreeApi.test.mjs +190 -105
- package/esm/api/VariablesApi.test.mjs +108 -12
- package/esm/api/utils/ApiUtils.mjs +12 -4
- package/esm/api/utils/ApiUtils.test.mjs +80 -79
- package/esm/ops/AgentOps.test.mjs +780 -1210
- package/esm/ops/AuthenticateOps.mjs +0 -7
- package/esm/ops/SecretsOps.mjs +3 -3
- package/esm/ops/VariablesOps.mjs +3 -3
- package/esm/shared/State.mjs +1 -1
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent1.json +30 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent2.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent3.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent4.json +30 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent5.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent6.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent7.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent8.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoOpsTestGatewayAgent9.json +30 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent1.json +30 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent2.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/FrodoTestGatewayAgent3.json +20 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent1.json +621 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent2.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent3.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent4.json +621 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent5.json +621 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent6.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent7.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent8.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoOpsTestJavaAgent9.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent1.json +621 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent2.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/J2EEAgent/FrodoTestJavaAgent3.json +628 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent1.json +454 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent2.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent3.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent4.json +454 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent5.json +454 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent6.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent7.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent8.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoOpsTestWebAgent9.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent1.json +454 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent2.json +453 -0
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/WebAgent/FrodoTestWebAgent3.json +453 -0
- package/package.json +1 -1
- package/types/api/AgentApi.d.ts.map +1 -1
- package/types/api/AuthenticateApi.d.ts +11 -2
- package/types/api/AuthenticateApi.d.ts.map +1 -1
- package/types/api/utils/ApiUtils.d.ts +7 -1
- package/types/api/utils/ApiUtils.d.ts.map +1 -1
- package/types/ops/AuthenticateOps.d.ts.map +1 -1
- package/types/ops/SecretsOps.d.ts.map +1 -1
- package/types/ops/VariablesOps.d.ts.map +1 -1
- package/types/shared/State.d.ts.map +1 -1
- package/cjs/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/ajays_client.json +0 -22
- package/esm/test/mocks/AgentApi/getAgentByTypeAndId/IdentityGatewayAgent/ajays_client.json +0 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentOps.test.js","names":["mock","MockAdapter","axios","state","setHost","setRealm","setCookieName","setCookieValue","setDeploymentType","global","CLOUD_DEPLOYMENT_TYPE_KEY","describe","test","expect","Agent","createAgentExportTemplate","toBeDefined","template","meta","agents","exportTemplate","console","dir","toBeTruthy","toMatchObject","getAgents","agentTypes","agentIds","mockGetAgentsByType","assertions","length","toBe","agent","toContain","_type","_id","getAgent","agentType","agentId","mockFindAgentById","mockGetAgentByTypeAndId","getAgentByTypeAndId","getIdentityGatewayAgents","getIdentityGatewayAgent","putIdentityGatewayAgent","agentData","mockPutAgentByTypeAndId","mockAgentType","mockAgentId","mockAgentObj","isEqualJson","getJavaAgents","getJavaAgent","putJavaAgent","getWebAgents","getWebAgent","putWebAgent","exportAgents","exportData","Object","keys","values","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgents","ig_mytestrun_com","ig_chico","ajays_client","api_client","tomcatagent","javaAgent","apacheagent","webserver","importIdentityGatewayAgents","error","message","importJavaAgents","importWebAgents","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","deleteAgents","mockDeleteAgentByTypeAndId","deleteAgent","deleteIdentityGatewayAgents","deleteIdentityGatewayAgent","mockFindAgentByTypeAndId","deleteJavaAgents","deleteJavaAgent","deleteWebAgents","deleteWebAgent"],"sources":["ops/AgentOps.test.ts"],"sourcesContent":["import axios from 'axios';\nimport MockAdapter from 'axios-mock-adapter';\nimport { Agent, state } from '../index';\nimport * as global from '../storage/StaticStorage';\nimport { isEqualJson } from './utils/OpsUtils';\nimport {\n mockGetAgentsByType,\n mockGetAgentByTypeAndId,\n mockFindAgentById,\n mockPutAgentByTypeAndId,\n getAgent,\n mockDeleteAgentByTypeAndId,\n mockFindAgentByTypeAndId,\n} from '../test/mocks/ForgeRockApiMockEngine';\nimport { AgentExportInterface } from './OpsTypes';\n\nconst mock = new MockAdapter(axios);\n\nstate.setHost('https://openam-frodo-dev.forgeblocks.com/am');\nstate.setRealm('alpha');\nstate.setCookieName('cookieName');\nstate.setCookieValue('cookieValue');\nstate.setDeploymentType(global.CLOUD_DEPLOYMENT_TYPE_KEY);\n\ndescribe('AgentOps - createAgentExportTemplate()', () => {\n test('createAgentExportTemplate() 0: Method is implemented', async () => {\n expect(Agent.createAgentExportTemplate).toBeDefined();\n });\n\n test('createAgentExportTemplate() 1: Get all agent types', async () => {\n const template: AgentExportInterface = { meta: {}, agents: {} };\n const exportTemplate = Agent.createAgentExportTemplate();\n console.dir(exportTemplate);\n expect(exportTemplate).toBeTruthy();\n expect(exportTemplate).toMatchObject<AgentExportInterface>(template);\n });\n});\n\ndescribe('AgentOps - getAgents()', () => {\n test('getAgents() 0: Method is implemented', async () => {\n expect(Agent.getAgents).toBeDefined();\n });\n\n test('getAgents() 1: Get all agents', async () => {\n const agentTypes = ['IdentityGatewayAgent', 'J2EEAgent', 'WebAgent'];\n const agentIds = [\n 'ig_mytestrun_com',\n 'ig_chico',\n 'ajays_client',\n 'api_client',\n 'tomcatagent',\n 'javaAgent',\n 'apacheagent',\n 'webserver',\n ];\n mockGetAgentsByType(mock);\n expect.assertions(21);\n const agents = await Agent.getAgents();\n expect(agents).toBeTruthy();\n expect(agents.length).toBe(8);\n for (const agent of agents) {\n expect(agentTypes).toContain(agent._type._id);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - getAgent()', () => {\n test('getAgent() 0: Method is implemented', async () => {\n expect(Agent.getAgent).toBeDefined();\n });\n\n test('getAgent() 1: Get agent \"ig_mytestrun_com\" (gateway)', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(5);\n const agent = await Agent.getAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getAgent() 2: Get agent \"tomcatagent\" (java)', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(5);\n const agent = await Agent.getAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getAgent() 3: Get agent \"apacheagent\" (web)', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(5);\n const agent = await Agent.getAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - getAgentByTypeAndId()', () => {\n test('getAgentByTypeAndId() 0: Method is implemented', async () => {\n expect(Agent.getAgentByTypeAndId).toBeDefined();\n });\n\n test('getAgentByTypeAndId() 1: Get gateway agent \"ig_mytestrun_com\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getAgentByTypeAndId(agentType, agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getAgentByTypeAndId() 2: Get java agent \"tomcatagent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getAgentByTypeAndId(agentType, agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getAgentByTypeAndId() 3: Get web agent \"apacheagent\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getAgentByTypeAndId(agentType, agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - getIdentityGatewayAgents()', () => {\n test('getIdentityGatewayAgents() 0: Method is implemented', async () => {\n expect(Agent.getIdentityGatewayAgents).toBeDefined();\n });\n\n test('getIdentityGatewayAgents() 1: Get gateway agents', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentIds = [\n 'ig_mytestrun_com',\n 'ig_chico',\n 'ajays_client',\n 'api_client',\n ];\n mockGetAgentsByType(mock);\n expect.assertions(10);\n const agents = await Agent.getIdentityGatewayAgents();\n expect(agents).toBeTruthy();\n for (const agent of agents) {\n expect(agent._type._id).toBe(agentType);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - getIdentityGatewayAgent()', () => {\n test('getIdentityGatewayAgent() 0: Method is implemented', async () => {\n expect(Agent.getIdentityGatewayAgent).toBeDefined();\n });\n\n test('getIdentityGatewayAgent() 1: Get gateway agent \"ig_mytestrun_com\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getIdentityGatewayAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getIdentityGatewayAgent() 2: Get gateway agent \"ig_chico\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_chico';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getIdentityGatewayAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getIdentityGatewayAgent() 3: Get gateway agent \"ajays_client\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ajays_client';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getIdentityGatewayAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getIdentityGatewayAgent() 4: Get gateway agent \"api_client\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'api_client';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getIdentityGatewayAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - putIdentityGatewayAgent()', () => {\n test('putIdentityGatewayAgent() 0: Method is implemented', async () => {\n expect(Agent.putIdentityGatewayAgent).toBeDefined();\n });\n\n test('putIdentityGatewayAgent() 1: Put gateway agent \"ig_mytestrun_com\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putIdentityGatewayAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n\n test('putIdentityGatewayAgent() 2: Put gateway agent \"ig_chico\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_chico';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putIdentityGatewayAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n\n test('putIdentityGatewayAgent() 3: Put gateway agent \"ajays_client\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ajays_client';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putIdentityGatewayAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n\n test('putIdentityGatewayAgent() 4: Put gateway agent \"api_client\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'api_client';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putIdentityGatewayAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - getJavaAgents()', () => {\n test('getJavaAgents() 0: Method is implemented', async () => {\n expect(Agent.getJavaAgents).toBeDefined();\n });\n\n test('getJavaAgents() 1: Get java agents', async () => {\n const agentType = 'J2EEAgent';\n const agentIds = ['tomcatagent', 'javaAgent'];\n mockGetAgentsByType(mock);\n expect.assertions(6);\n const agents = await Agent.getJavaAgents();\n expect(agents).toBeTruthy();\n for (const agent of agents) {\n expect(agent._type._id).toBe(agentType);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - getJavaAgent()', () => {\n test('getJavaAgent() 0: Method is implemented', async () => {\n expect(Agent.getJavaAgent).toBeDefined();\n });\n\n test('getJavaAgent() 1: Get java agent \"tomcatagent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getJavaAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getJavaAgent() 2: Get java agent \"javaAgent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'javaAgent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getJavaAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - putJavaAgent()', () => {\n test('putJavaAgent() 0: Method is implemented', async () => {\n expect(Agent.putJavaAgent).toBeDefined();\n });\n\n test('putJavaAgent() 1: Put java agent \"tomcatagent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putJavaAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n\n test('putJavaAgent() 2: Put java agent \"javaAgent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'javaAgent';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putJavaAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - getWebAgents()', () => {\n test('getWebAgents() 0: Method is implemented', async () => {\n expect(Agent.getWebAgents).toBeDefined();\n });\n\n test('getWebAgents() 1: Get web agents', async () => {\n const agentType = 'WebAgent';\n const agentIds = ['apacheagent', 'webserver'];\n mockGetAgentsByType(mock);\n expect.assertions(6);\n const agents = await Agent.getWebAgents();\n expect(agents).toBeTruthy();\n for (const agent of agents) {\n expect(agent._type._id).toBe(agentType);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - getWebAgent()', () => {\n test('getWebAgent() 0: Method is implemented', async () => {\n expect(Agent.getWebAgent).toBeDefined();\n });\n\n test('getWebAgent() 1: Get web agent \"apacheagent\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getWebAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n\n test('getWebAgent() 2: Get web agent \"webserver\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'webserver';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(4);\n const agent = await Agent.getWebAgent(agentId);\n expect(agent).toBeTruthy();\n expect(agent._type._id).toBe(agentType);\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - putWebAgent()', () => {\n test('putWebAgent() 0: Method is implemented', async () => {\n expect(Agent.putWebAgent).toBeDefined();\n });\n\n test('putWebAgent() 1: Put java agent \"apacheagent\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putWebAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n\n test('putWebAgent() 2: Put web agent \"webserver\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'webserver';\n const agentData = getAgent(agentType, agentId);\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(5);\n const agent = await Agent.putWebAgent(agentId, agentData);\n expect(agent).toBeTruthy();\n expect(agent._id).toBe(agentId);\n });\n});\n\ndescribe('AgentOps - exportAgents()', () => {\n test('exportAgents() 0: Method is implemented', async () => {\n expect(Agent.exportAgents).toBeDefined();\n });\n\n test('exportAgents() 1: Export all agents', async () => {\n const agentTypes = ['IdentityGatewayAgent', 'J2EEAgent', 'WebAgent'];\n const agentIds = [\n 'ig_mytestrun_com',\n 'ig_chico',\n 'ajays_client',\n 'api_client',\n 'tomcatagent',\n 'javaAgent',\n 'apacheagent',\n 'webserver',\n ];\n mockGetAgentsByType(mock);\n expect.assertions(22);\n const exportData = await Agent.exportAgents();\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(8);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentTypes).toContain(agent._type._id);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportIdentityGatewayAgents()', () => {\n test('exportIdentityGatewayAgents() 0: Method is implemented', async () => {\n expect(Agent.exportIdentityGatewayAgents).toBeDefined();\n });\n\n test('exportIdentityGatewayAgents() 1: Export gateway agents', async () => {\n const agentTypes = ['IdentityGatewayAgent'];\n const agentIds = [\n 'ig_mytestrun_com',\n 'ig_chico',\n 'ajays_client',\n 'api_client',\n ];\n mockGetAgentsByType(mock);\n expect.assertions(12);\n const exportData = await Agent.exportIdentityGatewayAgents();\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(4);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentTypes).toContain(agent._type._id);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportJavaAgents()', () => {\n test('exportJavaAgents() 0: Method is implemented', async () => {\n expect(Agent.exportJavaAgents).toBeDefined();\n });\n\n test('exportJavaAgents() 1: Export java agents', async () => {\n const agentTypes = ['J2EEAgent'];\n const agentIds = ['tomcatagent', 'javaAgent'];\n mockGetAgentsByType(mock);\n expect.assertions(8);\n const exportData = await Agent.exportJavaAgents();\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(2);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentTypes).toContain(agent._type._id);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportWebAgents()', () => {\n test('exportWebAgents() 0: Method is implemented', async () => {\n expect(Agent.exportJavaAgents).toBeDefined();\n });\n\n test('exportWebAgents() 1: Export web agents', async () => {\n const agentTypes = ['WebAgent'];\n const agentIds = ['apacheagent', 'webserver'];\n mockGetAgentsByType(mock);\n expect.assertions(8);\n const exportData = await Agent.exportWebAgents();\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(2);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentTypes).toContain(agent._type._id);\n expect(agentIds).toContain(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportAgent()', () => {\n test('exportAgent() 0: Method is implemented', async () => {\n expect(Agent.exportAgent).toBeDefined();\n });\n\n test('exportAgent() 1: Export agent \"ig_mytestrun_com\" (gateway)', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(7);\n const exportData = await Agent.exportAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n\n test('exportAgent() 2: Export agent \"tomcatagent\" (java)', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(7);\n const exportData = await Agent.exportAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n\n test('exportAgent() 3: Export agent \"apacheagent\" (web)', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentById(mock);\n mockGetAgentByTypeAndId(mock);\n expect.assertions(7);\n const exportData = await Agent.exportAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportIdentityGatewayAgent()', () => {\n test('exportIdentityGatewayAgent() 0: Method is implemented', async () => {\n expect(Agent.exportIdentityGatewayAgent).toBeDefined();\n });\n\n test('exportIdentityGatewayAgent() 1: Export gateway agent \"ig_mytestrun_com\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(6);\n const exportData = await Agent.exportIdentityGatewayAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportJavaAgent()', () => {\n test('exportJavaAgent() 0: Method is implemented', async () => {\n expect(Agent.exportJavaAgent).toBeDefined();\n });\n\n test('exportJavaAgent() 2: Export java agent \"tomcatagent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(6);\n const exportData = await Agent.exportJavaAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - exportWebAgent()', () => {\n test('exportWebAgent() 0: Method is implemented', async () => {\n expect(Agent.exportWebAgent).toBeDefined();\n });\n\n test('exportWebAgent() 3: Export web agent \"apacheagent\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockGetAgentByTypeAndId(mock);\n expect.assertions(6);\n const exportData = await Agent.exportWebAgent(agentId);\n expect(exportData).toBeTruthy();\n expect(exportData.agents).toBeTruthy();\n expect(Object.keys(exportData.agents).length).toBe(1);\n for (const agent of Object.values(exportData.agents)) {\n expect(agentType).toBe(agent._type._id);\n expect(agentId).toBe(agent._id);\n }\n });\n});\n\ndescribe('AgentOps - importAgents()', () => {\n test('importAgents() 0: Method is implemented', async () => {\n expect(Agent.importAgents).toBeDefined();\n });\n\n test('importAgents() 1: Import all agents', async () => {\n const agents = {\n ig_mytestrun_com: 'IdentityGatewayAgent',\n ig_chico: 'IdentityGatewayAgent',\n ajays_client: 'IdentityGatewayAgent',\n api_client: 'IdentityGatewayAgent',\n tomcatagent: 'J2EEAgent',\n javaAgent: 'J2EEAgent',\n apacheagent: 'WebAgent',\n webserver: 'WebAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(25);\n await Agent.importAgents(exportData);\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - importIdentityGatewayAgents()', () => {\n test('importIdentityGatewayAgents() 0: Method is implemented', async () => {\n expect(Agent.importIdentityGatewayAgents).toBeDefined();\n });\n\n test('importIdentityGatewayAgents() 1: Import all gateway agents', async () => {\n const agents = {\n ig_mytestrun_com: 'IdentityGatewayAgent',\n ig_chico: 'IdentityGatewayAgent',\n ajays_client: 'IdentityGatewayAgent',\n api_client: 'IdentityGatewayAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(13);\n await Agent.importIdentityGatewayAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('importIdentityGatewayAgents() 2: Import agents with wrong type', async () => {\n const agents = {\n tomcatagent: 'J2EEAgent',\n javaAgent: 'J2EEAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.importIdentityGatewayAgents(exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'IdentityGatewayAgent' but got 'J2EEAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - importJavaAgents()', () => {\n test('importJavaAgents() 0: Method is implemented', async () => {\n expect(Agent.importJavaAgents).toBeDefined();\n });\n\n test('importJavaAgents() 1: Import all java agents', async () => {\n const agents = {\n tomcatagent: 'J2EEAgent',\n javaAgent: 'J2EEAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(7);\n await Agent.importJavaAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('importJavaAgents() 2: Import agents with wrong type', async () => {\n const agents = {\n apacheagent: 'WebAgent',\n webserver: 'WebAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.importJavaAgents(exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'J2EEAgent' but got 'WebAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - importWebAgents()', () => {\n test('importWebAgents() 0: Method is implemented', async () => {\n expect(Agent.importWebAgents).toBeDefined();\n });\n\n test('importWebAgents() 1: Import all web agents', async () => {\n const agents = {\n apacheagent: 'WebAgent',\n webserver: 'WebAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(7);\n await Agent.importWebAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('importWebAgents() 2: Import agents with wrong type', async () => {\n const agents = {\n ig_mytestrun_com: 'IdentityGatewayAgent',\n ig_chico: 'IdentityGatewayAgent',\n ajays_client: 'IdentityGatewayAgent',\n api_client: 'IdentityGatewayAgent',\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n const agentType = agents[agentId];\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n }\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.importWebAgents(exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'WebAgent' but got 'IdentityGatewayAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - importAgent()', () => {\n test('importAgent() 0: Method is implemented', async () => {\n expect(Agent.importAgent).toBeDefined();\n });\n\n test('importAgent() 1: Import gateway agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n\n test('importAgent() 2: Import java agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n\n test('importAgent() 3: Import web agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - importIdentityGatewayAgent()', () => {\n test('importIdentityGatewayAgent() 0: Method is implemented', async () => {\n expect(Agent.importIdentityGatewayAgent).toBeDefined();\n });\n\n test('importIdentityGatewayAgent() 1: Import gateway agent \"ig_mytestrun_com\"', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importIdentityGatewayAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n\n test('importIdentityGatewayAgent() 2: Import agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(2);\n try {\n await Agent.importIdentityGatewayAgent(agentId, exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'IdentityGatewayAgent' but got 'J2EEAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - importJavaAgent()', () => {\n test('importJavaAgent() 0: Method is implemented', async () => {\n expect(Agent.importJavaAgents).toBeDefined();\n });\n\n test('importJavaAgent() 1: Import java agent \"tomcatagent\"', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importJavaAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n\n test('importJavaAgent() 2: Import agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(2);\n try {\n await Agent.importJavaAgent(agentId, exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'J2EEAgent' but got 'WebAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - importWebAgent()', () => {\n test('importWebAgent() 0: Method is implemented', async () => {\n expect(Agent.importWebAgent).toBeDefined();\n });\n\n test('importWebAgent() 1: Import web agent \"apacheagent\"', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(4);\n await Agent.importWebAgent(agentId, exportData);\n expect(true).toBeTruthy();\n });\n\n test('importWebAgent() 2: Import agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n const agentData = getAgent(agentType, agentId);\n exportData.agents[agentId] = agentData;\n mockPutAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n expect(isEqualJson(mockAgentObj, agentData, ['_rev'])).toBeTruthy();\n }\n );\n expect.assertions(2);\n try {\n await Agent.importWebAgent(agentId, exportData);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n \"Wrong agent type! Expected 'WebAgent' but got 'IdentityGatewayAgent'.\"\n );\n }\n });\n});\n\ndescribe('AgentOps - deleteAgents()', () => {\n test('deleteAgents() 0: Method is implemented', async () => {\n expect(Agent.deleteAgents).toBeDefined();\n });\n\n test('deleteAgents() 1: Delete all agents', async () => {\n const agents = {\n ig_mytestrun_com: 'IdentityGatewayAgent',\n ig_chico: 'IdentityGatewayAgent',\n ajays_client: 'IdentityGatewayAgent',\n api_client: 'IdentityGatewayAgent',\n tomcatagent: 'J2EEAgent',\n javaAgent: 'J2EEAgent',\n apacheagent: 'WebAgent',\n webserver: 'WebAgent',\n };\n mockGetAgentsByType(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(28);\n await Agent.deleteAgents();\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - deleteAgent()', () => {\n test('deleteAgent() 0: Method is implemented', async () => {\n expect(Agent.deleteAgent).toBeDefined();\n });\n\n test('deleteAgent() 1: Delete agent \"ig_mytestrun_com\" (gateway)', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentById(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteAgent(agentId);\n expect(true).toBeTruthy();\n });\n\n test('deleteAgent() 2: Delete agent \"tomcatagent\" (java)', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentById(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteAgent(agentId);\n expect(true).toBeTruthy();\n });\n\n test('deleteAgent() 3: Delete agent \"apacheagent\" (web)', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentById(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteAgent(agentId);\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - deleteIdentityGatewayAgents()', () => {\n test('deleteIdentityGatewayAgents() 0: Method is implemented', async () => {\n expect(Agent.deleteIdentityGatewayAgents).toBeDefined();\n });\n\n test('deleteIdentityGatewayAgents() 1: Delete all gateway agents', async () => {\n const agents = {\n ig_mytestrun_com: 'IdentityGatewayAgent',\n ig_chico: 'IdentityGatewayAgent',\n ajays_client: 'IdentityGatewayAgent',\n api_client: 'IdentityGatewayAgent',\n };\n mockGetAgentsByType(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(14);\n await Agent.deleteIdentityGatewayAgents();\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - deleteIdentityGatewayAgent()', () => {\n test('deleteIdentityGatewayAgent() 0: Method is implemented', async () => {\n expect(Agent.deleteIdentityGatewayAgent).toBeDefined();\n });\n\n test('deleteIdentityGatewayAgent() 1: Delete gateway agent \"ig_mytestrun_com\"', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteIdentityGatewayAgent(agentId);\n expect(true).toBeTruthy();\n });\n\n test('deleteIdentityGatewayAgent() 2: Delete agent of wrong type \"tomcatagent\" (java)', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteIdentityGatewayAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n `Identity gateway agent '${agentId}' not found!`\n );\n }\n });\n\n test('deleteIdentityGatewayAgent() 3: Delete agent of wrong type \"apacheagent\" (web)', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteIdentityGatewayAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(\n `Identity gateway agent '${agentId}' not found!`\n );\n }\n });\n});\n\ndescribe('AgentOps - deleteJavaAgents()', () => {\n test('deleteJavaAgents() 0: Method is implemented', async () => {\n expect(Agent.deleteJavaAgents).toBeDefined();\n });\n\n test('deleteJavaAgents() 1: Delete all java agents', async () => {\n const agents = {\n tomcatagent: 'J2EEAgent',\n javaAgent: 'J2EEAgent',\n };\n mockGetAgentsByType(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(8);\n await Agent.deleteJavaAgents();\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - deleteJavaAgent()', () => {\n test('deleteJavaAgent() 0: Method is implemented', async () => {\n expect(Agent.deleteJavaAgent).toBeDefined();\n });\n\n test('deleteJavaAgent() 1: Delete java agent \"tomcatagent\"', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteJavaAgent(agentId);\n expect(true).toBeTruthy();\n });\n\n test('deleteJavaAgent() 2: Delete agent of wrong type \"ig_mytestrun_com\" (gateway)', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteJavaAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(`Java agent '${agentId}' not found!`);\n }\n });\n\n test('deleteJavaAgent() 3: Delete agent of wrong type \"apacheagent\" (web)', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteJavaAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(`Java agent '${agentId}' not found!`);\n }\n });\n});\n\ndescribe('AgentOps - deleteWebAgents()', () => {\n test('deleteWebAgents() 0: Method is implemented', async () => {\n expect(Agent.deleteWebAgents).toBeDefined();\n });\n\n test('deleteWebAgents() 1: Delete all web agents', async () => {\n const agents = {\n apacheagent: 'WebAgent',\n webserver: 'WebAgent',\n };\n mockGetAgentsByType(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(Object.values(agents)).toContain(mockAgentType);\n expect(Object.keys(agents)).toContain(mockAgentId);\n }\n );\n expect.assertions(8);\n await Agent.deleteWebAgents();\n expect(true).toBeTruthy();\n });\n});\n\ndescribe('AgentOps - deleteWebAgent()', () => {\n test('deleteWebAgent() 0: Method is implemented', async () => {\n expect(Agent.deleteWebAgent).toBeDefined();\n });\n\n test('deleteWebAgent() 1: Delete web agent \"apacheagent\"', async () => {\n const agentType = 'WebAgent';\n const agentId = 'apacheagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(5);\n await Agent.deleteWebAgent(agentId);\n expect(true).toBeTruthy();\n });\n\n test('deleteWebAgent() 2: Delete agent of wrong type \"ig_mytestrun_com\" (gateway)', async () => {\n const agentType = 'IdentityGatewayAgent';\n const agentId = 'ig_mytestrun_com';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteWebAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(`Web agent '${agentId}' not found!`);\n }\n });\n\n test('deleteWebAgent() 3: Delete agent of wrong type \"tomcatagent\" (java)', async () => {\n const agentType = 'J2EEAgent';\n const agentId = 'tomcatagent';\n mockFindAgentByTypeAndId(mock);\n mockDeleteAgentByTypeAndId(\n mock,\n (mockAgentType, mockAgentId, mockAgentObj) => {\n expect(mockAgentObj).toBeTruthy();\n expect(agentType).toBe(mockAgentType);\n expect(agentId).toBe(mockAgentId);\n }\n );\n expect.assertions(2);\n try {\n await Agent.deleteWebAgent(agentId);\n } catch (error) {\n expect(error).toBeTruthy();\n expect(error.message).toBe(`Web agent '${agentId}' not found!`);\n }\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentOps.test.js","names":["jest","setTimeout","autoSetupPolly","stageAgent","agent","create","AgentRaw","getAgentByTypeAndId","type","id","deleteAgentByTypeAndId","error","putAgentByTypeAndId","getAgent","describe","gateway1","gateway2","gateway3","gateway4","gateway5","gateway6","gateway7","gateway8","gateway9","java1","java2","java3","java4","java5","java6","java7","java8","java9","web1","web2","web3","web4","web5","web6","web7","web8","web9","beforeAll","process","env","FRODO_POLLY_MODE","afterAll","FRODO_RECORD_PHASE","test","expect","Agent","createAgentExportTemplate","toBeDefined","response","toMatchSnapshot","getAgents","getIdentityGatewayAgents","getIdentityGatewayAgent","putIdentityGatewayAgent","getJavaAgents","getJavaAgent","putJavaAgent","getWebAgents","getWebAgent","putWebAgent","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgents","agents","exportData","agentId","Object","keys","toBeTruthy","importIdentityGatewayAgents","assertions","importJavaAgents","importWebAgents","importAgent","importIdentityGatewayAgent","message","importJavaAgent","importWebAgent","deleteAgent","deleteIdentityGatewayAgent","deleteJavaAgent","deleteWebAgent","deleteIdentityGatewayAgents","deleteJavaAgents","deleteWebAgents","deleteAgents"],"sources":["ops/AgentOps.test.ts"],"sourcesContent":["/**\n * To record and update snapshots, you must perform 5 steps in order:\n *\n * 1. Record API responses & update ESM snapshots\n *\n * This step breaks down into 4 phases:\n *\n * Phase 1: Record Non-destructive tests\n * Phase 2: Record Group 1 of DESTRUCTIVE tests - Deletes by ID\n * Phase 3: Record Group 2 of DESTRUCTIVE tests - Deletes by type\n * Phase 4: Record Group 3 of DESTRUCTIVE tests - Delete all\n *\n * Because destructive tests interfere with the recording of non-destructive\n * tests and also interfere among themselves, they have to be run in groups\n * of non-interfering tests.\n *\n * To record and update ESM snapshots, you must call the test:record\n * script and override all the connection state variables required\n * to connect to the env to record from and also indicate the phase:\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=1 FRODO_HOST=frodo-dev npm run test:record AgentOps\n *\n * THESE TESTS ARE DESTRUCTIVE!!! DO NOT RUN AGAINST AN ENV WITH ACTIVE AGENTS!!!\n *\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=2 FRODO_HOST=frodo-dev npm run test:record AgentOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=3 FRODO_HOST=frodo-dev npm run test:record AgentOps\n * FRODO_DEBUG=1 FRODO_RECORD_PHASE=4 FRODO_HOST=frodo-dev npm run test:record AgentOps\n *\n * The above command assumes that you have a connection profile for\n * 'frodo-dev' on your development machine.\n *\n * 2. Update CJS snapshots\n *\n * After recording, the ESM snapshots will already be updated as that happens\n * in one go, but you must manually update the CJS snapshots by running:\n *\n * FRODO_DEBUG=1 npm run test:update AgentOps\n *\n * 3. Test your changes\n *\n * If 1 and 2 didn't produce any errors, you are ready to run the tests in\n * replay mode and make sure they all succeed as well:\n *\n * npm run test:only AgentOps\n *\n * Note: FRODO_DEBUG=1 is optional and enables debug logging for some output\n * in case things don't function as expected\n */\nimport { jest } from '@jest/globals';\nimport { Agent, AgentRaw } from '../index';\nimport { getAgent } from '../test/mocks/ForgeRockApiMockEngine';\nimport { autoSetupPolly } from '../utils/AutoSetupPolly';\n\n// Increase timeout for this test as pipeline keeps failing with error:\n// Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.\njest.setTimeout(30000);\n\nautoSetupPolly();\n\nasync function stageAgent(agent: { id: string; type: string }, create = true) {\n // setup gateway1 - delete if exists, then create\n try {\n await AgentRaw.getAgentByTypeAndId(agent.type, agent.id);\n await AgentRaw.deleteAgentByTypeAndId(agent.type, agent.id);\n } catch (error) {\n // ignore\n } finally {\n if (create) {\n await AgentRaw.putAgentByTypeAndId(\n agent.type,\n agent.id,\n getAgent(agent.type, agent.id)\n );\n }\n }\n}\n\ndescribe('AgentOps', () => {\n const gateway1 = {\n id: 'FrodoOpsTestGatewayAgent1',\n type: 'IdentityGatewayAgent',\n };\n const gateway2 = {\n id: 'FrodoOpsTestGatewayAgent2',\n type: 'IdentityGatewayAgent',\n };\n const gateway3 = {\n id: 'FrodoOpsTestGatewayAgent3',\n type: 'IdentityGatewayAgent',\n };\n const gateway4 = {\n id: 'FrodoOpsTestGatewayAgent4',\n type: 'IdentityGatewayAgent',\n };\n const gateway5 = {\n id: 'FrodoOpsTestGatewayAgent5',\n type: 'IdentityGatewayAgent',\n };\n const gateway6 = {\n id: 'FrodoOpsTestGatewayAgent6',\n type: 'IdentityGatewayAgent',\n };\n const gateway7 = {\n id: 'FrodoOpsTestGatewayAgent7',\n type: 'IdentityGatewayAgent',\n };\n const gateway8 = {\n id: 'FrodoOpsTestGatewayAgent8',\n type: 'IdentityGatewayAgent',\n };\n const gateway9 = {\n id: 'FrodoOpsTestGatewayAgent9',\n type: 'IdentityGatewayAgent',\n };\n const java1 = {\n id: 'FrodoOpsTestJavaAgent1',\n type: 'J2EEAgent',\n };\n const java2 = {\n id: 'FrodoOpsTestJavaAgent2',\n type: 'J2EEAgent',\n };\n const java3 = {\n id: 'FrodoOpsTestJavaAgent3',\n type: 'J2EEAgent',\n };\n const java4 = {\n id: 'FrodoOpsTestJavaAgent4',\n type: 'J2EEAgent',\n };\n const java5 = {\n id: 'FrodoOpsTestJavaAgent5',\n type: 'J2EEAgent',\n };\n const java6 = {\n id: 'FrodoOpsTestJavaAgent6',\n type: 'J2EEAgent',\n };\n const java7 = {\n id: 'FrodoOpsTestJavaAgent7',\n type: 'J2EEAgent',\n };\n const java8 = {\n id: 'FrodoOpsTestJavaAgent8',\n type: 'J2EEAgent',\n };\n const java9 = {\n id: 'FrodoOpsTestJavaAgent9',\n type: 'J2EEAgent',\n };\n const web1 = {\n id: 'FrodoOpsTestWebAgent1',\n type: 'WebAgent',\n };\n const web2 = {\n id: 'FrodoOpsTestWebAgent2',\n type: 'WebAgent',\n };\n const web3 = {\n id: 'FrodoOpsTestWebAgent3',\n type: 'WebAgent',\n };\n const web4 = {\n id: 'FrodoOpsTestWebAgent4',\n type: 'WebAgent',\n };\n const web5 = {\n id: 'FrodoOpsTestWebAgent5',\n type: 'WebAgent',\n };\n const web6 = {\n id: 'FrodoOpsTestWebAgent6',\n type: 'WebAgent',\n };\n const web7 = {\n id: 'FrodoOpsTestWebAgent7',\n type: 'WebAgent',\n };\n const web8 = {\n id: 'FrodoOpsTestWebAgent8',\n type: 'WebAgent',\n };\n const web9 = {\n id: 'FrodoOpsTestWebAgent9',\n type: 'WebAgent',\n };\n // in recording mode, setup test data before recording\n beforeAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageAgent(gateway1);\n await stageAgent(gateway2, false);\n await stageAgent(gateway3, false);\n await stageAgent(gateway4, false);\n await stageAgent(gateway5, false);\n await stageAgent(gateway6, false);\n await stageAgent(gateway7);\n await stageAgent(gateway8);\n await stageAgent(gateway9);\n\n await stageAgent(java1);\n await stageAgent(java2, false);\n await stageAgent(java3, false);\n await stageAgent(java4, false);\n await stageAgent(java5, false);\n await stageAgent(java6, false);\n await stageAgent(java7);\n await stageAgent(java8);\n await stageAgent(java9);\n\n await stageAgent(web1);\n await stageAgent(web2, false);\n await stageAgent(web3, false);\n await stageAgent(web4, false);\n await stageAgent(web5, false);\n await stageAgent(web6, false);\n await stageAgent(web7);\n await stageAgent(web8);\n await stageAgent(web9);\n }\n });\n // in recording mode, remove test data after recording\n afterAll(async () => {\n if (process.env.FRODO_POLLY_MODE === 'record') {\n await stageAgent(gateway1, false);\n await stageAgent(gateway2, false);\n await stageAgent(gateway3, false);\n await stageAgent(gateway4, false);\n await stageAgent(gateway5, false);\n await stageAgent(gateway6, false);\n await stageAgent(gateway7, false);\n await stageAgent(gateway8, false);\n await stageAgent(gateway9, false);\n\n await stageAgent(java1, false);\n await stageAgent(java2, false);\n await stageAgent(java3, false);\n await stageAgent(java4, false);\n await stageAgent(java5, false);\n await stageAgent(java6, false);\n await stageAgent(java7, false);\n await stageAgent(java8, false);\n await stageAgent(java9, false);\n\n await stageAgent(web1, false);\n await stageAgent(web2, false);\n await stageAgent(web3, false);\n await stageAgent(web4, false);\n await stageAgent(web5, false);\n await stageAgent(web6, false);\n await stageAgent(web7, false);\n await stageAgent(web8, false);\n await stageAgent(web9, false);\n }\n });\n\n // Phase 1\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '1')\n ) {\n describe('createAgentExportTemplate()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.createAgentExportTemplate).toBeDefined();\n });\n\n test('1: Get all agent types', async () => {\n const response = Agent.createAgentExportTemplate();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getAgents).toBeDefined();\n });\n\n test('1: Get all agents', async () => {\n const response = await Agent.getAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getAgent).toBeDefined();\n });\n\n test(`1: Get agent '${gateway1.id}' (${gateway1.type})`, async () => {\n const response = await Agent.getAgent(gateway1.id);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get agent '${java1.id}' (${java1.type})`, async () => {\n const response = await Agent.getAgent(java1.id);\n expect(response).toMatchSnapshot();\n });\n\n test(`3: Get agent '${web1.id}' (${web1.type})`, async () => {\n const response = await Agent.getAgent(web1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getAgentByTypeAndId()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getAgentByTypeAndId).toBeDefined();\n });\n\n test(`1: Get agent by type '${gateway1.id}' (${gateway1.type})`, async () => {\n const response = await Agent.getAgentByTypeAndId(\n gateway1.type,\n gateway1.id\n );\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Get agent by type '${java1.id}' (${java1.type})`, async () => {\n const response = await Agent.getAgentByTypeAndId(java1.type, java1.id);\n expect(response).toMatchSnapshot();\n });\n\n test(`3: Get agent by type '${web1.id}' (${web1.type})`, async () => {\n const response = await Agent.getAgentByTypeAndId(web1.type, web1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getIdentityGatewayAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getIdentityGatewayAgents).toBeDefined();\n });\n\n test('1: Get gateway agents', async () => {\n const response = await Agent.getIdentityGatewayAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getIdentityGatewayAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getIdentityGatewayAgent).toBeDefined();\n });\n\n test(`1: Get ${gateway1.type} '${gateway1.id}'`, async () => {\n const response = await Agent.getIdentityGatewayAgent(gateway1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putIdentityGatewayAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.putIdentityGatewayAgent).toBeDefined();\n });\n\n test(`1: Put ${gateway2.type} '${gateway2.id}'`, async () => {\n const response = await Agent.putIdentityGatewayAgent(\n gateway2.id,\n getAgent(gateway2.type, gateway2.id)\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getJavaAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getJavaAgents).toBeDefined();\n });\n\n test('1: Get java agents', async () => {\n const response = await Agent.getJavaAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getJavaAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getJavaAgent).toBeDefined();\n });\n\n test(`1: Get ${java1.type} '${java1.id}'`, async () => {\n const response = await Agent.getJavaAgent(java1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putJavaAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.putJavaAgent).toBeDefined();\n });\n\n test(`1: Put ${java2.type} '${java2.id}'`, async () => {\n const response = await Agent.putJavaAgent(\n java2.id,\n getAgent(java2.type, java2.id)\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getWebAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getWebAgents).toBeDefined();\n });\n\n test('1: Get web agents', async () => {\n const response = await Agent.getWebAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('getWebAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.getWebAgent).toBeDefined();\n });\n\n test(`1: Get ${web1.type} '${web1.id}'`, async () => {\n const response = await Agent.getWebAgent(web1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('putWebAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.putWebAgent).toBeDefined();\n });\n\n test(`1: Put ${web2.type} '${web2.id}'`, async () => {\n const response = await Agent.putWebAgent(\n web2.id,\n getAgent(web2.type, web2.id)\n );\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportAgents).toBeDefined();\n });\n\n test('1: Export all agents', async () => {\n const response = await Agent.exportAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportIdentityGatewayAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportIdentityGatewayAgents).toBeDefined();\n });\n\n test('1: Export gateway agents', async () => {\n const response = await Agent.exportIdentityGatewayAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportJavaAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportJavaAgents).toBeDefined();\n });\n\n test('1: Export java agents', async () => {\n const response = await Agent.exportJavaAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportWebAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportJavaAgents).toBeDefined();\n });\n\n test('1: Export web agents', async () => {\n const response = await Agent.exportWebAgents();\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportAgent).toBeDefined();\n });\n\n test(`1: Export agent '${gateway1.id}' (${gateway1.type})`, async () => {\n const response = await Agent.exportAgent(gateway1.id);\n expect(response).toMatchSnapshot();\n });\n\n test(`2: Export agent '${java1.id}' (${java1.type})`, async () => {\n const response = await Agent.exportAgent(java1.id);\n expect(response).toMatchSnapshot();\n });\n\n test(`3: Export agent '${web1.id}' (${web1.type})`, async () => {\n const response = await Agent.exportAgent(web1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportIdentityGatewayAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportIdentityGatewayAgent).toBeDefined();\n });\n\n test(`1: Export ${gateway1.type} '${gateway1.id}'`, async () => {\n const response = await Agent.exportIdentityGatewayAgent(gateway1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportJavaAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportJavaAgent).toBeDefined();\n });\n\n test(`1: Export ${java1.type} '${java1.id}'`, async () => {\n const response = await Agent.exportJavaAgent(java1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('exportWebAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.exportWebAgent).toBeDefined();\n });\n\n test(`1: Export ${web1.type} '${web1.id}'`, async () => {\n const response = await Agent.exportWebAgent(web1.id);\n expect(response).toMatchSnapshot();\n });\n });\n\n describe('importAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importAgents).toBeDefined();\n });\n\n test('1: Import all agents', async () => {\n const agents = {\n [gateway3.id]: gateway3.type,\n [java3.id]: java3.type,\n [web3.id]: web3.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n await Agent.importAgents(exportData);\n expect(true).toBeTruthy();\n });\n });\n\n describe('importIdentityGatewayAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importIdentityGatewayAgents).toBeDefined();\n });\n\n test('1: Import all gateway agents', async () => {\n const agents = {\n [gateway4.id]: gateway4.type,\n [gateway5.id]: gateway5.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n await Agent.importIdentityGatewayAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import gateway agents with wrong type', async () => {\n const agents = {\n [java4.id]: java4.type,\n [web4.id]: web4.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n expect.assertions(1);\n try {\n await Agent.importIdentityGatewayAgents(exportData);\n } catch (error) {\n expect(error).toMatchSnapshot();\n }\n });\n });\n\n describe('importJavaAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importJavaAgents).toBeDefined();\n });\n\n test('1: Import all java agents', async () => {\n const agents = {\n [java4.id]: java4.type,\n [java5.id]: java5.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n await Agent.importJavaAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import java agents with wrong type', async () => {\n const agents = {\n [web4.id]: web4.type,\n [gateway4.id]: gateway4.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n expect.assertions(1);\n try {\n await Agent.importJavaAgents(exportData);\n } catch (error) {\n expect(error).toMatchSnapshot();\n }\n });\n });\n\n describe('importWebAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importWebAgents).toBeDefined();\n });\n\n test('1: Import all web agents', async () => {\n const agents = {\n [web4.id]: web4.type,\n [web5.id]: web5.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n await Agent.importWebAgents(exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import web agents with wrong type', async () => {\n const agents = {\n [gateway4.id]: gateway4.type,\n [java4.id]: java4.type,\n };\n const exportData = Agent.createAgentExportTemplate();\n for (const agentId of Object.keys(agents)) {\n exportData.agents[agentId] = getAgent(agents[agentId], agentId);\n }\n expect.assertions(1);\n try {\n await Agent.importWebAgents(exportData);\n } catch (error) {\n expect(error).toMatchSnapshot();\n }\n });\n });\n\n describe('importAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importAgent).toBeDefined();\n });\n\n test('1: Import gateway agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[gateway6.id] = getAgent(gateway6.type, gateway6.id);\n await Agent.importAgent(gateway6.id, exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import java agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[java6.id] = getAgent(java6.type, java6.id);\n await Agent.importAgent(java6.id, exportData);\n expect(true).toBeTruthy();\n });\n\n test('3: Import web agent', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[web6.id] = getAgent(web6.type, web6.id);\n await Agent.importAgent(web6.id, exportData);\n expect(true).toBeTruthy();\n });\n });\n\n describe('importIdentityGatewayAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importIdentityGatewayAgent).toBeDefined();\n });\n\n test(`1: Import ${gateway7.type} '${gateway7.id}'`, async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[gateway7.id] = getAgent(gateway7.type, gateway7.id);\n await Agent.importIdentityGatewayAgent(gateway7.id, exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import gateway agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[java7.id] = getAgent(java7.type, java7.id);\n expect.assertions(1);\n try {\n await Agent.importIdentityGatewayAgent(java7.id, exportData);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n\n describe('importJavaAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importJavaAgents).toBeDefined();\n });\n\n test(`1: Import ${java7.type} '${java7.id}'`, async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[java7.id] = getAgent(java7.type, java7.id);\n await Agent.importJavaAgent(java7.id, exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import java agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[web7.id] = getAgent(web7.type, web7.id);\n expect.assertions(1);\n try {\n await Agent.importJavaAgent(web7.id, exportData);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n\n describe('importWebAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.importWebAgent).toBeDefined();\n });\n\n test(`1: Import ${web7.type} '${web7.id}'`, async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[web7.id] = getAgent(web7.type, web7.id);\n await Agent.importWebAgent(web7.id, exportData);\n expect(true).toBeTruthy();\n });\n\n test('2: Import web agent with wrong type', async () => {\n const exportData = Agent.createAgentExportTemplate();\n exportData.agents[gateway7.id] = getAgent(gateway7.type, gateway7.id);\n expect.assertions(1);\n try {\n await Agent.importWebAgent(gateway7.id, exportData);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n }\n\n // Phase 2\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '2')\n ) {\n describe('deleteAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteAgent).toBeDefined();\n });\n\n test(`1: Delete agent '${gateway8.id}' (${gateway8.type})`, async () => {\n await Agent.deleteAgent(gateway8.id);\n expect(true).toBeTruthy();\n });\n\n test(`2: Delete agent '${java8.id}' (${java8.type})`, async () => {\n await Agent.deleteAgent(java8.id);\n expect(true).toBeTruthy();\n });\n\n test(`3: Delete agent '${web8.id}' (${web8.type})`, async () => {\n await Agent.deleteAgent(web8.id);\n expect(true).toBeTruthy();\n });\n });\n\n describe('deleteIdentityGatewayAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteIdentityGatewayAgent).toBeDefined();\n });\n\n test(`1: Delete ${gateway9.type} '${gateway9.id}'`, async () => {\n await Agent.deleteIdentityGatewayAgent(gateway9.id);\n expect(true).toBeTruthy();\n });\n\n test(`2: Delete agent of wrong type '${java9.id}' (${java9.type})`, async () => {\n expect.assertions(1);\n try {\n await Agent.deleteIdentityGatewayAgent(java9.id);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n\n describe('deleteJavaAgent()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteJavaAgent).toBeDefined();\n });\n\n test(`1: Delete ${java9.type} '${java9.id}'`, async () => {\n await Agent.deleteJavaAgent(java9.id);\n expect(true).toBeTruthy();\n });\n\n test(`2: Delete agent of wrong type '${web9.id}' (${web9.type})`, async () => {\n expect.assertions(1);\n try {\n await Agent.deleteJavaAgent(web9.id);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n\n describe('deleteWebAgent()', () => {\n test('deleteWebAgent() 0: Method is implemented', async () => {\n expect(Agent.deleteWebAgent).toBeDefined();\n });\n\n test(`1: Delete ${web9.type} '${web9.id}'`, async () => {\n await Agent.deleteWebAgent(web9.id);\n expect(true).toBeTruthy();\n });\n\n test(`2: Delete agent of wrong type '${gateway9.id}' (${gateway9.type})`, async () => {\n expect.assertions(1);\n try {\n await Agent.deleteWebAgent(gateway9.id);\n } catch (error) {\n expect(error.message).toMatchSnapshot();\n }\n });\n });\n }\n\n // Phase 3\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '3')\n ) {\n describe('deleteIdentityGatewayAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteIdentityGatewayAgents).toBeDefined();\n });\n\n test('1: Delete all gateway agents', async () => {\n await Agent.deleteIdentityGatewayAgents();\n expect(true).toBeTruthy();\n });\n });\n\n describe('deleteJavaAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteJavaAgents).toBeDefined();\n });\n\n test('1: Delete all java agents', async () => {\n await Agent.deleteJavaAgents();\n expect(true).toBeTruthy();\n });\n });\n\n describe('deleteWebAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteWebAgents).toBeDefined();\n });\n\n test('1: Delete all web agents', async () => {\n await Agent.deleteWebAgents();\n expect(true).toBeTruthy();\n });\n });\n }\n\n // Phase 4\n if (\n !process.env.FRODO_POLLY_MODE ||\n (process.env.FRODO_POLLY_MODE === 'record' &&\n process.env.FRODO_RECORD_PHASE === '4')\n ) {\n describe('deleteAgents()', () => {\n test('0: Method is implemented', async () => {\n expect(Agent.deleteAgents).toBeDefined();\n });\n\n test('1: Delete all agents', async () => {\n expect.assertions(1);\n await Agent.deleteAgents();\n expect(true).toBeTruthy();\n });\n });\n }\n});\n"],"mappings":"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"}
|
|
@@ -462,17 +462,10 @@ function _getTokens() {
|
|
|
462
462
|
var _token = yield authenticate(state.getUsername(), state.getPassword());
|
|
463
463
|
if (_token) state.setCookieValue(_token);
|
|
464
464
|
yield determineDeploymentTypeAndDefaultRealmAndVersion();
|
|
465
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: before bearer");
|
|
466
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: cookie=".concat(state.getCookieValue()));
|
|
467
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: bearer=".concat(state.getBearerToken()));
|
|
468
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: type=".concat(state.getDeploymentType()));
|
|
469
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: condition=".concat(state.getCookieValue() && !state.getBearerToken() && (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY || state.getDeploymentType() === globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)));
|
|
470
465
|
if (state.getCookieValue() && !state.getBearerToken() && (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY || state.getDeploymentType() === globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)) {
|
|
471
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: in bearer");
|
|
472
466
|
var _accessToken = yield getAccessTokenForUser();
|
|
473
467
|
if (_accessToken) state.setBearerToken(_accessToken);
|
|
474
468
|
}
|
|
475
|
-
(0, _Console.debugMessage)("AuthenticateOps.getTokens: after bearer");
|
|
476
469
|
}
|
|
477
470
|
// incomplete or no credentials
|
|
478
471
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScopes","serviceAccountScopes","adminClientId","determineCookieName","data","getServerInfo","debugMessage","cookieName","error","printMessage","stack","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","state","getRealm","globalConfig","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","cookieValue","getCookieValue","getUseBearerTokenForAmApis","CLOUD_DEPLOYMENT_TYPE_KEY","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getHost","config","maxRedirects","headers","getCookieName","bodyFormData","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","location","indexOf","verboseMessage","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","username","password","response1","step","skip2FA","response2","getAuthCode","codeChallenge","codeChallengeMethod","undefined","redirectLocationURL","queryObject","parse","query","message","getAccessTokenForUser","authCode","getDeploymentType","auth","accessToken","access_token","createPayload","serviceAccountId","u","parseUrl","aud","origin","port","protocol","pathname","exp","Math","floor","Date","getTime","jti","v4","iss","sub","getAccessTokenForServiceAccount","jwk","jwt","createSignedJwtToken","determineDeploymentTypeAndDefaultRealmAndVersion","setDeploymentType","getServerVersionInfo","fullVersion","setAmVersion","getLoggedInSubject","subjectString","getUsername","name","getManagedObject","getServiceAccountId","getTokens","getPassword","getServiceAccountJwk","conn","getConnectionProfile","setHost","tenant","setUsername","setPassword","setAuthenticationService","authenticationService","setAuthenticationHeaderOverrides","authenticationHeaderOverrides","setServiceAccountId","svcacctId","setServiceAccountJwk","svcacctJwk","setCookieName","token","setBearerToken","setUseBearerTokenForAmApis","saErr","error_description","setCookieValue","getBearerToken"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport * as state from '../shared/State';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { debugMessage, printMessage, verboseMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport { getConnectionProfile } from './ConnectionProfileOps';\nimport { v4 } from 'uuid';\nimport { parseUrl } from '../api/utils/ApiUtils';\nimport { JwkRsa, createSignedJwtToken } from './JoseOps';\nimport { getManagedObject } from '../api/ManagedObjectApi';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScopes = 'fr:idm:* openid';\nconst serviceAccountScopes = 'fr:am:* fr:idm:* fr:idc:esv:*';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function determineCookieName() {\n try {\n const { data } = await getServerInfo();\n debugMessage(\n `AuthenticateOps.getCookieName: cookieName=${data.cookieName}`\n );\n return data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {string} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType: string) {\n if (\n !state.getRealm() ||\n state.getRealm() === globalConfig.DEFAULT_REALM_KEY\n ) {\n state.setRealm(globalConfig.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]);\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {Promise<string>} deployment type\n */\nasync function determineDeploymentType(): Promise<string> {\n const cookieValue = state.getCookieValue();\n // https://bugster.forgerock.org/jira/browse/FRAAS-13018\n // There is a chance that this will be blocked due to security concerns and thus is probably best not to keep active\n // if (!cookieValue && getUseBearerTokenForAmApis()) {\n // const token = await getTokenInfo();\n // cookieValue = token.sessionToken;\n // setCookieValue(cookieValue);\n // }\n\n // if we are using a service account, we know it's cloud\n if (state.getUseBearerTokenForAmApis())\n return globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n\n const config = {\n maxRedirects: 0,\n headers: {\n [state.getCookieName()]: state.getCookieValue(),\n },\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${fidcClientId}&csrf=${cookieValue}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = globalConfig.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n // debugMessage(e.response);\n if (\n e.response?.status === 302 &&\n e.response.headers?.location?.indexOf('code=') > -1\n ) {\n verboseMessage(`ForgeRock Identity Cloud`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${forgeopsClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (\n ex.response?.status === 302 &&\n ex.response.headers?.location?.indexOf('code=') > -1\n ) {\n adminClientId = forgeopsClientId;\n verboseMessage(`ForgeOps deployment`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n verboseMessage(`Classic deployment`['brightCyan'] + ` detected.`);\n }\n }\n }\n }\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {string} Session token or null\n */\nasync function authenticate(\n username: string,\n password: string\n): Promise<string> {\n const config = {\n headers: {\n 'X-OpenAM-Username': username,\n 'X-OpenAM-Password': password,\n },\n };\n const response1 = await step({}, config);\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = await step(skip2FA.payload);\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n return response2['tokenId'] as string;\n }\n return null;\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {string} redirectURL oauth2 redirect uri\n * @param {string} codeChallenge PKCE code challenge\n * @param {string} codeChallengeMethod PKCE code challenge method\n * @returns {string} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${adminClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n maxRedirects: 0,\n };\n let response = undefined;\n try {\n response = await authorize(bodyFormData, config);\n } catch (error) {\n response = error.response;\n }\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.headers?.location;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response?.data, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {Promise<string | null>} access token or null\n */\nasync function getAccessTokenForUser(): Promise<string | null> {\n debugMessage(`AuthenticateOps.getAccessTokenForUser: start`);\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if ('access_token' in response.data) {\n debugMessage(`AuthenticateOps.getAccessTokenForUser: end with token`);\n return response.data.access_token;\n }\n printMessage('No access token in response.', 'error');\n } catch (error) {\n debugMessage(`Error getting access token for user: ${error}`);\n debugMessage(error.response?.data);\n }\n debugMessage(`AuthenticateOps.getAccessTokenForUser: end without token`);\n return null;\n}\n\nfunction createPayload(serviceAccountId: string) {\n const u = parseUrl(state.getHost());\n const aud = `${u.origin}:${\n u.port ? u.port : u.protocol === 'https' ? '443' : '80'\n }${u.pathname}/oauth2/access_token`;\n\n // Cross platform way of setting JWT expiry time 3 minutes in the future, expressed as number of seconds since EPOCH\n const exp = Math.floor(new Date().getTime() / 1000 + 180);\n\n // A unique ID for the JWT which is required when requesting the openid scope\n const jti = v4();\n\n const iss = serviceAccountId;\n const sub = serviceAccountId;\n\n // Create the payload for our bearer token\n const payload = { iss, sub, aud, exp, jti };\n\n return payload;\n}\n\n/**\n * Get access token for service account\n * @param {string} serviceAccountId UUID of service account\n * @param {JwkRsa} jwk Java Wek Key\n * @returns {string | null} Access token or null\n */\nexport async function getAccessTokenForServiceAccount(\n serviceAccountId: string,\n jwk: JwkRsa\n): Promise<string | null> {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: start`);\n const payload = createPayload(serviceAccountId);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: payload:`);\n debugMessage(payload);\n const jwt = await createSignedJwtToken(payload, jwk);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: jwt:`);\n debugMessage(jwt);\n const bodyFormData = `assertion=${jwt}&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=${serviceAccountScopes}`;\n const response = await accessToken(bodyFormData);\n if ('access_token' in response.data) {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: token:`);\n debugMessage(response.data.access_token);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return response.data.access_token;\n }\n debugMessage(\n `AuthenticateOps.getAccessTokenForServiceAccount: No access token in response.`\n );\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return null;\n}\n\nasync function determineDeploymentTypeAndDefaultRealmAndVersion() {\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: start`\n );\n if (!state.getDeploymentType()) {\n state.setDeploymentType(await determineDeploymentType());\n }\n determineDefaultRealm(state.getDeploymentType());\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: realm=${state.getRealm()}, type=${state.getDeploymentType()}`\n );\n\n const versionInfo = (await getServerVersionInfo()).data;\n\n // https://github.com/rockcarver/frodo-cli/issues/109\n debugMessage(`Full version: ${versionInfo.fullVersion}`);\n\n const version = await getSemanticVersion(versionInfo);\n state.setAmVersion(version);\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: end`\n );\n}\n\nasync function getLoggedInSubject(): Promise<string> {\n let subjectString = `user ${state.getUsername()}`;\n if (state.getUseBearerTokenForAmApis()) {\n const name = (\n await getManagedObject('svcacct', state.getServiceAccountId(), ['name'])\n ).data.name;\n subjectString = `service account ${name} [${state.getServiceAccountId()}]`;\n }\n return subjectString;\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {Promise<boolean>} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(): Promise<boolean> {\n debugMessage(`AuthenticateOps.getTokens: start`);\n if (!state.getHost()) {\n printMessage(\n `No host specified and FRODO_HOST env variable not set!`,\n 'error'\n );\n return false;\n }\n try {\n // if username/password on cli are empty, try to read from connections.json\n if (\n state.getUsername() == null &&\n state.getPassword() == null &&\n !state.getServiceAccountId() &&\n !state.getServiceAccountJwk()\n ) {\n const conn = await getConnectionProfile();\n if (conn) {\n state.setHost(conn.tenant);\n state.setUsername(conn.username);\n state.setPassword(conn.password);\n state.setAuthenticationService(conn.authenticationService);\n state.setAuthenticationHeaderOverrides(\n conn.authenticationHeaderOverrides\n );\n state.setServiceAccountId(conn.svcacctId);\n state.setServiceAccountJwk(conn.svcacctJwk);\n } else {\n return false;\n }\n }\n // now that we have the full tenant URL we can lookup the cookie name\n state.setCookieName(await determineCookieName());\n\n // use service account to login?\n if (state.getServiceAccountId() && state.getServiceAccountJwk()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with service account ${state.getServiceAccountId()}`\n );\n try {\n const token = await getAccessTokenForServiceAccount(\n state.getServiceAccountId(),\n state.getServiceAccountJwk()\n );\n state.setBearerToken(token);\n state.setUseBearerTokenForAmApis(true);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n } catch (saErr) {\n throw new Error(\n `Service account login error: ${\n saErr.response?.data?.error_description ||\n saErr.response?.data?.message\n }`\n );\n }\n }\n // use user account to login\n else if (state.getUsername() && state.getPassword()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with user account ${state.getUsername()}`\n );\n const token = await authenticate(\n state.getUsername(),\n state.getPassword()\n );\n if (token) state.setCookieValue(token);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n debugMessage(`AuthenticateOps.getTokens: before bearer`);\n debugMessage(\n `AuthenticateOps.getTokens: cookie=${state.getCookieValue()}`\n );\n debugMessage(\n `AuthenticateOps.getTokens: bearer=${state.getBearerToken()}`\n );\n debugMessage(\n `AuthenticateOps.getTokens: type=${state.getDeploymentType()}`\n );\n debugMessage(\n `AuthenticateOps.getTokens: condition=${\n state.getCookieValue() &&\n !state.getBearerToken() &&\n (state.getDeploymentType() ===\n globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY ||\n state.getDeploymentType() ===\n globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n }`\n );\n if (\n state.getCookieValue() &&\n !state.getBearerToken() &&\n (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY ||\n state.getDeploymentType() ===\n globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n debugMessage(`AuthenticateOps.getTokens: in bearer`);\n const accessToken = await getAccessTokenForUser();\n if (accessToken) state.setBearerToken(accessToken);\n }\n debugMessage(`AuthenticateOps.getTokens: after bearer`);\n }\n // incomplete or no credentials\n else {\n printMessage(`Incomplete or no credentials!`, 'error');\n return false;\n }\n if (\n state.getCookieValue() ||\n (state.getUseBearerTokenForAmApis() && state.getBearerToken())\n ) {\n // https://github.com/rockcarver/frodo-cli/issues/102\n printMessage(\n `Connected to ${state.getHost()} [${\n state.getRealm() ? state.getRealm() : 'root'\n }] as ${await getLoggedInSubject()}`,\n 'info'\n );\n debugMessage(`AuthenticateOps.getTokens: end with tokens`);\n return true;\n }\n } catch (error) {\n // regular error\n printMessage(error.message, 'error');\n // axios error am api\n printMessage(error.response?.data?.message, 'error');\n // axios error am oauth2 api\n printMessage(error.response?.data?.error_description, 'error');\n // axios error data\n debugMessage(error.response?.data);\n // stack trace\n debugMessage(error.stack || new Error().stack);\n }\n debugMessage(`AuthenticateOps.getTokens: end without tokens`);\n return false;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthenticateOps.js","names":["adminClientPassword","redirectUrlTemplate","idmAdminScopes","serviceAccountScopes","adminClientId","determineCookieName","data","getServerInfo","debugMessage","cookieName","error","printMessage","stack","checkAndHandle2FA","payload","element","callbacks","type","input","value","includes","need2fa","output","code","readlineSync","question","determineDefaultRealm","deploymentType","state","getRealm","globalConfig","DEFAULT_REALM_KEY","setRealm","DEPLOYMENT_TYPE_REALM_MAP","determineDeploymentType","cookieValue","getCookieValue","getUseBearerTokenForAmApis","CLOUD_DEPLOYMENT_TYPE_KEY","fidcClientId","forgeopsClientId","verifier","encodeBase64Url","randomBytes","challenge","createHash","update","digest","challengeMethod","redirectURL","url","resolve","getHost","config","maxRedirects","headers","getCookieName","bodyFormData","CLASSIC_DEPLOYMENT_TYPE_KEY","authorize","e","response","status","location","indexOf","verboseMessage","ex","FORGEOPS_DEPLOYMENT_TYPE_KEY","getSemanticVersion","versionInfo","versionString","version","rx","match","Error","authenticate","username","password","response1","step","skip2FA","response2","getAuthCode","codeChallenge","codeChallengeMethod","undefined","redirectLocationURL","queryObject","parse","query","message","getAccessTokenForUser","authCode","getDeploymentType","auth","accessToken","access_token","createPayload","serviceAccountId","u","parseUrl","aud","origin","port","protocol","pathname","exp","Math","floor","Date","getTime","jti","v4","iss","sub","getAccessTokenForServiceAccount","jwk","jwt","createSignedJwtToken","determineDeploymentTypeAndDefaultRealmAndVersion","setDeploymentType","getServerVersionInfo","fullVersion","setAmVersion","getLoggedInSubject","subjectString","getUsername","name","getManagedObject","getServiceAccountId","getTokens","getPassword","getServiceAccountJwk","conn","getConnectionProfile","setHost","tenant","setUsername","setPassword","setAuthenticationService","authenticationService","setAuthenticationHeaderOverrides","authenticationHeaderOverrides","setServiceAccountId","svcacctId","setServiceAccountJwk","svcacctJwk","setCookieName","token","setBearerToken","setUseBearerTokenForAmApis","saErr","error_description","setCookieValue","getBearerToken"],"sources":["ops/AuthenticateOps.ts"],"sourcesContent":["import url from 'url';\nimport { createHash, randomBytes } from 'crypto';\nimport readlineSync from 'readline-sync';\nimport { encodeBase64Url } from '../api/utils/Base64';\nimport * as state from '../shared/State';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { debugMessage, printMessage, verboseMessage } from './utils/Console';\nimport { getServerInfo, getServerVersionInfo } from '../api/ServerInfoApi';\nimport { step } from '../api/AuthenticateApi';\nimport { accessToken, authorize } from '../api/OAuth2OIDCApi';\nimport { getConnectionProfile } from './ConnectionProfileOps';\nimport { v4 } from 'uuid';\nimport { parseUrl } from '../api/utils/ApiUtils';\nimport { JwkRsa, createSignedJwtToken } from './JoseOps';\nimport { getManagedObject } from '../api/ManagedObjectApi';\n\nconst adminClientPassword = 'doesnotmatter';\nconst redirectUrlTemplate = '/platform/appAuthHelperRedirect.html';\n\nconst idmAdminScopes = 'fr:idm:* openid';\nconst serviceAccountScopes = 'fr:am:* fr:idm:* fr:idc:esv:*';\n\nlet adminClientId = 'idmAdminClient';\n\n/**\n * Helper function to get cookie name\n * @returns {String} cookie name\n */\nasync function determineCookieName() {\n try {\n const { data } = await getServerInfo();\n debugMessage(\n `AuthenticateOps.getCookieName: cookieName=${data.cookieName}`\n );\n return data.cookieName;\n } catch (error) {\n printMessage(`Error getting cookie name: ${error}`, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to determine if this is a setup mfa prompt in the ID Cloud tenant admin login journey\n * @param {Object} payload response from the previous authentication journey step\n * @returns {Object} an object indicating if 2fa is required and the original payload\n */\nfunction checkAndHandle2FA(payload) {\n // let skippable = false;\n if ('callbacks' in payload) {\n for (const element of payload.callbacks) {\n if (element.type === 'HiddenValueCallback') {\n if (element.input[0].value.includes('skip')) {\n // skippable = true;\n element.input[0].value = 'Skip';\n return {\n need2fa: true,\n payload,\n };\n }\n }\n if (element.type === 'NameCallback') {\n if (element.output[0].value.includes('code')) {\n // skippable = false;\n printMessage('2FA is enabled and required for this user...');\n const code = readlineSync.question(`${element.output[0].value}: `);\n element.input[0].value = code;\n return {\n need2fa: true,\n payload,\n };\n }\n }\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n }\n // console.info(\"NO2FA\");\n return {\n need2fa: false,\n payload,\n };\n}\n\n/**\n * Helper function to set the default realm by deployment type\n * @param {string} deploymentType deployment type\n */\nfunction determineDefaultRealm(deploymentType: string) {\n if (\n !state.getRealm() ||\n state.getRealm() === globalConfig.DEFAULT_REALM_KEY\n ) {\n state.setRealm(globalConfig.DEPLOYMENT_TYPE_REALM_MAP[deploymentType]);\n }\n}\n\n/**\n * Helper function to determine the deployment type\n * @returns {Promise<string>} deployment type\n */\nasync function determineDeploymentType(): Promise<string> {\n const cookieValue = state.getCookieValue();\n // https://bugster.forgerock.org/jira/browse/FRAAS-13018\n // There is a chance that this will be blocked due to security concerns and thus is probably best not to keep active\n // if (!cookieValue && getUseBearerTokenForAmApis()) {\n // const token = await getTokenInfo();\n // cookieValue = token.sessionToken;\n // setCookieValue(cookieValue);\n // }\n\n // if we are using a service account, we know it's cloud\n if (state.getUseBearerTokenForAmApis())\n return globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n\n const fidcClientId = 'idmAdminClient';\n const forgeopsClientId = 'idm-admin-ui';\n\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n\n const config = {\n maxRedirects: 0,\n headers: {\n [state.getCookieName()]: state.getCookieValue(),\n },\n };\n let bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${fidcClientId}&csrf=${cookieValue}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n\n let deploymentType = globalConfig.CLASSIC_DEPLOYMENT_TYPE_KEY;\n try {\n await authorize(bodyFormData, config);\n } catch (e) {\n // debugMessage(e.response);\n if (\n e.response?.status === 302 &&\n e.response.headers?.location?.indexOf('code=') > -1\n ) {\n verboseMessage(`ForgeRock Identity Cloud`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY;\n } else {\n try {\n bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${forgeopsClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${challenge}&code_challenge_method=${challengeMethod}`;\n await authorize(bodyFormData, config);\n } catch (ex) {\n if (\n ex.response?.status === 302 &&\n ex.response.headers?.location?.indexOf('code=') > -1\n ) {\n adminClientId = forgeopsClientId;\n verboseMessage(`ForgeOps deployment`['brightCyan'] + ` detected.`);\n deploymentType = globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY;\n } else {\n verboseMessage(`Classic deployment`['brightCyan'] + ` detected.`);\n }\n }\n }\n }\n return deploymentType;\n}\n\n/**\n * Helper function to extract the semantic version string from a version info object\n * @param {Object} versionInfo version info object\n * @returns {String} semantic version\n */\nasync function getSemanticVersion(versionInfo) {\n if ('version' in versionInfo) {\n const versionString = versionInfo.version;\n const rx = /([\\d]\\.[\\d]\\.[\\d](\\.[\\d])*)/g;\n const version = versionString.match(rx);\n return version[0];\n }\n throw new Error('Cannot extract semantic version from version info object.');\n}\n\n/**\n * Helper function to authenticate and obtain and store session cookie\n * @returns {string} Session token or null\n */\nasync function authenticate(\n username: string,\n password: string\n): Promise<string> {\n const config = {\n headers: {\n 'X-OpenAM-Username': username,\n 'X-OpenAM-Password': password,\n },\n };\n const response1 = await step({}, config);\n const skip2FA = checkAndHandle2FA(response1);\n let response2 = {};\n if (skip2FA.need2fa) {\n response2 = await step(skip2FA.payload);\n } else {\n response2 = skip2FA.payload;\n }\n if ('tokenId' in response2) {\n return response2['tokenId'] as string;\n }\n return null;\n}\n\n/**\n * Helper function to obtain an oauth2 authorization code\n * @param {string} redirectURL oauth2 redirect uri\n * @param {string} codeChallenge PKCE code challenge\n * @param {string} codeChallengeMethod PKCE code challenge method\n * @returns {string} oauth2 authorization code or null\n */\nasync function getAuthCode(redirectURL, codeChallenge, codeChallengeMethod) {\n try {\n const bodyFormData = `redirect_uri=${redirectURL}&scope=${idmAdminScopes}&response_type=code&client_id=${adminClientId}&csrf=${state.getCookieValue()}&decision=allow&code_challenge=${codeChallenge}&code_challenge_method=${codeChallengeMethod}`;\n const config = {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n maxRedirects: 0,\n };\n let response = undefined;\n try {\n response = await authorize(bodyFormData, config);\n } catch (error) {\n response = error.response;\n }\n if (response.status < 200 || response.status > 399) {\n printMessage('error getting auth code', 'error');\n printMessage(\n 'likely cause: mismatched parameters with OAuth client config',\n 'error'\n );\n return null;\n }\n const redirectLocationURL = response.headers?.location;\n const queryObject = url.parse(redirectLocationURL, true).query;\n if ('code' in queryObject) {\n return queryObject.code;\n }\n printMessage('auth code not found', 'error');\n return null;\n } catch (error) {\n printMessage(`error getting auth code - ${error.message}`, 'error');\n printMessage(error.response?.data, 'error');\n debugMessage(error.stack);\n return null;\n }\n}\n\n/**\n * Helper function to obtain oauth2 access token\n * @returns {Promise<string | null>} access token or null\n */\nasync function getAccessTokenForUser(): Promise<string | null> {\n debugMessage(`AuthenticateOps.getAccessTokenForUser: start`);\n try {\n const verifier = encodeBase64Url(randomBytes(32));\n const challenge = encodeBase64Url(\n createHash('sha256').update(verifier).digest()\n );\n const challengeMethod = 'S256';\n const redirectURL = url.resolve(state.getHost(), redirectUrlTemplate);\n const authCode = await getAuthCode(redirectURL, challenge, challengeMethod);\n if (authCode == null) {\n printMessage('error getting auth code', 'error');\n return null;\n }\n let response = null;\n if (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY) {\n const config = {\n auth: {\n username: adminClientId,\n password: adminClientPassword,\n },\n };\n const bodyFormData = `redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData, config);\n } else {\n const bodyFormData = `client_id=${adminClientId}&redirect_uri=${redirectURL}&grant_type=authorization_code&code=${authCode}&code_verifier=${verifier}`;\n response = await accessToken(bodyFormData);\n }\n if ('access_token' in response.data) {\n debugMessage(`AuthenticateOps.getAccessTokenForUser: end with token`);\n return response.data.access_token;\n }\n printMessage('No access token in response.', 'error');\n } catch (error) {\n debugMessage(`Error getting access token for user: ${error}`);\n debugMessage(error.response?.data);\n }\n debugMessage(`AuthenticateOps.getAccessTokenForUser: end without token`);\n return null;\n}\n\nfunction createPayload(serviceAccountId: string) {\n const u = parseUrl(state.getHost());\n const aud = `${u.origin}:${\n u.port ? u.port : u.protocol === 'https' ? '443' : '80'\n }${u.pathname}/oauth2/access_token`;\n\n // Cross platform way of setting JWT expiry time 3 minutes in the future, expressed as number of seconds since EPOCH\n const exp = Math.floor(new Date().getTime() / 1000 + 180);\n\n // A unique ID for the JWT which is required when requesting the openid scope\n const jti = v4();\n\n const iss = serviceAccountId;\n const sub = serviceAccountId;\n\n // Create the payload for our bearer token\n const payload = { iss, sub, aud, exp, jti };\n\n return payload;\n}\n\n/**\n * Get access token for service account\n * @param {string} serviceAccountId UUID of service account\n * @param {JwkRsa} jwk Java Wek Key\n * @returns {string | null} Access token or null\n */\nexport async function getAccessTokenForServiceAccount(\n serviceAccountId: string,\n jwk: JwkRsa\n): Promise<string | null> {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: start`);\n const payload = createPayload(serviceAccountId);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: payload:`);\n debugMessage(payload);\n const jwt = await createSignedJwtToken(payload, jwk);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: jwt:`);\n debugMessage(jwt);\n const bodyFormData = `assertion=${jwt}&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=${serviceAccountScopes}`;\n const response = await accessToken(bodyFormData);\n if ('access_token' in response.data) {\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: token:`);\n debugMessage(response.data.access_token);\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return response.data.access_token;\n }\n debugMessage(\n `AuthenticateOps.getAccessTokenForServiceAccount: No access token in response.`\n );\n debugMessage(`AuthenticateOps.getAccessTokenForServiceAccount: end`);\n return null;\n}\n\nasync function determineDeploymentTypeAndDefaultRealmAndVersion() {\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: start`\n );\n if (!state.getDeploymentType()) {\n state.setDeploymentType(await determineDeploymentType());\n }\n determineDefaultRealm(state.getDeploymentType());\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: realm=${state.getRealm()}, type=${state.getDeploymentType()}`\n );\n\n const versionInfo = (await getServerVersionInfo()).data;\n\n // https://github.com/rockcarver/frodo-cli/issues/109\n debugMessage(`Full version: ${versionInfo.fullVersion}`);\n\n const version = await getSemanticVersion(versionInfo);\n state.setAmVersion(version);\n debugMessage(\n `AuthenticateOps.determineDeploymentTypeAndDefaultRealmAndVersion: end`\n );\n}\n\nasync function getLoggedInSubject(): Promise<string> {\n let subjectString = `user ${state.getUsername()}`;\n if (state.getUseBearerTokenForAmApis()) {\n const name = (\n await getManagedObject('svcacct', state.getServiceAccountId(), ['name'])\n ).data.name;\n subjectString = `service account ${name} [${state.getServiceAccountId()}]`;\n }\n return subjectString;\n}\n\n/**\n * Get tokens\n * @param {boolean} save true to save a connection profile upon successful authentication, false otherwise\n * @returns {Promise<boolean>} true if tokens were successfully obtained, false otherwise\n */\nexport async function getTokens(): Promise<boolean> {\n debugMessage(`AuthenticateOps.getTokens: start`);\n if (!state.getHost()) {\n printMessage(\n `No host specified and FRODO_HOST env variable not set!`,\n 'error'\n );\n return false;\n }\n try {\n // if username/password on cli are empty, try to read from connections.json\n if (\n state.getUsername() == null &&\n state.getPassword() == null &&\n !state.getServiceAccountId() &&\n !state.getServiceAccountJwk()\n ) {\n const conn = await getConnectionProfile();\n if (conn) {\n state.setHost(conn.tenant);\n state.setUsername(conn.username);\n state.setPassword(conn.password);\n state.setAuthenticationService(conn.authenticationService);\n state.setAuthenticationHeaderOverrides(\n conn.authenticationHeaderOverrides\n );\n state.setServiceAccountId(conn.svcacctId);\n state.setServiceAccountJwk(conn.svcacctJwk);\n } else {\n return false;\n }\n }\n // now that we have the full tenant URL we can lookup the cookie name\n state.setCookieName(await determineCookieName());\n\n // use service account to login?\n if (state.getServiceAccountId() && state.getServiceAccountJwk()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with service account ${state.getServiceAccountId()}`\n );\n try {\n const token = await getAccessTokenForServiceAccount(\n state.getServiceAccountId(),\n state.getServiceAccountJwk()\n );\n state.setBearerToken(token);\n state.setUseBearerTokenForAmApis(true);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n } catch (saErr) {\n throw new Error(\n `Service account login error: ${\n saErr.response?.data?.error_description ||\n saErr.response?.data?.message\n }`\n );\n }\n }\n // use user account to login\n else if (state.getUsername() && state.getPassword()) {\n debugMessage(\n `AuthenticateOps.getTokens: Authenticating with user account ${state.getUsername()}`\n );\n const token = await authenticate(\n state.getUsername(),\n state.getPassword()\n );\n if (token) state.setCookieValue(token);\n await determineDeploymentTypeAndDefaultRealmAndVersion();\n if (\n state.getCookieValue() &&\n !state.getBearerToken() &&\n (state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY ||\n state.getDeploymentType() ===\n globalConfig.FORGEOPS_DEPLOYMENT_TYPE_KEY)\n ) {\n const accessToken = await getAccessTokenForUser();\n if (accessToken) state.setBearerToken(accessToken);\n }\n }\n // incomplete or no credentials\n else {\n printMessage(`Incomplete or no credentials!`, 'error');\n return false;\n }\n if (\n state.getCookieValue() ||\n (state.getUseBearerTokenForAmApis() && state.getBearerToken())\n ) {\n // https://github.com/rockcarver/frodo-cli/issues/102\n printMessage(\n `Connected to ${state.getHost()} [${\n state.getRealm() ? state.getRealm() : 'root'\n }] as ${await getLoggedInSubject()}`,\n 'info'\n );\n debugMessage(`AuthenticateOps.getTokens: end with tokens`);\n return true;\n }\n } catch (error) {\n // regular error\n printMessage(error.message, 'error');\n // axios error am api\n printMessage(error.response?.data?.message, 'error');\n // axios error am oauth2 api\n printMessage(error.response?.data?.error_description, 'error');\n // axios error data\n debugMessage(error.response?.data);\n // stack trace\n debugMessage(error.stack || new Error().stack);\n }\n debugMessage(`AuthenticateOps.getTokens: end without tokens`);\n return false;\n}\n"],"mappings":"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"}
|