@northern.tech/testing 0.18.5 → 0.19.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 (33) hide show
  1. package/dist/mockData.cjs +13 -0
  2. package/dist/mockData.cjs.map +1 -1
  3. package/dist/mockData.d.cts +12 -0
  4. package/dist/mockData.d.ts +12 -0
  5. package/dist/mockData.js +13 -1
  6. package/dist/mockData.js.map +1 -1
  7. package/dist/requestHandlers/deploymentHandlers.cjs +3 -3
  8. package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -1
  9. package/dist/requestHandlers/deploymentHandlers.js +3 -3
  10. package/dist/requestHandlers/deploymentHandlers.js.map +1 -1
  11. package/dist/requestHandlers/deviceHandlers.cjs +1 -1
  12. package/dist/requestHandlers/deviceHandlers.js +1 -1
  13. package/dist/requestHandlers/monitorHandlers.cjs +1 -1
  14. package/dist/requestHandlers/monitorHandlers.js +1 -1
  15. package/dist/requestHandlers/organizationHandlers.cjs +3 -2
  16. package/dist/requestHandlers/organizationHandlers.cjs.map +1 -1
  17. package/dist/requestHandlers/organizationHandlers.js +5 -4
  18. package/dist/requestHandlers/organizationHandlers.js.map +1 -1
  19. package/dist/requestHandlers/releaseHandlers.cjs +1 -1
  20. package/dist/requestHandlers/releaseHandlers.js +1 -1
  21. package/dist/requestHandlers/userHandlers.cjs +1 -1
  22. package/dist/requestHandlers/userHandlers.js +1 -1
  23. package/dist/requestHandlers/validation.cjs +1 -1
  24. package/dist/requestHandlers/validation.js +1 -2
  25. package/dist/validation-BBytP0OB.js +64 -0
  26. package/dist/validation-BBytP0OB.js.map +1 -0
  27. package/dist/validation-BOjbro5I.cjs +75 -0
  28. package/dist/validation-BOjbro5I.cjs.map +1 -0
  29. package/package.json +1 -1
  30. package/dist/validation-D_L48eZA.js +0 -64
  31. package/dist/validation-D_L48eZA.js.map +0 -1
  32. package/dist/validation-Dt_HRzma.cjs +0 -75
  33. package/dist/validation-Dt_HRzma.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mockData.js","names":[],"sources":["../src/mockData.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 {\n ALL_DEVICES,\n ALL_SOFTWARE,\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\\]/;\n\nexport const menderEnvironment = {\n features: {\n hasMultitenancy: true\n },\n version: 'saas-123.34'\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 pendingEmailChange = {\n new_email: 'new_email@acme.com',\n created_ts: '2019-01-13T07:25:00.000Z',\n valid_until: '2019-01-13T08:25:00.000Z'\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];\n\nexport const spTenantLimits = {\n max_devices: {\n current_value: 0,\n name: 'max_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 200\n },\n max_micro_devices: {\n current_value: 0,\n name: 'max_micro_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 280\n },\n max_system_devices: {\n current_value: 0,\n name: 'max_system_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 20\n }\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 device_limits: {\n max_devices: {\n current_value: 0,\n name: 'max_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 200\n },\n max_micro_devices: {\n current_value: 0,\n name: 'max_micro_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 280\n },\n max_system_devices: {\n current_value: 0,\n name: 'max_system_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 20\n }\n },\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, test: 50 },\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 tenantToken: 'aaabbbcccdddeeefff',\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 manifests: {\n byId: {\n m1000: {\n name: 'm1000',\n modified: '2020-01-01T00:16:39.000Z',\n artifact: {\n id: 'art-m1000',\n name: 'm1000',\n description: 'test manifest description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-01-01T00:16:39.000Z'\n },\n manifest: {\n api_version: 'mender/v1',\n kind: 'manifest',\n name: 'm1000',\n system_types_compatible: [deviceTypes.qemu],\n component_types: {\n 'component-a': {\n artifact_name: 'art-m1000-component',\n update_strategy: { order: 10 }\n }\n }\n },\n tags: [],\n notes: ''\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 manifestsList = Array.from({ length: 1000 }, (_, i) => ({\n name: `m${i + 1}`,\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString(),\n artifact: {\n id: `art-m${i + 1}`,\n name: `m${i + 1}`,\n description: 'test manifest description',\n device_types_compatible: [deviceTypes.qemu],\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString()\n },\n manifest: {\n api_version: 'mender/v1',\n kind: 'manifest',\n name: `m${i + 1}`,\n system_types_compatible: [deviceTypes.qemu],\n component_types: {\n 'component-a': {\n artifact_name: `art-m${i + 1}-component`,\n update_strategy: { order: 10 }\n }\n }\n },\n tags: [],\n notes: ''\n}));\n\nexport const softwareList = [\n ...Array.from({ length: 500 }, (_, i) => ({\n name: `release-${i + 1}`,\n modified: new Date(2020, 8, 10, 12, 16, i).toISOString(),\n kind: 'release' as const,\n tags: i < 5 ? ['some-tag'] : [],\n update_type: i < 5 ? 'single-file' : undefined,\n compatible_types: ['raspberrypi4', 'qemux86-64'],\n notes: ''\n })),\n ...Array.from({ length: 500 }, (_, i) => ({\n name: `m${i + 1}`,\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString(),\n kind: 'manifest' as const,\n tags: i < 3 ? ['some-tag'] : [],\n update_type: i < 2 ? 'single-file' : undefined,\n compatible_types: ['system-core'],\n notes: ''\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 { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/tenants/me$' } }\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 { action: 'http', object: { type: 'GET', value: '^/api/management/v1alpha1/deployments/software' } }\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: '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 { action: 'http', object: { type: 'GET', value: '^/api/management/v1alpha1/deployments/software' } }\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: 'GET', value: '^/api/management/v1alpha1/deployments/*' } },\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_SOFTWARE]: [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_SOFTWARE]: [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_SOFTWARE]: [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"],"mappings":"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"}
1
+ {"version":3,"file":"mockData.js","names":[],"sources":["../src/mockData.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 {\n ALL_DEVICES,\n ALL_SOFTWARE,\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\\]/;\n\nexport const menderEnvironment = {\n features: {\n hasMultitenancy: true\n },\n version: 'saas-123.34'\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 pendingEmailChange = {\n new_email: 'new_email@acme.com',\n created_ts: '2019-01-13T07:25:00.000Z',\n valid_until: '2019-01-13T08:25:00.000Z'\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];\n\nexport const spTenantLimits = {\n max_devices: {\n current_value: 0,\n name: 'max_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 200\n },\n max_micro_devices: {\n current_value: 0,\n name: 'max_micro_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 280\n },\n max_system_devices: {\n current_value: 0,\n name: 'max_system_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 20\n }\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 device_limits: {\n max_devices: {\n current_value: 0,\n name: 'max_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 200\n },\n max_micro_devices: {\n current_value: 0,\n name: 'max_micro_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 280\n },\n max_system_devices: {\n current_value: 0,\n name: 'max_system_devices',\n tenant_id: '699f07a3e783def54cf6201f',\n value: 20\n }\n },\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, test: 50 },\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 tenantToken: 'aaabbbcccdddeeefff',\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 manifests: {\n byId: {\n m1000: {\n name: 'm1000',\n modified: '2020-01-01T00:16:39.000Z',\n artifact: {\n id: 'art-m1000',\n name: 'm1000',\n description: 'test manifest description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-01-01T00:16:39.000Z'\n },\n manifest: {\n api_version: 'mender/v1',\n kind: 'manifest',\n name: 'm1000',\n system_types_compatible: [deviceTypes.qemu],\n component_types: {\n 'component-a': {\n artifact_name: 'art-m1000-component',\n update_strategy: { order: 10 }\n }\n }\n },\n tags: [],\n notes: ''\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 manifestsList = Array.from({ length: 1000 }, (_, i) => ({\n name: `m${i + 1}`,\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString(),\n artifact: {\n id: `art-m${i + 1}`,\n name: `m${i + 1}`,\n description: 'test manifest description',\n device_types_compatible: [deviceTypes.qemu],\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString()\n },\n manifest: {\n api_version: 'mender/v1',\n kind: 'manifest',\n name: `m${i + 1}`,\n system_types_compatible: [deviceTypes.qemu],\n component_types: {\n 'component-a': {\n artifact_name: `art-m${i + 1}-component`,\n update_strategy: { order: 10 }\n }\n }\n },\n tags: [],\n notes: ''\n}));\n\nexport const softwareList = [\n ...Array.from({ length: 500 }, (_, i) => ({\n name: `release-${i + 1}`,\n modified: new Date(2020, 8, 10, 12, 16, i).toISOString(),\n kind: 'release' as const,\n tags: i < 5 ? ['some-tag'] : [],\n update_type: i < 5 ? 'single-file' : undefined,\n compatible_types: ['raspberrypi4', 'qemux86-64'],\n notes: ''\n })),\n ...Array.from({ length: 500 }, (_, i) => ({\n name: `m${i + 1}`,\n modified: new Date(2020, 0, 1, 0, 0, i).toISOString(),\n kind: 'manifest' as const,\n tags: i < 3 ? ['some-tag'] : [],\n update_type: i < 2 ? 'single-file' : undefined,\n compatible_types: ['system-core'],\n notes: ''\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 { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/tenants/me$' } }\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 { action: 'http', object: { type: 'GET', value: '^/api/management/v1alpha1/deployments/software' } }\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: '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 { action: 'http', object: { type: 'GET', value: '^/api/management/v1alpha1/deployments/software' } }\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: 'GET', value: '^/api/management/v1alpha1/deployments/*' } },\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_SOFTWARE]: [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_SOFTWARE]: [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_SOFTWARE]: [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\nexport const ssoEndpoint = {\n id: '1',\n saml: {\n entity_id: 'https://hosted.mender.io/api/management/v1/useradm/sso/sp/metadata/1',\n acs_url: 'https://hosted.mender.io/api/management/v1/useradm/auth/sso/1/acs',\n start_url: 'https://hosted.mender.io/api/management/v1/useradm/auth/sso/1/login'\n },\n oidc: {\n callback_url: 'https://hosted.mender.io/api/management/v1/useradm/oidc/1/callback',\n start_url: 'https://hosted.mender.io/api/management/v1/useradm/oidc/1/start'\n }\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_mockData = require("../mockData.cjs");
3
- const require_validation = require("../validation-Dt_HRzma.cjs");
3
+ const require_validation = require("../validation-BOjbro5I.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let msw = require("msw");
6
6
  //#region src/requestHandlers/deploymentHandlers.ts
@@ -117,11 +117,11 @@ const deploymentHandlers = [
117
117
  if (!Object.keys(body).length) return new msw.HttpResponse(JSON.stringify({}), { status: 524 });
118
118
  return new msw.HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
119
119
  }),
120
- msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments`, require_validation.validated(async ({ request }) => {
120
+ msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments`, async ({ request }) => {
121
121
  const { filter_id, devices = [], uniform_phases = [] } = await request.json();
122
122
  if (!filter_id || !!devices.length || !!uniform_phases.length) return new msw.HttpResponse(JSON.stringify({}), { status: 525 });
123
123
  return new msw.HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
124
- })),
124
+ }),
125
125
  msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/group/:deploymentGroup`, require_validation.validated(async ({ params: { deploymentGroup }, request }) => {
126
126
  const { filter_id, devices = [] } = await request.json();
127
127
  if (filter_id || !!devices.length || deploymentGroup !== Object.keys(require_mockData.mockApiResponses.devices.groups.byId)[0]) return new msw.HttpResponse(JSON.stringify({}), { status: 526 });
@@ -1 +1 @@
1
- {"version":3,"file":"deploymentHandlers.cjs","names":["limitDefault","http","deploymentsApiUrlV2","HttpResponse","mockApiResponses","headerNames","deploymentsApiUrl","validated"],"sources":["../../src/requestHandlers/deploymentHandlers.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.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\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(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(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 ),\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 // TODO: restore validation once ref expansion is handled in combination with ajv\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(\n `${deploymentsApiUrlV2}/deployments`,\n validated(async ({ request }) => {\n const { filter_id, devices = [], uniform_phases = [] } = await request.json();\n if (!filter_id || !!devices.length || !!uniform_phases.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 ),\n http.post(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(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 ),\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"],"mappings":"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"}
1
+ {"version":3,"file":"deploymentHandlers.cjs","names":["limitDefault","http","deploymentsApiUrlV2","HttpResponse","mockApiResponses","headerNames","deploymentsApiUrl","validated"],"sources":["../../src/requestHandlers/deploymentHandlers.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.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\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(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(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 ),\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 // TODO: restore validation once ref expansion is handled in combination with ajv\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 // TODO: restore validation once ref expansion is handled in combination with ajv\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [], uniform_phases = [] } = await request.json();\n if (!filter_id || !!devices.length || !!uniform_phases.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(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(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 ),\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"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-D_L48eZA.js";
2
+ import { n as validated } from "../validation-BBytP0OB.js";
3
3
  import { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw";
5
5
  //#region src/requestHandlers/deploymentHandlers.ts
@@ -116,11 +116,11 @@ const deploymentHandlers = [
116
116
  if (!Object.keys(body).length) return new HttpResponse(JSON.stringify({}), { status: 524 });
117
117
  return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
118
118
  }),
119
- http.post(`${deploymentsApiUrlV2}/deployments`, validated(async ({ request }) => {
119
+ http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {
120
120
  const { filter_id, devices = [], uniform_phases = [] } = await request.json();
121
121
  if (!filter_id || !!devices.length || !!uniform_phases.length) return new HttpResponse(JSON.stringify({}), { status: 525 });
122
122
  return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
123
- })),
123
+ }),
124
124
  http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, validated(async ({ params: { deploymentGroup }, request }) => {
125
125
  const { filter_id, devices = [] } = await request.json();
126
126
  if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) return new HttpResponse(JSON.stringify({}), { status: 526 });
@@ -1 +1 @@
1
- {"version":3,"file":"deploymentHandlers.js","names":[],"sources":["../../src/requestHandlers/deploymentHandlers.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.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\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(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(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 ),\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 // TODO: restore validation once ref expansion is handled in combination with ajv\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(\n `${deploymentsApiUrlV2}/deployments`,\n validated(async ({ request }) => {\n const { filter_id, devices = [], uniform_phases = [] } = await request.json();\n if (!filter_id || !!devices.length || !!uniform_phases.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 ),\n http.post(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(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 ),\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"],"mappings":"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"}
1
+ {"version":3,"file":"deploymentHandlers.js","names":[],"sources":["../../src/requestHandlers/deploymentHandlers.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.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\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(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(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 ),\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 // TODO: restore validation once ref expansion is handled in combination with ajv\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 // TODO: restore validation once ref expansion is handled in combination with ajv\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [], uniform_phases = [] } = await request.json();\n if (!filter_id || !!devices.length || !!uniform_phases.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(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(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 ),\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(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(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 ),\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"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_mockData = require("../mockData.cjs");
3
- const require_validation = require("../validation-Dt_HRzma.cjs");
3
+ const require_validation = require("../validation-BOjbro5I.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let msw = require("msw");
6
6
  //#region src/requestHandlers/deviceHandlers.ts
@@ -1,5 +1,5 @@
1
1
  import { defaultCreationDate, defaultMacAddress, mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-D_L48eZA.js";
2
+ import { n as validated } from "../validation-BBytP0OB.js";
3
3
  import { DEVICE_FILTERING_OPTIONS, DEVICE_STATES, deviceAuthV2, deviceConfig, deviceConnect, headerNames, inventoryApiUrl, inventoryApiUrlV2, inventoryApiUrlV2alpha1, iotManagerBaseURL } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw";
5
5
  //#region src/requestHandlers/deviceHandlers.ts
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_mockData = require("../mockData.cjs");
3
- const require_validation = require("../validation-Dt_HRzma.cjs");
3
+ const require_validation = require("../validation-BOjbro5I.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let msw = require("msw");
6
6
  //#region src/requestHandlers/monitorHandlers.ts
@@ -1,5 +1,5 @@
1
1
  import { mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-D_L48eZA.js";
2
+ import { n as validated } from "../validation-BBytP0OB.js";
3
3
  import { alertChannels, headerNames, monitorApiUrlv1 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw";
5
5
  //#region src/requestHandlers/monitorHandlers.ts
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_mockData = require("../mockData.cjs");
3
- const require_validation = require("../validation-Dt_HRzma.cjs");
3
+ const require_validation = require("../validation-BOjbro5I.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let msw = require("msw");
6
6
  //#region src/requestHandlers/organizationHandlers.ts
@@ -304,7 +304,8 @@ const organizationHandlers = [
304
304
  });
305
305
  }),
306
306
  msw.http.put(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, require_validation.validated(({ params: { configId } }) => new msw.HttpResponse(null, { status: configId ? 200 : 551 }))),
307
- msw.http.delete(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new msw.HttpResponse(null, { status: configId ? 200 : 552 }))
307
+ msw.http.delete(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new msw.HttpResponse(null, { status: configId ? 200 : 552 })),
308
+ msw.http.get(_northern_tech_utils_constants.ssoEndpointsApiUrlv1, () => msw.HttpResponse.json(require_mockData.ssoEndpoint))
308
309
  ];
309
310
  //#endregion
310
311
  exports.organizationHandlers = organizationHandlers;