@northern.tech/testing 0.6.0 → 0.7.1

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.
Files changed (47) hide show
  1. package/dist/{chunk-CQTA2RKB.js → chunk-4UV4MWUU.js} +2 -2
  2. package/dist/{chunk-JTUHEXXT.js → chunk-5GIOT4M6.js} +2 -2
  3. package/dist/{chunk-24ZPE7FS.js → chunk-AQYKNNMJ.js} +3 -3
  4. package/dist/chunk-AQYKNNMJ.js.map +1 -0
  5. package/dist/{chunk-PZMMQUL4.js → chunk-CT35JRBC.js} +61 -1
  6. package/dist/chunk-CT35JRBC.js.map +1 -0
  7. package/dist/{chunk-WFVQV6M5.js → chunk-ROSMRKMF.js} +3 -2
  8. package/dist/chunk-ROSMRKMF.js.map +1 -0
  9. package/dist/{chunk-3CBI7S4M.js → chunk-TVJ6K2KG.js} +2 -2
  10. package/dist/{chunk-D3ZH3LQV.js → chunk-WFNPT672.js} +2 -2
  11. package/dist/mockData.cjs +60 -0
  12. package/dist/mockData.cjs.map +1 -1
  13. package/dist/mockData.d.cts +30 -0
  14. package/dist/mockData.d.ts +30 -0
  15. package/dist/mockData.js +1 -1
  16. package/dist/requestHandlers/deploymentHandlers.cjs +61 -1
  17. package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -1
  18. package/dist/requestHandlers/deploymentHandlers.js +2 -2
  19. package/dist/requestHandlers/deviceHandlers.cjs +60 -0
  20. package/dist/requestHandlers/deviceHandlers.cjs.map +1 -1
  21. package/dist/requestHandlers/deviceHandlers.js +2 -2
  22. package/dist/requestHandlers/monitorHandlers.cjs +60 -0
  23. package/dist/requestHandlers/monitorHandlers.cjs.map +1 -1
  24. package/dist/requestHandlers/monitorHandlers.js +2 -2
  25. package/dist/requestHandlers/organizationHandlers.cjs +61 -0
  26. package/dist/requestHandlers/organizationHandlers.cjs.map +1 -1
  27. package/dist/requestHandlers/organizationHandlers.js +2 -2
  28. package/dist/requestHandlers/releaseHandlers.cjs +60 -0
  29. package/dist/requestHandlers/releaseHandlers.cjs.map +1 -1
  30. package/dist/requestHandlers/releaseHandlers.js +2 -2
  31. package/dist/requestHandlers/requestHandlers.cjs +62 -1
  32. package/dist/requestHandlers/requestHandlers.cjs.map +1 -1
  33. package/dist/requestHandlers/requestHandlers.js +7 -7
  34. package/dist/requestHandlers/userHandlers.cjs +60 -0
  35. package/dist/requestHandlers/userHandlers.cjs.map +1 -1
  36. package/dist/requestHandlers/userHandlers.js +2 -2
  37. package/dist/setupTests.cjs +60 -0
  38. package/dist/setupTests.cjs.map +1 -1
  39. package/dist/setupTests.js +1 -1
  40. package/package.json +1 -1
  41. package/dist/chunk-24ZPE7FS.js.map +0 -1
  42. package/dist/chunk-PZMMQUL4.js.map +0 -1
  43. package/dist/chunk-WFVQV6M5.js.map +0 -1
  44. /package/dist/{chunk-CQTA2RKB.js.map → chunk-4UV4MWUU.js.map} +0 -0
  45. /package/dist/{chunk-JTUHEXXT.js.map → chunk-5GIOT4M6.js.map} +0 -0
  46. /package/dist/{chunk-3CBI7S4M.js.map → chunk-TVJ6K2KG.js.map} +0 -0
  47. /package/dist/{chunk-D3ZH3LQV.js.map → chunk-WFNPT672.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/requestHandlers/requestHandlers.ts","../../src/requestHandlers/deploymentHandlers.ts","../../src/mockData.ts","../../src/requestHandlers/deviceHandlers.ts","../../src/requestHandlers/monitorHandlers.ts","../../src/requestHandlers/organizationHandlers.ts","../../src/requestHandlers/releaseHandlers.ts","../../src/requestHandlers/userHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { HttpResponse, http } from 'msw';\n\nimport { deploymentHandlers } from './deploymentHandlers';\nimport { deviceHandlers } from './deviceHandlers';\nimport { monitorHandlers } from './monitorHandlers';\nimport { organizationHandlers } from './organizationHandlers';\nimport { releaseHandlers } from './releaseHandlers';\nimport { userHandlers } from './userHandlers';\n\nconst testLocation = '/test';\n\nconst baseHandlers = [\n http.get(testLocation, () => new HttpResponse(null, { status: 200 })),\n http.post(testLocation, () => HttpResponse.json({})),\n http.put(testLocation, () => HttpResponse.json({})),\n http.delete(testLocation, () => HttpResponse.json({}))\n];\n\nconst handlers = [...baseHandlers, ...deploymentHandlers, ...deviceHandlers, ...monitorHandlers, ...organizationHandlers, ...releaseHandlers, ...userHandlers];\n\nexport default handlers;\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrl}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {\n const body = await request.json();\n if (!Object.keys(body).length) {\n return new HttpResponse(JSON.stringify({}), { status: 524 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (!filter_id || !!devices.length) {\n return new HttpResponse(JSON.stringify({}), { status: 525 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(`${deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport {\n ALL_DEVICES,\n ALL_RELEASES,\n defaultPermissionSets,\n emptyRole,\n emptyUiPermissions,\n maxSessionAge,\n rolesById,\n scopedPermissionAreas,\n uiPermissionsById\n} from '@northern.tech/utils/constants';\n\nexport const undefineds = /undefined|\\[object Object\\]/;\nexport const menderEnvironment = {\n features: {\n hasMultitenancy: true\n },\n integrationVersion: 'saas-123.34',\n menderVersion: 'next',\n metaMenderVersion: 'saas-123.34',\n services: {\n deploymentsVersion: '1.2.3',\n deviceauthVersion: null,\n inventoryVersion: null\n }\n};\nexport const TEST_SESSION_DATETIME = '2019-01-13T13:00:00.000Z';\nconst testDate = new Date(TEST_SESSION_DATETIME);\nexport const mockDate = new Date(testDate.setMilliseconds(testDate.getMilliseconds() + maxSessionAge));\n\nexport const defaultPassword = 'mysecretpassword!123';\nexport const defaultCreationDate = '2019-01-13T06:25:00.000Z';\nexport const defaultMacAddress = 'dc:a6:32:12:ad:bf';\n\nexport const testSsoId = 'sso_id';\n\nconst permissionSetObjectTypes = {\n any: 'Any',\n artifacts: 'Artifacts',\n empty: '',\n groups: 'Device groups',\n releases: 'Releases',\n tenantManagement: 'Tenant management',\n userManagement: 'User management'\n};\n\nconst commonEndpoints = {\n artifacts: '^/api/management/v1/deployments/artifacts',\n artifactDetails: '^/api/management/v1/deployments/artifacts/[^/]+',\n deviceManagement: '^/api/management/(v[1-9])/(devauth|inventory)/'\n};\n\nexport const token =\n 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjZTNkMGY4Yy1hZWRlLTQwMzAtYjM5MS03ZDUwMjBlYjg3M2UiLCJzdWIiOiJhMzBhNzgwYi1iODQzLTUzNDQtODBlMy0wZmQ5NWE0ZjZmYzMiLCJleHAiOjE2MDY4MTUzNjksImlhdCI6MTYwNjIxMDU2OSwibWVuZGVyLnRlbmFudCI6IjVmODVjMTdiY2U2MmI3ZmE3ZjVmNzA0MCIsIm1lbmRlci51c2VyIjp0cnVlLCJpc3MiOiJNZW5kZXIgVXNlcnMiLCJzY3AiOiJtZW5kZXIuKiIsIm1lbmRlci5wbGFuIjoicHJvZmVzc2lvbmFsIiwibmJmIjoxNjA2MjEwNTY5fQ.qVgYdCzLTf8OdK9uUctqqaY_HWkIiwpekuGvuGQAXCEgOv4bRNDlZRN_ZRSbxQoARG3pquhScbQrjBV9tcF4irTUPlTn3yrsXNO17DpcbTVeKRkb88RDtIKiRw3orVZ_GlIb-ckTQ5dS-Nqlyyf3Fmrhca-gwt6m_xv2UrmJK6eYYTMfggdRRWb-4u7mEkBI_pHPMTQrT8kJ2BeX-vHgazH9AoH0k85LHtFZQXD7pXHlDZRnLxJXukncwMGDmF17374gavYAIyDIzcC8sEBMDnVXgpikeA1sauzirqix6mAVs6XmxdQO7aF0wfXO1_PTYUA3Nk1oQfMYNlEI3U9uLRJRZIq2L8fmrrBryhstKd4y0KlBbGAQrx8NtRkgajjd1ljMfPBUEZrb7uSerVjneiO-aIBO76CuH0zdklphIjpGJeogkBhe8pAYNggp1XsZHgpZfl7IE5faKaDkMGnutaea--Czor6bhqUNCuY4tR0cpQJbNwy6LS9o1CFy4Log';\n\nexport const accessTokens = [\n { id: 'some-id-1', expiration_date: '2022-06-02T11:11:21.725Z', name: 'some-name-1' },\n { id: 'some-id-2', expiration_date: '2022-06-02T11:11:21.725Z', last_used: '2022-06-02T11:05:21.725Z', name: 'some-name-2' }\n];\n\nexport const webhookEvents = [\n {\n id: '1',\n type: 'device-status-changed',\n data: { id: '1', status: 'accepted' },\n time: '2020-09-01T12:00:00.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n },\n {\n id: '2',\n type: 'device-status-changed',\n data: { id: '3', status: 'accepted' },\n time: '2020-09-01T12:00:05.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n }\n];\nexport const tenants = [\n {\n id: '671a0f1dd58c813118fe8622',\n parent_tenant_id: '6718de64b42e08dea2a2065d',\n name: 'child2',\n tenant_token: 'mQDYRCr-tGbDuJhPp7fArbfTA5htVTWE9G204AzhDUM',\n status: 'active',\n additional_info: {\n marketing: false,\n campaign: ''\n },\n plan: 'enterprise',\n trial: false,\n trial_expiration: null,\n service_provider: false,\n created_at: '2024-10-24T09:10:53.281Z',\n cancelled_at: null,\n children_tenants: null,\n max_child_tenants: 0,\n device_count: 0,\n device_limit: 100,\n binary_delta: true\n }\n];\n\nexport const adminUserCapabilities = {\n canAuditlog: true,\n canConfigure: true,\n canDeploy: true,\n canManageDevices: true,\n canManageReleases: true,\n canManageUsers: true,\n canReadDeployments: true,\n canReadDevices: true,\n canReadReleases: true,\n canReadUsers: true,\n canTroubleshoot: true,\n canUploadReleases: true,\n canWriteDevices: true\n};\n\nexport const userId = 'a30a780b-b843-5344-80e3-0fd95a4f6fc3';\n\nconst defaultUser = {\n created_ts: '2019-01-01T10:30:00.000Z',\n email: 'a@b.com',\n id: 'a1',\n roles: ['RBAC_ROLE_PERMIT_ALL'],\n tfa_status: 'enabled',\n verified: true\n};\n\nconst deviceTypes = { qemu: 'qemux86-64' };\n\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\n\nexport const mockApiResponses = {\n deployments: {\n byId: {\n d1: {\n id: 'd1',\n name: 'test deployment',\n created: '2019-01-01T12:30:00.000Z',\n devices: {\n a1: {\n id: 'a1',\n status: 'installing',\n attributes: {},\n image: { size: 123 }\n }\n },\n statistics: {\n status: {\n 'already-installed': 0,\n decommissioned: 0,\n downloading: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0\n },\n total_size: 1234\n }\n },\n d2: {\n id: 'd2',\n name: 'test deployment 2',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:25:00.000Z',\n device_count: 1,\n devices: {\n b1: {\n attributes: {},\n id: 'b1',\n status: 'pending'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 0,\n noartifact: 0,\n pending: 1,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n }\n }\n },\n d3: {\n id: 'd3',\n name: 'Test',\n phases: [\n { id: '0', batch_size: 2, device_count: 2 },\n { id: '1', start_ts: '2019-02-04T11:45:10.002Z', batch_size: 3, device_count: 3 },\n { id: '2', start_ts: '2019-02-05T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '3', start_ts: '2019-02-06T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '4', start_ts: '2019-02-21T11:45:10.002Z', batch_size: 5, device_count: 0 }\n ],\n max_devices: 0,\n created: '2019-01-31T12:59:30.020Z',\n devices: {},\n filter: undefined,\n group: undefined,\n stats: {\n pending: 3,\n decommissioned: 0,\n failure: 23,\n pause_before_committing: 0,\n pause_before_rebooting: 0,\n installing: 0,\n rebooting: 0,\n 'already-installed': 0,\n pause_before_installing: 0,\n downloading: 0,\n success: 6,\n aborted: 0,\n noartifact: 0\n },\n statistics: { total_size: '1234' },\n status: 'inprogress',\n active: true,\n device_count: 100,\n retries: '0',\n type: 'software'\n }\n },\n byStatus: {\n pending: { deploymentIds: ['d2'] },\n inprogress: { deploymentIds: ['d3'] }\n }\n },\n devices: {\n byId: {\n a1: {\n id: 'a1',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n status: 'accepted',\n ts: defaultCreationDate\n }\n ],\n updated_ts: '2019-01-01T09:25:00.000Z'\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n }\n },\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n }\n }\n },\n limits: { standard: 500, micro: 0, system: 0 },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], total: 2 },\n active: { deviceIds: [], total: 0 },\n inactive: { deviceIds: [], total: 0 },\n pending: { deviceIds: ['c1'], total: 1 },\n preauthorized: { deviceIds: [], total: 0 },\n rejected: { deviceIds: [], total: 0 }\n }\n },\n organization: {\n organization: {\n id: '1',\n addons: [],\n name: 'test',\n plan: 'os',\n trial: false\n },\n intentId: 'testIntent',\n auditlog: {\n events: [\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'user',\n user: {\n email: 'user@acme.com'\n }\n },\n change: 'change1'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string',\n identity_data: 'string'\n },\n time: '2019-01-01T12:16:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'deployment',\n deployment: {\n name: 'production',\n artifact_name: 'Application 0.0.1'\n }\n },\n change: 'change2'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.669Z',\n action: 'open_terminal',\n meta: {\n session_id: ['abd313a8-ee88-48ab-9c99-fbcd80048e6e']\n },\n object: {\n id: 'a1',\n type: 'device'\n },\n change: 'change3'\n }\n ]\n }\n },\n releases: {\n byId: {\n r1: {\n name: 'r1',\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: { type: 'testtype' } }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n metaData: {}\n }\n }\n },\n users: {\n byId: {\n a1: defaultUser,\n [userId]: { ...defaultUser, id: userId, email: 'a2@b.com', created_ts: '2019-01-01T12:30:00.000Z' }\n },\n rolesById: {\n admin: {\n name: 'admin',\n description: 'Administrator role',\n permissions: []\n },\n test: { name: 'test', description: 'test description', permissions: [] }\n },\n globalSettings: {\n '2fa': 'enabled',\n id_attribute: undefined,\n previousFilters: []\n },\n userSettings: {\n '2fa': 'disabled',\n columnSelection: [],\n onboarding: { something: 'here' },\n tooltips: {},\n previousFilters: []\n }\n }\n};\n\nexport const releasesList = Array.from({ length: 5000 }, (x, i) => ({\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: { type: 'testtype' } }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n metaData: {},\n name: `release-${i + 1}`,\n modified: i\n}));\n\nexport const permissionSets = [\n {\n ...defaultPermissionSets.Basic,\n object: permissionSetObjectTypes.empty,\n description: 'Set containing basic permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/settings$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/users/me$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/1.0/auth/verify$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/v1/useradm/2faverify$' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/useradm/users/me/2fa/(enable|disable)$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/roles' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/user/tenant' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageReleases,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to manage releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadUsers,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user to view other users',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ManageUsers,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user manage other user accounts',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ReadTenants,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to list other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageTenants,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to manage other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadAuditLogs,\n action: uiPermissionsById.read.title,\n object: 'System Audit Log',\n description: 'Set of permissions which allows user to view system audit log',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/auditlogs/logs' } }]\n },\n {\n ...defaultPermissionSets.DeployToDevices,\n action: 'Deploy',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to deploy to devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/(deployments|deviceconfig)/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConfigureDevices,\n action: 'Configure',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage configuration of the devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConnectToDevices,\n action: 'Connect',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to use remote terminal and file transfer',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/connect$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/download\\\\?path=[^\\u0026]+$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/upload$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.SuperUser,\n action: 'Any',\n object: permissionSetObjectTypes.any,\n description: 'Set of permissions which allows user to do anything',\n permissions: [{ action: 'any', object: { type: 'any', value: 'any' } }]\n },\n {\n ...defaultPermissionSets.UploadArtifacts,\n action: 'Upload',\n object: permissionSetObjectTypes.artifacts,\n description: 'Set of permissions which allows user to upload artifacts',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/deployments/artifacts/generate' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadDevices,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to view devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: '^/api/management/v2/inventory/filters/search' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/reporting/devices/search' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/(deployments|devauth|inventory|deviceconfig|devicemonitor)/' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ManageDevices,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.deviceManagement } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ReadReleases,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to view releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n name: 'almostAdmin',\n object: permissionSetObjectTypes.empty,\n description: 'Set containing all the permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/auditlogs/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/config/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/releases/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/devauth/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/devices' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/inventory/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/iot-manager/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/monitor/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/.*' } }\n ]\n }\n];\n\nexport const rbacRoles = [\n {\n name: 'dyn',\n description: '',\n permissions: [\n { action: 'CREATE_DEPLOYMENT', object: { type: 'DEVICE_GROUP', value: 'dyn' } },\n { action: 'VIEW_DEVICE', object: { type: 'DEVICE_GROUP', value: 'dyn' } }\n ]\n },\n { name: 'asdasd', description: '123', permissions: [{ action: 'http', object: { type: 'any', value: '/api/management/v1/useradm/.*' } }] },\n {\n name: '141sasd',\n description: '1313adg',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ManageUsers }\n ]\n },\n {\n name: 'kljlkk',\n description: 'lkl',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } }]\n },\n {\n name: 'yyyyy',\n description: 'asd',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ManageDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['dockerclient'] } },\n { ...defaultPermissionSets.ManageReleases }\n ]\n },\n {\n name: 'RBAC_ROLE_DEPLOYMENTS_MANAGER',\n description: 'Intended for users responsible for managing deployments, this role can create and abort deployments',\n permission_sets_with_scope: [{ ...defaultPermissionSets.DeployToDevices }]\n },\n {\n name: 'RBAC_ROLE_REMOTE_TERMINAL',\n description: `Intended for tech support accounts, this role can access the devices' Remote Terminal.`,\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices }]\n },\n { name: 'RBAC_ROLE_PERMIT_ALL', description: '', permission_sets_with_scope: [{ ...defaultPermissionSets.SuperUser }] },\n {\n name: 'RBAC_ROLE_OBSERVER',\n description:\n 'Intended for team leaders or limited tech support accounts, this role can see all Devices, Artifacts and Deployment reports but not make any changes.',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ReadReleases }, { ...defaultPermissionSets.ReadDevices }]\n },\n {\n name: 'RBAC_ROLE_CI',\n description:\n 'Intended for automation accounts building software (e.g. CI/CD systems), this role can only manage Artifacts, including upload new Artifacts and delete Artifacts. It does not have access to Devices or Deployments.',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadReleases },\n { ...defaultPermissionSets.ManageReleases },\n { ...defaultPermissionSets.UploadArtifacts }\n ]\n },\n {\n name: 'almostAdmin',\n description: 'almost admin rights',\n permissions: permissionSets.find(item => item.name === 'almostAdmin')?.permissions\n },\n {\n name: 'almostAdminNew',\n description: 'almost admin rights',\n permission_sets_with_scope: Object.values(defaultPermissionSets)\n }\n];\n\nconst expectedParsedRoles = {\n '141sasd': {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] },\n userManagement: [uiPermissionsById.manage.value]\n }\n },\n asdasd: {\n editable: false,\n isCustom: true,\n uiPermissions: { ...emptyUiPermissions, userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value] }\n },\n dyn: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n deployments: [uiPermissionsById.deploy.value],\n groups: { dyn: [uiPermissionsById.read.value, uiPermissionsById.deploy.value] }\n }\n },\n kljlkk: {\n editable: true,\n isCustom: false,\n uiPermissions: { ...emptyUiPermissions, groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] } }\n },\n yyyyy: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { dockerclient: [uiPermissionsById.read.value, uiPermissionsById.manage.value] },\n releases: { [ALL_RELEASES]: [uiPermissionsById.manage.value] }\n }\n },\n almostAdmin: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.manage.value, uiPermissionsById.deploy.value, uiPermissionsById.read.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n // we can't assign deployment permissions to devices here, since the old path based rbac controls don't allow the scoped permissions\n // uiPermissionsById.deploy.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.read.value, uiPermissionsById.upload.value, uiPermissionsById.manage.value]\n },\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n },\n almostAdminNew: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.read.value, uiPermissionsById.deploy.value, uiPermissionsById.manage.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.deploy.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.manage.value, uiPermissionsById.upload.value, uiPermissionsById.read.value]\n },\n tenantManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value],\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n }\n};\n\nconst defaultRolesById = {\n ...rolesById,\n test: {\n ...emptyRole,\n name: 'test',\n description: 'test description',\n editable: true,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { testGroup: [uiPermissionsById.read.value] },\n releases: { bar: [uiPermissionsById.read.value] }\n }\n }\n};\n\nexport const receivedRoles = rbacRoles.reduce(\n (accu, role) => {\n const { name, description, ...roleRemainder } = role;\n if (name.startsWith('RBAC')) {\n accu[name] = {\n ...defaultRolesById[name],\n ...roleRemainder,\n editable: false,\n isCustom: false,\n description: defaultRolesById[name].description ? defaultRolesById[name].description : description\n };\n } else {\n const result = expectedParsedRoles[name] ?? {};\n accu[name] = {\n ...emptyRole,\n ...role,\n ...result,\n name\n };\n }\n return accu;\n },\n { ...defaultRolesById }\n);\n\nexport const receivedPermissionSets = permissionSets.reduce((accu, set) => {\n const result = defaultPermissionSets[set.name]?.result ?? {};\n accu[set.name] = {\n ...set,\n result: {\n ...emptyUiPermissions,\n ...result\n }\n };\n return accu;\n}, {});\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport {\n DEVICE_FILTERING_OPTIONS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n reportingApiUrl\n} from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { defaultCreationDate, defaultMacAddress, mockApiResponses } from '../mockData';\n\nexport const defaultDeviceId = 'a1';\n\nconst deviceAuthDevice = {\n id: defaultDeviceId,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n};\n\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst updatedTime = '2019-01-01T09:25:00.000Z';\n\nexport const inventoryDevice = {\n id: defaultDeviceId,\n attributes: [\n { name: 'network_interfaces', value: ['eth0', 'wlan0'], scope: 'inventory' },\n { name: 'kernel', value: 'Linux version 4.19.75-v7l+', scope: 'inventory' },\n { name: 'artifact_name', value: 'raspotifyInstaller', scope: 'inventory' },\n { name: 'ipv6_wlan0', value: 'fe80::68d9:8453:3e9c:7c80/64', scope: 'inventory' },\n { name: 'mac_eth0', value: defaultMacAddress, scope: 'inventory' },\n { name: 'rootfs_type', value: 'ext4', scope: 'inventory' },\n { name: 'mender_bootloader_integration', value: 'unknown', scope: 'inventory' },\n { name: 'cpu_model', value: 'ARMv7 Processor rev 3 (v7l)', scope: 'inventory' },\n { name: 'hostname', value: 'raspberrypi', scope: 'inventory' },\n { name: 'mender_client_version', value: '2.1.0', scope: 'inventory' },\n { name: 'ipv4_wlan0', value: '192.168.10.141/24', scope: 'inventory' },\n { name: 'device_type', value: 'raspberrypi4', scope: 'inventory' },\n { name: 'mem_total_kB', value: '1986024', scope: 'inventory' },\n { name: 'mac_wlan0', value: 'dc:a6:32:12:ad:c0', scope: 'inventory' },\n { name: 'os', value: 'Raspbian GNU/Linux 10 (buster)', scope: 'inventory' },\n { name: 'created_ts', value: defaultCreationDate, scope: 'system' },\n { name: 'updated_ts', value: updatedTime, scope: 'system' },\n { name: 'status', value: 'accepted', scope: 'identity' },\n { name: 'mac', value: defaultMacAddress, scope: 'identity' },\n { name: 'group', value: 'test', scope: 'system' }\n ],\n check_in_time: checkInTimeExact,\n updated_ts: updatedTime\n};\n\nconst deviceAttributes = [\n { name: 'status', scope: 'identity', count: 5 },\n { name: 'created_ts', scope: 'system', count: 5 },\n { name: 'updated_ts', scope: 'system', count: 5 },\n { name: 'mac', scope: 'identity', count: 1 },\n { name: 'artifact_name', scope: 'inventory', count: 1 },\n { name: 'cpu_model', scope: 'inventory', count: 1 },\n { name: 'device_type', scope: 'inventory', count: 1 },\n { name: 'hostname', scope: 'inventory', count: 1 },\n { name: 'ipv4_wlan0', scope: 'inventory', count: 1 },\n { name: 'ipv6_wlan0', scope: 'inventory', count: 1 },\n { name: 'kernel', scope: 'inventory', count: 1 },\n { name: 'mac_eth0', scope: 'inventory', count: 1 },\n { name: 'mac_wlan0', scope: 'inventory', count: 1 },\n { name: 'mem_total_kB', scope: 'inventory', count: 1 },\n { name: 'mender_bootloader_integration', scope: 'inventory', count: 1 },\n { name: 'mender_client_version', scope: 'inventory', count: 1 },\n { name: 'network_interfaces', scope: 'inventory', count: 1 },\n { name: 'os', scope: 'inventory', count: 1 },\n { name: 'rootfs_type', scope: 'inventory', count: 1 },\n { name: 'group', scope: 'system', count: 1 }\n];\n\nconst searchHandler = async ({ request }) => {\n const { page, per_page, filters } = await request.json();\n if ([page, per_page, filters].some(item => !item)) {\n return new HttpResponse(null, { status: 509 });\n }\n const filter = filters.find(filter => filter.scope === 'identity' && filter.attribute === 'status' && Object.values(DEVICE_STATES).includes(filter.value));\n const status = filter?.value || '';\n if (!status || filters.length > 1) {\n if (filters.find(filter => filter.attribute === 'group' && filter.value.includes(Object.keys(mockApiResponses.devices.groups.byId)[0]))) {\n return new HttpResponse(JSON.stringify([inventoryDevice, { ...inventoryDevice, id: 'b1' }]), {\n headers: { [headerNames.total]: 2 }\n });\n }\n if (filters.find(filter => filter.scope === 'monitor' && ['failed_last_update', 'alerts', 'auth_request'].includes(filter.attribute))) {\n return new HttpResponse(JSON.stringify([inventoryDevice]), { headers: { [headerNames.total]: 4 } });\n }\n return new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 0 } });\n }\n let deviceList = Array.from({ length: mockApiResponses.devices.byStatus[status].total }, (_, index) => ({\n ...inventoryDevice,\n attributes: [...inventoryDevice.attributes, { name: 'test-count', value: index, scope: 'system' }],\n id: `${String.fromCharCode('a'.charCodeAt(0) + index)}1`\n }));\n deviceList = deviceList.slice((page - 1) * per_page, page * per_page);\n return new HttpResponse(JSON.stringify(deviceList), { headers: { [headerNames.total]: mockApiResponses.devices.byStatus[status].total } });\n};\n\nexport const deviceHandlers = [\n http.delete(`${deviceAuthV2}/devices/:deviceId/auth/:authId`, ({ params: { authId, deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 501 });\n }),\n http.delete(`${deviceAuthV2}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 502 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group`, ({ params: { group } }) => {\n if (mockApiResponses.devices.groups.byId[group]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (mockApiResponses.devices.groups.byId[group] && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 503 });\n }),\n http.delete(`${inventoryApiUrlV2}/filters/:filterId`, ({ params: { filterId } }) => {\n if (Object.values(mockApiResponses.devices.groups.byId).find(group => group.id === filterId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 504 });\n }),\n http.get(`${deviceAuthV2}/devices`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const deviceIds = searchParams.getAll('id');\n if (deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return HttpResponse.json(deviceIds.map(id => ({ ...deviceAuthDevice, id })));\n }\n return new HttpResponse(null, { status: 505 });\n }),\n http.get(`${deviceAuthV2}/limits/devices`, () => HttpResponse.json(mockApiResponses.devices.limits)),\n http.get(`${inventoryApiUrl}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json(inventoryDevice);\n }\n return new HttpResponse(null, { status: 506 });\n }),\n http.put(`${inventoryApiUrl}/devices/:deviceId/tags`, async ({ params: { deviceId }, request }) => {\n const tags = await request.json();\n if (!mockApiResponses.devices.byId[deviceId] && !Array.isArray(tags) && !tags.every(item => item.name && item.value)) {\n return new HttpResponse(null, { status: 506 });\n }\n return HttpResponse.json(tags);\n }),\n http.get(`${inventoryApiUrl}/groups`, () => {\n const groups = Object.entries(mockApiResponses.devices.groups.byId).reduce((accu, [groupName, group]) => {\n if (!group.id) {\n accu.push(groupName);\n }\n return accu;\n }, []);\n return HttpResponse.json(groups);\n }),\n http.get(`${inventoryApiUrlV2}/filters/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.get(`${reportingApiUrl}/devices/attributes`, () => HttpResponse.json({ attributes: deviceAttributes, count: deviceAttributes.length, limit: 100 })),\n http.get(`${reportingApiUrl}/devices/search/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.post(`${reportingApiUrl}/devices/aggregate`, () =>\n HttpResponse.json([\n {\n name: '*',\n items: [\n { key: 'test', count: 6 },\n { key: 'original', count: 1 }\n ],\n other_count: 42\n }\n ])\n ),\n http.get(`${inventoryApiUrlV2}/filters`, () =>\n HttpResponse.json([\n {\n id: 'filter1',\n name: 'testGroupDynamic',\n terms: [\n { scope: 'identity', attribute: 'id', type: '$in', value: [defaultDeviceId] },\n { scope: 'identity', attribute: 'mac', type: '$exists', value: false },\n { scope: 'identity', attribute: 'kernel', type: '$exists', value: true }\n ]\n }\n ])\n ),\n http.patch(`${inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (!!group && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 508 });\n }),\n http.post(`${deviceAuthV2}/devices`, async ({ request }) => {\n const authset = await request.json();\n if (\n Object.values(mockApiResponses.devices.byId).some(device =>\n device.auth_sets.some(deviceAuthSet => deviceAuthSet.pubkey == authset.pubkey || deviceAuthSet.identity_data == authset.identity_data)\n )\n ) {\n return new HttpResponse(null, { status: 409 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${inventoryApiUrlV2}/filters/search`, searchHandler),\n http.post(`${reportingApiUrl}/filters/search`, searchHandler),\n http.post(`${inventoryApiUrlV2}/filters`, async ({ request }) => {\n const { name, terms } = await request.json();\n if (\n [name, terms].some(item => !item) ||\n mockApiResponses.devices.groups[name] ||\n !terms.every(term => DEVICE_FILTERING_OPTIONS[term.type] && ['identity', 'inventory', 'system'].includes(term.scope) && !!term.value && !!term.attribute)\n ) {\n return new HttpResponse(null, { status: 510 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: 'find/me/here/createdFilterId' } });\n }),\n http.get(`${inventoryApiUrlV2}/statistics`, async () =>\n HttpResponse.json({\n devices_by_status: {\n accepted: { standard: mockApiResponses.devices.byStatus.accepted.total, micro: 0, system: 0 },\n pending: { standard: mockApiResponses.devices.byStatus.pending.total, micro: 0, system: 0 }\n }\n })\n ),\n http.put(`${deviceAuthV2}/devices/:deviceId/auth/:authId/status`, async ({ params: { authId, deviceId }, request }) => {\n const { status } = await request.json();\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId) && DEVICE_STATES[status]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 511 });\n }),\n http.get(`${deviceConfig}/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({\n configured: { test: true, something: 'else', aNumber: 42 },\n deployment_id: 'config1',\n reported: { test: true, something: 'else', aNumber: 42 },\n updated_ts: updatedTime,\n reported_ts: '2019-01-01T09:25:01.000Z'\n });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.put(`${deviceConfig}/:deviceId`, async ({ params: { deviceId }, request }) => {\n const body = await request.text();\n if (body.includes('evilValue')) {\n return new HttpResponse(null, { status: 418 });\n }\n return new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 201 : 513 });\n }),\n http.post(`${deviceConfig}/:deviceId/deploy`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: 'config1' });\n }\n return new HttpResponse(null, { status: 514 });\n }),\n http.get(`${deviceConnect}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ status: 'connected', updated_ts: mockApiResponses.devices.byId[deviceId].updated_ts });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.post(`${deviceConnect}/devices/:deviceId/:action`, ({ params: { deviceId, action } }) => {\n if (['check-update', 'send-inventory'].includes(action) && mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 202 });\n }\n return new HttpResponse(null, { status: 518 });\n }),\n http.get(`${iotManagerBaseURL}/devices/:deviceId/state`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.put(`${iotManagerBaseURL}/devices/:deviceId/state/:integrationId`, async ({ params: { deviceId }, request }) => {\n const body = await request.json();\n if (mockApiResponses.devices.byId[deviceId] && body) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 516 });\n }),\n http.put(\n `${deviceConnect}/devices/:deviceId/upload`,\n ({ params: { deviceId } }) => new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 200 : 517 })\n ),\n http.get(`${deviceAuthV2}/license`, () => HttpResponse.text('test,report'))\n];\n","// Copyright 2021 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { alertChannels, headerNames, monitorApiUrlv1 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\n\nexport const monitorHandlers = [\n http.get(`${monitorApiUrlv1}/devices/:id/alerts`, () => new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 1 } })),\n http.get(`${monitorApiUrlv1}/devices/:id/alerts/latest`, () => HttpResponse.json([])),\n http.get(`${monitorApiUrlv1}/devices/:id/config`, ({ params: { id } }) => {\n if (id === mockApiResponses.devices.byId.a1.id) {\n return HttpResponse.json([{ something: 'here' }]);\n }\n return HttpResponse.json([]);\n }),\n http.put(`${monitorApiUrlv1}/settings/global/channel/alerts/:channel/status`, async ({ params: { channel }, request }) => {\n const { enabled } = await request.json();\n if (Object.keys(alertChannels).includes(channel) && enabled !== undefined) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 590 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, webhookEvents } from '../mockData';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan', 'tos'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n};\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => new HttpResponse([])),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(`${tenantadmApiUrlv2}/billing/card`, () => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' })),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n ({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 })\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/contact/support`, async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.patch(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription`, () => new HttpResponse(null, { status: 202 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(`${iotManagerBaseURL}/integrations`, () => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }])),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(ssoIdpApiUrlv1, () => new HttpResponse(null, { status: 200 })),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 })),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(`${deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n }),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n }),\n http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { accessTokens, defaultPassword, userId as defaultUserId, mockApiResponses, permissionSets, rbacRoles, testSsoId, token } from '../mockData';\n\nexport const userHandlers = [\n http.post(`${useradmApiUrl}/auth/login`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n const authInfo = atob(authHeader?.split(' ')[1]);\n const [user, password] = authInfo.split(':');\n\n if (!password) {\n return HttpResponse.json({ id: testSsoId, kind: 'sso/saml' });\n } else if (password !== defaultPassword) {\n return new HttpResponse(null, { status: 401 });\n } else if (user.includes('limited')) {\n return new HttpResponse('limitedToken', { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n } else if (user.includes('2fa')) {\n return new HttpResponse(JSON.stringify({ error: '2fa needed' }), { status: 401 });\n }\n\n return new HttpResponse(token, { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n }),\n http.get(`https://hosted.mender.io${useradmApiUrl}/auth/magic/:id`, ({ params: { id } }) => {\n if (id) {\n return new HttpResponse('test', { headers: { 'Set-Cookie': 'JWT=test' } });\n }\n return new HttpResponse(null, { status: 400 });\n }),\n http.post(`${useradmApiUrl}/auth/logout`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/password-reset/:status`, async ({ params: { status }, request }) => {\n const { email, secret_hash, password } = await request.json();\n if (!['start', 'complete'].includes(status) && ![email, secret_hash, password].some(item => item)) {\n return new HttpResponse(null, { status: 560 });\n }\n if (status === 'start' && email) {\n return new HttpResponse(null, { status: 200 });\n }\n if (status === 'complete' && secret_hash && password) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 561 });\n }),\n http.put(`${useradmApiUrl}/2faverify`, async ({ request }) => {\n const { token2fa } = await request.json();\n if (!token2fa) {\n return new HttpResponse(null, { status: 562 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${useradmApiUrl}/users`, () => HttpResponse.json(Object.values(mockApiResponses.users.byId))),\n http.get(`${useradmApiUrl}/users/me`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n if (authHeader?.includes('limited')) {\n return new HttpResponse(JSON.stringify({ error: 'forbidden by role-based access control' }), { status: 403 });\n }\n return HttpResponse.json(mockApiResponses.users.byId[defaultUserId]);\n }),\n http.get(`${useradmApiUrl}/users/exists`, ({ request }) => {\n const url = new URL(request.url);\n const email = url.searchParams.get('email');\n if (!decodeURIComponent(email).includes('child+123')) {\n return new HttpResponse(null, { status: 578 });\n }\n return HttpResponse.json({ exists: true });\n }),\n http.get(`${useradmApiUrl}/users/:userId`, ({ params: { userId } }) => {\n if (userId === 'me' || mockApiResponses.users.byId[userId]) {\n const user = userId === 'me' ? defaultUserId : userId;\n return HttpResponse.json(mockApiResponses.users.byId[user]);\n }\n return new HttpResponse(null, { status: 563 });\n }),\n http.post(`${useradmApiUrl}/users`, async ({ request }) => {\n const { email, password } = await request.json();\n if (email === 'test@test.com' || [email, password].every(value => value)) {\n return HttpResponse.json(mockApiResponses.users.byId.a1);\n }\n return new HttpResponse(null, { status: 564 });\n }),\n http.put(`${useradmApiUrl}/users/:userId`, async ({ params: { userId }, request }) => {\n const { email, password, current_password } = await request.json();\n if (current_password === 'bad_password') {\n return new HttpResponse(null, { status: 401 });\n }\n if (\n (mockApiResponses.users.byId[userId] && [email, password].some(value => Object.values(mockApiResponses.users.byId[userId]).includes(value))) ||\n email === 'test@test.com'\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 565 });\n }),\n http.delete(\n `${useradmApiUrl}/users/:userId`,\n ({ params: { userId } }) => new HttpResponse(null, { status: mockApiResponses.users.byId[userId] ? 200 : 566 })\n ),\n http.get(`${useradmApiUrl}/roles`, () => HttpResponse.json(rbacRoles)),\n http.post(`${useradmApiUrl}/roles`, async ({ request }) => {\n const { name, permissions } = await request.json();\n if (\n [name, permissions].every(value => value) &&\n permissions.every(permission => permission.action && permission.object && permission.object.type && permission.object.value)\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 567 });\n }),\n http.put(`${useradmApiUrl}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permissions } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permissions].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 568 });\n }),\n http.post(`${useradmApiUrlv2}/support/feedback/product`, async () => new HttpResponse(null, { status: 200 })),\n http.delete(\n `${useradmApiUrl}/roles/:roleId`,\n ({ params: { roleId } }) => new HttpResponse(null, { status: mockApiResponses.users.rolesById[roleId] ? 200 : 569 })\n ),\n http.get(`${useradmApiUrlv2}/roles`, () => HttpResponse.json(rbacRoles)),\n http.get(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return HttpResponse.json(mockApiResponses.users.rolesById[roleId]);\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrlv2}/roles`, async ({ request }) => {\n const { name, permission_sets_with_scope } = await request.json();\n if (\n !!name &&\n permission_sets_with_scope.every(permission => permission.name && permissionSets.find(permissionSet => permissionSet.name === permission.name))\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 572 });\n }),\n http.put(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permission_sets_with_scope } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permission_sets_with_scope].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 573 });\n }),\n http.delete(`${useradmApiUrlv2}/roles/:roleId`, ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 574 });\n }),\n http.get(`${useradmApiUrl}/settings`, () => HttpResponse.json(mockApiResponses.users.globalSettings)),\n http.post(`${useradmApiUrl}/settings`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/me`, () => HttpResponse.json(mockApiResponses.users.userSettings)),\n http.post(`${useradmApiUrl}/settings/me`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json(accessTokens)),\n http.post(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json('aNewToken')),\n http.delete(\n `${useradmApiUrl}/settings/tokens/:tokenId`,\n ({ params: { tokenId } }) => new HttpResponse(null, { status: tokenId === 'some-id-1' ? 200 : 577 })\n ),\n http.get(`${useradmApiUrl}/2faqr`, () => HttpResponse.json({ qr: btoa('test') })),\n http.post(`${useradmApiUrl}/users/:userId/2fa/enable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 570 });\n }),\n http.post(`${useradmApiUrl}/users/:userId/2fa/disable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrl}/auth/verify-email/start`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/verify-email/complete`, async ({ request }) => {\n const { secret_hash } = await request.json();\n return new HttpResponse(null, { status: secret_hash === 'superSecret' ? 200 : 576 });\n }),\n http.get(`${useradmApiUrlv2}/permission_sets`, () => HttpResponse.json(permissionSets)),\n http.post(`${useradmApiUrl}/users/:userId/assign`, async ({ request }) => {\n const { tenant_ids } = await request.json();\n return new HttpResponse(null, { status: tenant_ids.length ? 200 : 577 });\n }),\n http.get(`${useradmApiUrl}/users/tenants/:tenantId/token`, () => HttpResponse.text('differentToken'))\n];\n"],"mappings":"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","names":["import_msw","import_constants","import_constants","import_msw","checkInTimeExact","filter","import_constants","import_msw","import_constants","import_msw","import_constants","import_msw","import_constants","import_msw","userId"]}
1
+ {"version":3,"sources":["../../src/requestHandlers/requestHandlers.ts","../../src/requestHandlers/deploymentHandlers.ts","../../src/mockData.ts","../../src/requestHandlers/deviceHandlers.ts","../../src/requestHandlers/monitorHandlers.ts","../../src/requestHandlers/organizationHandlers.ts","../../src/requestHandlers/releaseHandlers.ts","../../src/requestHandlers/userHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { HttpResponse, http } from 'msw';\n\nimport { deploymentHandlers } from './deploymentHandlers';\nimport { deviceHandlers } from './deviceHandlers';\nimport { monitorHandlers } from './monitorHandlers';\nimport { organizationHandlers } from './organizationHandlers';\nimport { releaseHandlers } from './releaseHandlers';\nimport { userHandlers } from './userHandlers';\n\nconst testLocation = '/test';\n\nconst baseHandlers = [\n http.get(testLocation, () => new HttpResponse(null, { status: 200 })),\n http.post(testLocation, () => HttpResponse.json({})),\n http.put(testLocation, () => HttpResponse.json({})),\n http.delete(testLocation, () => HttpResponse.json({}))\n];\n\nconst handlers = [...baseHandlers, ...deploymentHandlers, ...deviceHandlers, ...monitorHandlers, ...organizationHandlers, ...releaseHandlers, ...userHandlers];\n\nexport default handlers;\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrlV2}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {\n const body = await request.json();\n if (!Object.keys(body).length) {\n return new HttpResponse(JSON.stringify({}), { status: 524 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (!filter_id || !!devices.length) {\n return new HttpResponse(JSON.stringify({}), { status: 525 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(`${deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport {\n ALL_DEVICES,\n ALL_RELEASES,\n defaultPermissionSets,\n emptyRole,\n emptyUiPermissions,\n maxSessionAge,\n rolesById,\n scopedPermissionAreas,\n uiPermissionsById\n} from '@northern.tech/utils/constants';\n\nexport const undefineds = /undefined|\\[object Object\\]/;\nexport const menderEnvironment = {\n features: {\n hasMultitenancy: true\n },\n integrationVersion: 'saas-123.34',\n menderVersion: 'next',\n metaMenderVersion: 'saas-123.34',\n services: {\n deploymentsVersion: '1.2.3',\n deviceauthVersion: null,\n inventoryVersion: null\n }\n};\nexport const TEST_SESSION_DATETIME = '2019-01-13T13:00:00.000Z';\nconst testDate = new Date(TEST_SESSION_DATETIME);\nexport const mockDate = new Date(testDate.setMilliseconds(testDate.getMilliseconds() + maxSessionAge));\n\nexport const defaultPassword = 'mysecretpassword!123';\nexport const defaultCreationDate = '2019-01-13T06:25:00.000Z';\nexport const defaultMacAddress = 'dc:a6:32:12:ad:bf';\n\nexport const testSsoId = 'sso_id';\n\nconst permissionSetObjectTypes = {\n any: 'Any',\n artifacts: 'Artifacts',\n empty: '',\n groups: 'Device groups',\n releases: 'Releases',\n tenantManagement: 'Tenant management',\n userManagement: 'User management'\n};\n\nconst commonEndpoints = {\n artifacts: '^/api/management/v1/deployments/artifacts',\n artifactDetails: '^/api/management/v1/deployments/artifacts/[^/]+',\n deviceManagement: '^/api/management/(v[1-9])/(devauth|inventory)/'\n};\n\nexport const token =\n 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjZTNkMGY4Yy1hZWRlLTQwMzAtYjM5MS03ZDUwMjBlYjg3M2UiLCJzdWIiOiJhMzBhNzgwYi1iODQzLTUzNDQtODBlMy0wZmQ5NWE0ZjZmYzMiLCJleHAiOjE2MDY4MTUzNjksImlhdCI6MTYwNjIxMDU2OSwibWVuZGVyLnRlbmFudCI6IjVmODVjMTdiY2U2MmI3ZmE3ZjVmNzA0MCIsIm1lbmRlci51c2VyIjp0cnVlLCJpc3MiOiJNZW5kZXIgVXNlcnMiLCJzY3AiOiJtZW5kZXIuKiIsIm1lbmRlci5wbGFuIjoicHJvZmVzc2lvbmFsIiwibmJmIjoxNjA2MjEwNTY5fQ.qVgYdCzLTf8OdK9uUctqqaY_HWkIiwpekuGvuGQAXCEgOv4bRNDlZRN_ZRSbxQoARG3pquhScbQrjBV9tcF4irTUPlTn3yrsXNO17DpcbTVeKRkb88RDtIKiRw3orVZ_GlIb-ckTQ5dS-Nqlyyf3Fmrhca-gwt6m_xv2UrmJK6eYYTMfggdRRWb-4u7mEkBI_pHPMTQrT8kJ2BeX-vHgazH9AoH0k85LHtFZQXD7pXHlDZRnLxJXukncwMGDmF17374gavYAIyDIzcC8sEBMDnVXgpikeA1sauzirqix6mAVs6XmxdQO7aF0wfXO1_PTYUA3Nk1oQfMYNlEI3U9uLRJRZIq2L8fmrrBryhstKd4y0KlBbGAQrx8NtRkgajjd1ljMfPBUEZrb7uSerVjneiO-aIBO76CuH0zdklphIjpGJeogkBhe8pAYNggp1XsZHgpZfl7IE5faKaDkMGnutaea--Czor6bhqUNCuY4tR0cpQJbNwy6LS9o1CFy4Log';\n\nexport const accessTokens = [\n { id: 'some-id-1', expiration_date: '2022-06-02T11:11:21.725Z', name: 'some-name-1' },\n { id: 'some-id-2', expiration_date: '2022-06-02T11:11:21.725Z', last_used: '2022-06-02T11:05:21.725Z', name: 'some-name-2' }\n];\n\nexport const webhookEvents = [\n {\n id: '1',\n type: 'device-status-changed',\n data: { id: '1', status: 'accepted' },\n time: '2020-09-01T12:00:00.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n },\n {\n id: '2',\n type: 'device-status-changed',\n data: { id: '3', status: 'accepted' },\n time: '2020-09-01T12:00:05.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n }\n];\nexport const tenants = [\n {\n id: '671a0f1dd58c813118fe8622',\n parent_tenant_id: '6718de64b42e08dea2a2065d',\n name: 'child2',\n tenant_token: 'mQDYRCr-tGbDuJhPp7fArbfTA5htVTWE9G204AzhDUM',\n status: 'active',\n additional_info: {\n marketing: false,\n campaign: ''\n },\n plan: 'enterprise',\n trial: false,\n trial_expiration: null,\n service_provider: false,\n created_at: '2024-10-24T09:10:53.281Z',\n cancelled_at: null,\n children_tenants: null,\n max_child_tenants: 0,\n device_count: 0,\n device_limit: 100,\n binary_delta: true\n }\n];\n\nexport const adminUserCapabilities = {\n canAuditlog: true,\n canConfigure: true,\n canDeploy: true,\n canManageDevices: true,\n canManageReleases: true,\n canManageUsers: true,\n canReadDeployments: true,\n canReadDevices: true,\n canReadReleases: true,\n canReadUsers: true,\n canTroubleshoot: true,\n canUploadReleases: true,\n canWriteDevices: true\n};\n\nexport const userId = 'a30a780b-b843-5344-80e3-0fd95a4f6fc3';\n\nconst defaultUser = {\n created_ts: '2019-01-01T10:30:00.000Z',\n email: 'a@b.com',\n id: 'a1',\n roles: ['RBAC_ROLE_PERMIT_ALL'],\n tfa_status: 'enabled',\n verified: true\n};\n\nconst deviceTypes = { qemu: 'qemux86-64' };\n\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\n\nexport const mockApiResponses = {\n deployments: {\n byId: {\n d1: {\n id: 'd1',\n name: 'test deployment',\n created: '2019-01-01T12:30:00.000Z',\n devices: {\n a1: {\n id: 'a1',\n status: 'installing',\n attributes: {},\n image: { size: 123 }\n }\n },\n statistics: {\n status: {\n 'already-installed': 0,\n decommissioned: 0,\n downloading: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0\n },\n total_size: 1234\n }\n },\n d2: {\n id: 'd2',\n name: 'test deployment 2',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:25:00.000Z',\n device_count: 1,\n devices: {\n b1: {\n attributes: {},\n id: 'b1',\n status: 'pending'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 0,\n noartifact: 0,\n pending: 1,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n }\n }\n },\n d3: {\n id: 'd3',\n name: 'Test',\n phases: [\n { id: '0', batch_size: 2, device_count: 2 },\n { id: '1', start_ts: '2019-02-04T11:45:10.002Z', batch_size: 3, device_count: 3 },\n { id: '2', start_ts: '2019-02-05T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '3', start_ts: '2019-02-06T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '4', start_ts: '2019-02-21T11:45:10.002Z', batch_size: 5, device_count: 0 }\n ],\n max_devices: 0,\n created: '2019-01-31T12:59:30.020Z',\n devices: {},\n filter: undefined,\n group: undefined,\n stats: {\n pending: 3,\n decommissioned: 0,\n failure: 23,\n pause_before_committing: 0,\n pause_before_rebooting: 0,\n installing: 0,\n rebooting: 0,\n 'already-installed': 0,\n pause_before_installing: 0,\n downloading: 0,\n success: 6,\n aborted: 0,\n noartifact: 0\n },\n statistics: { total_size: '1234' },\n status: 'inprogress',\n active: true,\n device_count: 100,\n retries: '0',\n type: 'software'\n }\n },\n byStatus: {\n pending: { deploymentIds: ['d2'] },\n inprogress: { deploymentIds: ['d3'] }\n }\n },\n devices: {\n byId: {\n a1: {\n id: 'a1',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n status: 'accepted',\n ts: defaultCreationDate\n }\n ],\n updated_ts: '2019-01-01T09:25:00.000Z'\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n }\n },\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n }\n }\n },\n limits: { standard: 500, micro: 0, system: 0 },\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], total: 2 },\n active: { deviceIds: [], total: 0 },\n inactive: { deviceIds: [], total: 0 },\n pending: { deviceIds: ['c1'], total: 1 },\n preauthorized: { deviceIds: [], total: 0 },\n rejected: { deviceIds: [], total: 0 }\n }\n },\n organization: {\n organization: {\n id: '1',\n addons: [],\n name: 'test',\n plan: 'os',\n trial: false\n },\n products: [\n {\n name: 'mender_standard',\n billing_unit: 'devices',\n prices: [\n {\n plan: 'os',\n constraints: {\n min: 50,\n max: 1000,\n div: 50\n }\n },\n {\n plan: 'professional',\n constraints: {\n min: 250,\n max: 10000,\n div: 50\n }\n }\n ],\n addons: [\n {\n name: 'troubleshoot',\n prices: [{ plan: 'os' }, { plan: 'professional' }]\n },\n {\n name: 'configure',\n prices: [{ plan: 'os' }, { plan: 'professional' }]\n },\n {\n name: 'monitor',\n prices: [{ plan: 'professional' }]\n }\n ]\n },\n {\n name: 'mender_micro',\n billing_unit: 'devices',\n prices: [\n {\n plan: 'os',\n constraints: {\n min: 50,\n max: 5000,\n div: 50\n }\n },\n {\n plan: 'professional',\n constraints: {\n min: 500,\n max: 100000,\n div: 50\n }\n }\n ]\n }\n ],\n intentId: 'testIntent',\n auditlog: {\n events: [\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'user',\n user: {\n email: 'user@acme.com'\n }\n },\n change: 'change1'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string',\n identity_data: 'string'\n },\n time: '2019-01-01T12:16:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'deployment',\n deployment: {\n name: 'production',\n artifact_name: 'Application 0.0.1'\n }\n },\n change: 'change2'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.669Z',\n action: 'open_terminal',\n meta: {\n session_id: ['abd313a8-ee88-48ab-9c99-fbcd80048e6e']\n },\n object: {\n id: 'a1',\n type: 'device'\n },\n change: 'change3'\n }\n ]\n }\n },\n releases: {\n byId: {\n r1: {\n name: 'r1',\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: { type: 'testtype' } }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n metaData: {}\n }\n }\n },\n users: {\n byId: {\n a1: defaultUser,\n [userId]: { ...defaultUser, id: userId, email: 'a2@b.com', created_ts: '2019-01-01T12:30:00.000Z' }\n },\n rolesById: {\n admin: {\n name: 'admin',\n description: 'Administrator role',\n permissions: []\n },\n test: { name: 'test', description: 'test description', permissions: [] }\n },\n globalSettings: {\n '2fa': 'enabled',\n id_attribute: undefined,\n previousFilters: []\n },\n userSettings: {\n '2fa': 'disabled',\n columnSelection: [],\n onboarding: { something: 'here' },\n tooltips: {},\n previousFilters: []\n }\n }\n};\n\nexport const releasesList = Array.from({ length: 5000 }, (x, i) => ({\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: { type: 'testtype' } }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n metaData: {},\n name: `release-${i + 1}`,\n modified: i\n}));\n\nexport const permissionSets = [\n {\n ...defaultPermissionSets.Basic,\n object: permissionSetObjectTypes.empty,\n description: 'Set containing basic permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/settings$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/users/me$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/1.0/auth/verify$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/v1/useradm/2faverify$' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/useradm/users/me/2fa/(enable|disable)$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/roles' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/user/tenant' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageReleases,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to manage releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadUsers,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user to view other users',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ManageUsers,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user manage other user accounts',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ReadTenants,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to list other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageTenants,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to manage other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadAuditLogs,\n action: uiPermissionsById.read.title,\n object: 'System Audit Log',\n description: 'Set of permissions which allows user to view system audit log',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/auditlogs/logs' } }]\n },\n {\n ...defaultPermissionSets.DeployToDevices,\n action: 'Deploy',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to deploy to devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/(deployments|deviceconfig)/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConfigureDevices,\n action: 'Configure',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage configuration of the devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConnectToDevices,\n action: 'Connect',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to use remote terminal and file transfer',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/connect$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/download\\\\?path=[^\\u0026]+$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/upload$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.SuperUser,\n action: 'Any',\n object: permissionSetObjectTypes.any,\n description: 'Set of permissions which allows user to do anything',\n permissions: [{ action: 'any', object: { type: 'any', value: 'any' } }]\n },\n {\n ...defaultPermissionSets.UploadArtifacts,\n action: 'Upload',\n object: permissionSetObjectTypes.artifacts,\n description: 'Set of permissions which allows user to upload artifacts',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/deployments/artifacts/generate' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadDevices,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to view devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: '^/api/management/v2/inventory/filters/search' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/reporting/devices/search' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/(deployments|devauth|inventory|deviceconfig|devicemonitor)/' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ManageDevices,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.deviceManagement } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ReadReleases,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to view releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n name: 'almostAdmin',\n object: permissionSetObjectTypes.empty,\n description: 'Set containing all the permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/auditlogs/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/config/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/releases/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/devauth/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/devices' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/inventory/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/iot-manager/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/monitor/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/.*' } }\n ]\n }\n];\n\nexport const rbacRoles = [\n {\n name: 'dyn',\n description: '',\n permissions: [\n { action: 'CREATE_DEPLOYMENT', object: { type: 'DEVICE_GROUP', value: 'dyn' } },\n { action: 'VIEW_DEVICE', object: { type: 'DEVICE_GROUP', value: 'dyn' } }\n ]\n },\n { name: 'asdasd', description: '123', permissions: [{ action: 'http', object: { type: 'any', value: '/api/management/v1/useradm/.*' } }] },\n {\n name: '141sasd',\n description: '1313adg',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ManageUsers }\n ]\n },\n {\n name: 'kljlkk',\n description: 'lkl',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } }]\n },\n {\n name: 'yyyyy',\n description: 'asd',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ManageDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['dockerclient'] } },\n { ...defaultPermissionSets.ManageReleases }\n ]\n },\n {\n name: 'RBAC_ROLE_DEPLOYMENTS_MANAGER',\n description: 'Intended for users responsible for managing deployments, this role can create and abort deployments',\n permission_sets_with_scope: [{ ...defaultPermissionSets.DeployToDevices }]\n },\n {\n name: 'RBAC_ROLE_REMOTE_TERMINAL',\n description: `Intended for tech support accounts, this role can access the devices' Remote Terminal.`,\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices }]\n },\n { name: 'RBAC_ROLE_PERMIT_ALL', description: '', permission_sets_with_scope: [{ ...defaultPermissionSets.SuperUser }] },\n {\n name: 'RBAC_ROLE_OBSERVER',\n description:\n 'Intended for team leaders or limited tech support accounts, this role can see all Devices, Artifacts and Deployment reports but not make any changes.',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ReadReleases }, { ...defaultPermissionSets.ReadDevices }]\n },\n {\n name: 'RBAC_ROLE_CI',\n description:\n 'Intended for automation accounts building software (e.g. CI/CD systems), this role can only manage Artifacts, including upload new Artifacts and delete Artifacts. It does not have access to Devices or Deployments.',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadReleases },\n { ...defaultPermissionSets.ManageReleases },\n { ...defaultPermissionSets.UploadArtifacts }\n ]\n },\n {\n name: 'almostAdmin',\n description: 'almost admin rights',\n permissions: permissionSets.find(item => item.name === 'almostAdmin')?.permissions\n },\n {\n name: 'almostAdminNew',\n description: 'almost admin rights',\n permission_sets_with_scope: Object.values(defaultPermissionSets)\n }\n];\n\nconst expectedParsedRoles = {\n '141sasd': {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] },\n userManagement: [uiPermissionsById.manage.value]\n }\n },\n asdasd: {\n editable: false,\n isCustom: true,\n uiPermissions: { ...emptyUiPermissions, userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value] }\n },\n dyn: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n deployments: [uiPermissionsById.deploy.value],\n groups: { dyn: [uiPermissionsById.read.value, uiPermissionsById.deploy.value] }\n }\n },\n kljlkk: {\n editable: true,\n isCustom: false,\n uiPermissions: { ...emptyUiPermissions, groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] } }\n },\n yyyyy: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { dockerclient: [uiPermissionsById.read.value, uiPermissionsById.manage.value] },\n releases: { [ALL_RELEASES]: [uiPermissionsById.manage.value] }\n }\n },\n almostAdmin: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.manage.value, uiPermissionsById.deploy.value, uiPermissionsById.read.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n // we can't assign deployment permissions to devices here, since the old path based rbac controls don't allow the scoped permissions\n // uiPermissionsById.deploy.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.read.value, uiPermissionsById.upload.value, uiPermissionsById.manage.value]\n },\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n },\n almostAdminNew: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.read.value, uiPermissionsById.deploy.value, uiPermissionsById.manage.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.deploy.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.manage.value, uiPermissionsById.upload.value, uiPermissionsById.read.value]\n },\n tenantManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value],\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n }\n};\n\nconst defaultRolesById = {\n ...rolesById,\n test: {\n ...emptyRole,\n name: 'test',\n description: 'test description',\n editable: true,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { testGroup: [uiPermissionsById.read.value] },\n releases: { bar: [uiPermissionsById.read.value] }\n }\n }\n};\n\nexport const receivedRoles = rbacRoles.reduce(\n (accu, role) => {\n const { name, description, ...roleRemainder } = role;\n if (name.startsWith('RBAC')) {\n accu[name] = {\n ...defaultRolesById[name],\n ...roleRemainder,\n editable: false,\n isCustom: false,\n description: defaultRolesById[name].description ? defaultRolesById[name].description : description\n };\n } else {\n const result = expectedParsedRoles[name] ?? {};\n accu[name] = {\n ...emptyRole,\n ...role,\n ...result,\n name\n };\n }\n return accu;\n },\n { ...defaultRolesById }\n);\n\nexport const receivedPermissionSets = permissionSets.reduce((accu, set) => {\n const result = defaultPermissionSets[set.name]?.result ?? {};\n accu[set.name] = {\n ...set,\n result: {\n ...emptyUiPermissions,\n ...result\n }\n };\n return accu;\n}, {});\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport {\n DEVICE_FILTERING_OPTIONS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL,\n reportingApiUrl\n} from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { defaultCreationDate, defaultMacAddress, mockApiResponses } from '../mockData';\n\nexport const defaultDeviceId = 'a1';\n\nconst deviceAuthDevice = {\n id: defaultDeviceId,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n};\n\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst updatedTime = '2019-01-01T09:25:00.000Z';\n\nexport const inventoryDevice = {\n id: defaultDeviceId,\n attributes: [\n { name: 'network_interfaces', value: ['eth0', 'wlan0'], scope: 'inventory' },\n { name: 'kernel', value: 'Linux version 4.19.75-v7l+', scope: 'inventory' },\n { name: 'artifact_name', value: 'raspotifyInstaller', scope: 'inventory' },\n { name: 'ipv6_wlan0', value: 'fe80::68d9:8453:3e9c:7c80/64', scope: 'inventory' },\n { name: 'mac_eth0', value: defaultMacAddress, scope: 'inventory' },\n { name: 'rootfs_type', value: 'ext4', scope: 'inventory' },\n { name: 'mender_bootloader_integration', value: 'unknown', scope: 'inventory' },\n { name: 'cpu_model', value: 'ARMv7 Processor rev 3 (v7l)', scope: 'inventory' },\n { name: 'hostname', value: 'raspberrypi', scope: 'inventory' },\n { name: 'mender_client_version', value: '2.1.0', scope: 'inventory' },\n { name: 'ipv4_wlan0', value: '192.168.10.141/24', scope: 'inventory' },\n { name: 'device_type', value: 'raspberrypi4', scope: 'inventory' },\n { name: 'mem_total_kB', value: '1986024', scope: 'inventory' },\n { name: 'mac_wlan0', value: 'dc:a6:32:12:ad:c0', scope: 'inventory' },\n { name: 'os', value: 'Raspbian GNU/Linux 10 (buster)', scope: 'inventory' },\n { name: 'created_ts', value: defaultCreationDate, scope: 'system' },\n { name: 'updated_ts', value: updatedTime, scope: 'system' },\n { name: 'status', value: 'accepted', scope: 'identity' },\n { name: 'mac', value: defaultMacAddress, scope: 'identity' },\n { name: 'group', value: 'test', scope: 'system' }\n ],\n check_in_time: checkInTimeExact,\n updated_ts: updatedTime\n};\n\nconst deviceAttributes = [\n { name: 'status', scope: 'identity', count: 5 },\n { name: 'created_ts', scope: 'system', count: 5 },\n { name: 'updated_ts', scope: 'system', count: 5 },\n { name: 'mac', scope: 'identity', count: 1 },\n { name: 'artifact_name', scope: 'inventory', count: 1 },\n { name: 'cpu_model', scope: 'inventory', count: 1 },\n { name: 'device_type', scope: 'inventory', count: 1 },\n { name: 'hostname', scope: 'inventory', count: 1 },\n { name: 'ipv4_wlan0', scope: 'inventory', count: 1 },\n { name: 'ipv6_wlan0', scope: 'inventory', count: 1 },\n { name: 'kernel', scope: 'inventory', count: 1 },\n { name: 'mac_eth0', scope: 'inventory', count: 1 },\n { name: 'mac_wlan0', scope: 'inventory', count: 1 },\n { name: 'mem_total_kB', scope: 'inventory', count: 1 },\n { name: 'mender_bootloader_integration', scope: 'inventory', count: 1 },\n { name: 'mender_client_version', scope: 'inventory', count: 1 },\n { name: 'network_interfaces', scope: 'inventory', count: 1 },\n { name: 'os', scope: 'inventory', count: 1 },\n { name: 'rootfs_type', scope: 'inventory', count: 1 },\n { name: 'group', scope: 'system', count: 1 }\n];\n\nconst searchHandler = async ({ request }) => {\n const { page, per_page, filters } = await request.json();\n if ([page, per_page, filters].some(item => !item)) {\n return new HttpResponse(null, { status: 509 });\n }\n const filter = filters.find(filter => filter.scope === 'identity' && filter.attribute === 'status' && Object.values(DEVICE_STATES).includes(filter.value));\n const status = filter?.value || '';\n if (!status || filters.length > 1) {\n if (filters.find(filter => filter.attribute === 'group' && filter.value.includes(Object.keys(mockApiResponses.devices.groups.byId)[0]))) {\n return new HttpResponse(JSON.stringify([inventoryDevice, { ...inventoryDevice, id: 'b1' }]), {\n headers: { [headerNames.total]: 2 }\n });\n }\n if (filters.find(filter => filter.scope === 'monitor' && ['failed_last_update', 'alerts', 'auth_request'].includes(filter.attribute))) {\n return new HttpResponse(JSON.stringify([inventoryDevice]), { headers: { [headerNames.total]: 4 } });\n }\n return new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 0 } });\n }\n let deviceList = Array.from({ length: mockApiResponses.devices.byStatus[status].total }, (_, index) => ({\n ...inventoryDevice,\n attributes: [...inventoryDevice.attributes, { name: 'test-count', value: index, scope: 'system' }],\n id: `${String.fromCharCode('a'.charCodeAt(0) + index)}1`\n }));\n deviceList = deviceList.slice((page - 1) * per_page, page * per_page);\n return new HttpResponse(JSON.stringify(deviceList), { headers: { [headerNames.total]: mockApiResponses.devices.byStatus[status].total } });\n};\n\nexport const deviceHandlers = [\n http.delete(`${deviceAuthV2}/devices/:deviceId/auth/:authId`, ({ params: { authId, deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 501 });\n }),\n http.delete(`${deviceAuthV2}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 502 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group`, ({ params: { group } }) => {\n if (mockApiResponses.devices.groups.byId[group]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (mockApiResponses.devices.groups.byId[group] && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 503 });\n }),\n http.delete(`${inventoryApiUrlV2}/filters/:filterId`, ({ params: { filterId } }) => {\n if (Object.values(mockApiResponses.devices.groups.byId).find(group => group.id === filterId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 504 });\n }),\n http.get(`${deviceAuthV2}/devices`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const deviceIds = searchParams.getAll('id');\n if (deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return HttpResponse.json(deviceIds.map(id => ({ ...deviceAuthDevice, id })));\n }\n return new HttpResponse(null, { status: 505 });\n }),\n http.get(`${deviceAuthV2}/limits/devices`, () => HttpResponse.json(mockApiResponses.devices.limits)),\n http.get(`${inventoryApiUrl}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json(inventoryDevice);\n }\n return new HttpResponse(null, { status: 506 });\n }),\n http.put(`${inventoryApiUrl}/devices/:deviceId/tags`, async ({ params: { deviceId }, request }) => {\n const tags = await request.json();\n if (!mockApiResponses.devices.byId[deviceId] && !Array.isArray(tags) && !tags.every(item => item.name && item.value)) {\n return new HttpResponse(null, { status: 506 });\n }\n return HttpResponse.json(tags);\n }),\n http.get(`${inventoryApiUrl}/groups`, () => {\n const groups = Object.entries(mockApiResponses.devices.groups.byId).reduce((accu, [groupName, group]) => {\n if (!group.id) {\n accu.push(groupName);\n }\n return accu;\n }, []);\n return HttpResponse.json(groups);\n }),\n http.get(`${inventoryApiUrlV2}/filters/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.get(`${reportingApiUrl}/devices/attributes`, () => HttpResponse.json({ attributes: deviceAttributes, count: deviceAttributes.length, limit: 100 })),\n http.get(`${reportingApiUrl}/devices/search/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.post(`${reportingApiUrl}/devices/aggregate`, () =>\n HttpResponse.json([\n {\n name: '*',\n items: [\n { key: 'test', count: 6 },\n { key: 'original', count: 1 }\n ],\n other_count: 42\n }\n ])\n ),\n http.get(`${inventoryApiUrlV2}/filters`, () =>\n HttpResponse.json([\n {\n id: 'filter1',\n name: 'testGroupDynamic',\n terms: [\n { scope: 'identity', attribute: 'id', type: '$in', value: [defaultDeviceId] },\n { scope: 'identity', attribute: 'mac', type: '$exists', value: false },\n { scope: 'identity', attribute: 'kernel', type: '$exists', value: true }\n ]\n }\n ])\n ),\n http.patch(`${inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (!!group && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 508 });\n }),\n http.post(`${deviceAuthV2}/devices`, async ({ request }) => {\n const authset = await request.json();\n if (\n Object.values(mockApiResponses.devices.byId).some(device =>\n device.auth_sets.some(deviceAuthSet => deviceAuthSet.pubkey == authset.pubkey || deviceAuthSet.identity_data == authset.identity_data)\n )\n ) {\n return new HttpResponse(null, { status: 409 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${inventoryApiUrlV2}/filters/search`, searchHandler),\n http.post(`${reportingApiUrl}/filters/search`, searchHandler),\n http.post(`${inventoryApiUrlV2}/filters`, async ({ request }) => {\n const { name, terms } = await request.json();\n if (\n [name, terms].some(item => !item) ||\n mockApiResponses.devices.groups[name] ||\n !terms.every(term => DEVICE_FILTERING_OPTIONS[term.type] && ['identity', 'inventory', 'system'].includes(term.scope) && !!term.value && !!term.attribute)\n ) {\n return new HttpResponse(null, { status: 510 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: 'find/me/here/createdFilterId' } });\n }),\n http.get(`${inventoryApiUrlV2}/statistics`, async () =>\n HttpResponse.json({\n devices_by_status: {\n accepted: { standard: mockApiResponses.devices.byStatus.accepted.total, micro: 0, system: 0 },\n pending: { standard: mockApiResponses.devices.byStatus.pending.total, micro: 0, system: 0 }\n }\n })\n ),\n http.put(`${deviceAuthV2}/devices/:deviceId/auth/:authId/status`, async ({ params: { authId, deviceId }, request }) => {\n const { status } = await request.json();\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId) && DEVICE_STATES[status]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 511 });\n }),\n http.get(`${deviceConfig}/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({\n configured: { test: true, something: 'else', aNumber: 42 },\n deployment_id: 'config1',\n reported: { test: true, something: 'else', aNumber: 42 },\n updated_ts: updatedTime,\n reported_ts: '2019-01-01T09:25:01.000Z'\n });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.put(`${deviceConfig}/:deviceId`, async ({ params: { deviceId }, request }) => {\n const body = await request.text();\n if (body.includes('evilValue')) {\n return new HttpResponse(null, { status: 418 });\n }\n return new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 201 : 513 });\n }),\n http.post(`${deviceConfig}/:deviceId/deploy`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: 'config1' });\n }\n return new HttpResponse(null, { status: 514 });\n }),\n http.get(`${deviceConnect}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ status: 'connected', updated_ts: mockApiResponses.devices.byId[deviceId].updated_ts });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.post(`${deviceConnect}/devices/:deviceId/:action`, ({ params: { deviceId, action } }) => {\n if (['check-update', 'send-inventory'].includes(action) && mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 202 });\n }\n return new HttpResponse(null, { status: 518 });\n }),\n http.get(`${iotManagerBaseURL}/devices/:deviceId/state`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.put(`${iotManagerBaseURL}/devices/:deviceId/state/:integrationId`, async ({ params: { deviceId }, request }) => {\n const body = await request.json();\n if (mockApiResponses.devices.byId[deviceId] && body) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 516 });\n }),\n http.put(\n `${deviceConnect}/devices/:deviceId/upload`,\n ({ params: { deviceId } }) => new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 200 : 517 })\n ),\n http.get(`${deviceAuthV2}/license`, () => HttpResponse.text('test,report'))\n];\n","// Copyright 2021 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { alertChannels, headerNames, monitorApiUrlv1 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\n\nexport const monitorHandlers = [\n http.get(`${monitorApiUrlv1}/devices/:id/alerts`, () => new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 1 } })),\n http.get(`${monitorApiUrlv1}/devices/:id/alerts/latest`, () => HttpResponse.json([])),\n http.get(`${monitorApiUrlv1}/devices/:id/config`, ({ params: { id } }) => {\n if (id === mockApiResponses.devices.byId.a1.id) {\n return HttpResponse.json([{ something: 'here' }]);\n }\n return HttpResponse.json([]);\n }),\n http.put(`${monitorApiUrlv1}/settings/global/channel/alerts/:channel/status`, async ({ params: { channel }, request }) => {\n const { enabled } = await request.json();\n if (Object.keys(alertChannels).includes(channel) && enabled !== undefined) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 590 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, webhookEvents } from '../mockData';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan', 'tos'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n};\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => new HttpResponse([])),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(`${tenantadmApiUrlv2}/billing/card`, () => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' })),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n ({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 })\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/contact/support`, async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.patch(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription`, () => new HttpResponse(null, { status: 202 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(`${iotManagerBaseURL}/integrations`, () => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }])),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(ssoIdpApiUrlv1, () => new HttpResponse(null, { status: 200 })),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 })),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(`${deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n }),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n }),\n http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n","// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { accessTokens, defaultPassword, userId as defaultUserId, mockApiResponses, permissionSets, rbacRoles, testSsoId, token } from '../mockData';\n\nexport const userHandlers = [\n http.post(`${useradmApiUrl}/auth/login`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n const authInfo = atob(authHeader?.split(' ')[1]);\n const [user, password] = authInfo.split(':');\n\n if (!password) {\n return HttpResponse.json({ id: testSsoId, kind: 'sso/saml' });\n } else if (password !== defaultPassword) {\n return new HttpResponse(null, { status: 401 });\n } else if (user.includes('limited')) {\n return new HttpResponse('limitedToken', { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n } else if (user.includes('2fa')) {\n return new HttpResponse(JSON.stringify({ error: '2fa needed' }), { status: 401 });\n }\n\n return new HttpResponse(token, { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n }),\n http.get(`https://hosted.mender.io${useradmApiUrl}/auth/magic/:id`, ({ params: { id } }) => {\n if (id) {\n return new HttpResponse('test', { headers: { 'Set-Cookie': 'JWT=test' } });\n }\n return new HttpResponse(null, { status: 400 });\n }),\n http.post(`${useradmApiUrl}/auth/logout`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/password-reset/:status`, async ({ params: { status }, request }) => {\n const { email, secret_hash, password } = await request.json();\n if (!['start', 'complete'].includes(status) && ![email, secret_hash, password].some(item => item)) {\n return new HttpResponse(null, { status: 560 });\n }\n if (status === 'start' && email) {\n return new HttpResponse(null, { status: 200 });\n }\n if (status === 'complete' && secret_hash && password) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 561 });\n }),\n http.put(`${useradmApiUrl}/2faverify`, async ({ request }) => {\n const { token2fa } = await request.json();\n if (!token2fa) {\n return new HttpResponse(null, { status: 562 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${useradmApiUrl}/users`, () => HttpResponse.json(Object.values(mockApiResponses.users.byId))),\n http.get(`${useradmApiUrl}/users/me`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n if (authHeader?.includes('limited')) {\n return new HttpResponse(JSON.stringify({ error: 'forbidden by role-based access control' }), { status: 403 });\n }\n return HttpResponse.json(mockApiResponses.users.byId[defaultUserId]);\n }),\n http.get(`${useradmApiUrl}/users/exists`, ({ request }) => {\n const url = new URL(request.url);\n const email = url.searchParams.get('email');\n if (!decodeURIComponent(email).includes('child+123')) {\n return new HttpResponse(null, { status: 578 });\n }\n return HttpResponse.json({ exists: true });\n }),\n http.get(`${useradmApiUrl}/users/:userId`, ({ params: { userId } }) => {\n if (userId === 'me' || mockApiResponses.users.byId[userId]) {\n const user = userId === 'me' ? defaultUserId : userId;\n return HttpResponse.json(mockApiResponses.users.byId[user]);\n }\n return new HttpResponse(null, { status: 563 });\n }),\n http.post(`${useradmApiUrl}/users`, async ({ request }) => {\n const { email, password } = await request.json();\n if (email === 'test@test.com' || [email, password].every(value => value)) {\n return HttpResponse.json(mockApiResponses.users.byId.a1);\n }\n return new HttpResponse(null, { status: 564 });\n }),\n http.put(`${useradmApiUrl}/users/:userId`, async ({ params: { userId }, request }) => {\n const { email, password, current_password } = await request.json();\n if (current_password === 'bad_password') {\n return new HttpResponse(null, { status: 401 });\n }\n if (\n (mockApiResponses.users.byId[userId] && [email, password].some(value => Object.values(mockApiResponses.users.byId[userId]).includes(value))) ||\n email === 'test@test.com'\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 565 });\n }),\n http.delete(\n `${useradmApiUrl}/users/:userId`,\n ({ params: { userId } }) => new HttpResponse(null, { status: mockApiResponses.users.byId[userId] ? 200 : 566 })\n ),\n http.get(`${useradmApiUrl}/roles`, () => HttpResponse.json(rbacRoles)),\n http.post(`${useradmApiUrl}/roles`, async ({ request }) => {\n const { name, permissions } = await request.json();\n if (\n [name, permissions].every(value => value) &&\n permissions.every(permission => permission.action && permission.object && permission.object.type && permission.object.value)\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 567 });\n }),\n http.put(`${useradmApiUrl}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permissions } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permissions].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 568 });\n }),\n http.post(`${useradmApiUrlv2}/support/feedback/product`, async () => new HttpResponse(null, { status: 200 })),\n http.delete(\n `${useradmApiUrl}/roles/:roleId`,\n ({ params: { roleId } }) => new HttpResponse(null, { status: mockApiResponses.users.rolesById[roleId] ? 200 : 569 })\n ),\n http.get(`${useradmApiUrlv2}/roles`, () => HttpResponse.json(rbacRoles)),\n http.get(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return HttpResponse.json(mockApiResponses.users.rolesById[roleId]);\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrlv2}/roles`, async ({ request }) => {\n const { name, permission_sets_with_scope } = await request.json();\n if (\n !!name &&\n permission_sets_with_scope.every(permission => permission.name && permissionSets.find(permissionSet => permissionSet.name === permission.name))\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 572 });\n }),\n http.put(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permission_sets_with_scope } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permission_sets_with_scope].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 573 });\n }),\n http.delete(`${useradmApiUrlv2}/roles/:roleId`, ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 574 });\n }),\n http.get(`${useradmApiUrl}/settings`, () => HttpResponse.json(mockApiResponses.users.globalSettings)),\n http.post(`${useradmApiUrl}/settings`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/me`, () => HttpResponse.json(mockApiResponses.users.userSettings)),\n http.post(`${useradmApiUrl}/settings/me`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json(accessTokens)),\n http.post(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json('aNewToken')),\n http.delete(\n `${useradmApiUrl}/settings/tokens/:tokenId`,\n ({ params: { tokenId } }) => new HttpResponse(null, { status: tokenId === 'some-id-1' ? 200 : 577 })\n ),\n http.get(`${useradmApiUrl}/2faqr`, () => HttpResponse.json({ qr: btoa('test') })),\n http.post(`${useradmApiUrl}/users/:userId/2fa/enable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 570 });\n }),\n http.post(`${useradmApiUrl}/users/:userId/2fa/disable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrl}/auth/verify-email/start`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/verify-email/complete`, async ({ request }) => {\n const { secret_hash } = await request.json();\n return new HttpResponse(null, { status: secret_hash === 'superSecret' ? 200 : 576 });\n }),\n http.get(`${useradmApiUrlv2}/permission_sets`, () => HttpResponse.json(permissionSets)),\n http.post(`${useradmApiUrl}/users/:userId/assign`, async ({ request }) => {\n const { tenant_ids } = await request.json();\n return new HttpResponse(null, { status: tenant_ids.length ? 200 : 577 });\n }),\n http.get(`${useradmApiUrl}/users/tenants/:tenantId/token`, () => HttpResponse.text('differentToken'))\n];\n"],"mappings":"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","names":["import_msw","import_constants","import_constants","import_msw","checkInTimeExact","filter","import_constants","import_msw","import_constants","import_msw","import_constants","import_msw","import_constants","import_msw","userId"]}