@northern.tech/testing 0.1.0

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 (84) hide show
  1. package/dist/baseTestConfig.json +24 -0
  2. package/dist/chunk-3KEPLFEG.js +64 -0
  3. package/dist/chunk-3KEPLFEG.js.map +1 -0
  4. package/dist/chunk-4ZCNCVNV.js +309 -0
  5. package/dist/chunk-4ZCNCVNV.js.map +1 -0
  6. package/dist/chunk-5MREOBVU.js +833 -0
  7. package/dist/chunk-5MREOBVU.js.map +1 -0
  8. package/dist/chunk-A7LWVKMZ.js +209 -0
  9. package/dist/chunk-A7LWVKMZ.js.map +1 -0
  10. package/dist/chunk-ERCKCRE4.js +179 -0
  11. package/dist/chunk-ERCKCRE4.js.map +1 -0
  12. package/dist/chunk-HRGVXWMH.js +17 -0
  13. package/dist/chunk-HRGVXWMH.js.map +1 -0
  14. package/dist/chunk-MH5OGHNU.js +29 -0
  15. package/dist/chunk-MH5OGHNU.js.map +1 -0
  16. package/dist/chunk-QSR5PAZ3.js +207 -0
  17. package/dist/chunk-QSR5PAZ3.js.map +1 -0
  18. package/dist/mockData.cjs +866 -0
  19. package/dist/mockData.cjs.map +1 -0
  20. package/dist/mockData.d.cts +558 -0
  21. package/dist/mockData.d.ts +558 -0
  22. package/dist/mockData.js +45 -0
  23. package/dist/mockData.js.map +1 -0
  24. package/dist/requestHandlers/deploymentHandlers.cjs +955 -0
  25. package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -0
  26. package/dist/requestHandlers/deploymentHandlers.d.cts +5 -0
  27. package/dist/requestHandlers/deploymentHandlers.d.ts +5 -0
  28. package/dist/requestHandlers/deploymentHandlers.js +8 -0
  29. package/dist/requestHandlers/deploymentHandlers.js.map +1 -0
  30. package/dist/requestHandlers/deviceHandlers.cjs +1044 -0
  31. package/dist/requestHandlers/deviceHandlers.cjs.map +1 -0
  32. package/dist/requestHandlers/deviceHandlers.d.cts +20 -0
  33. package/dist/requestHandlers/deviceHandlers.d.ts +20 -0
  34. package/dist/requestHandlers/deviceHandlers.js +12 -0
  35. package/dist/requestHandlers/deviceHandlers.js.map +1 -0
  36. package/dist/requestHandlers/monitorHandlers.cjs +775 -0
  37. package/dist/requestHandlers/monitorHandlers.cjs.map +1 -0
  38. package/dist/requestHandlers/monitorHandlers.d.cts +5 -0
  39. package/dist/requestHandlers/monitorHandlers.d.ts +5 -0
  40. package/dist/requestHandlers/monitorHandlers.js +8 -0
  41. package/dist/requestHandlers/monitorHandlers.js.map +1 -0
  42. package/dist/requestHandlers/organizationHandlers.cjs +968 -0
  43. package/dist/requestHandlers/organizationHandlers.cjs.map +1 -0
  44. package/dist/requestHandlers/organizationHandlers.d.cts +5 -0
  45. package/dist/requestHandlers/organizationHandlers.d.ts +5 -0
  46. package/dist/requestHandlers/organizationHandlers.js +8 -0
  47. package/dist/requestHandlers/organizationHandlers.js.map +1 -0
  48. package/dist/requestHandlers/releaseHandlers.cjs +809 -0
  49. package/dist/requestHandlers/releaseHandlers.cjs.map +1 -0
  50. package/dist/requestHandlers/releaseHandlers.d.cts +5 -0
  51. package/dist/requestHandlers/releaseHandlers.d.ts +5 -0
  52. package/dist/requestHandlers/releaseHandlers.js +8 -0
  53. package/dist/requestHandlers/releaseHandlers.js.map +1 -0
  54. package/dist/requestHandlers/requestHandlers.cjs +1712 -0
  55. package/dist/requestHandlers/requestHandlers.cjs.map +1 -0
  56. package/dist/requestHandlers/requestHandlers.d.cts +5 -0
  57. package/dist/requestHandlers/requestHandlers.d.ts +5 -0
  58. package/dist/requestHandlers/requestHandlers.js +35 -0
  59. package/dist/requestHandlers/requestHandlers.js.map +1 -0
  60. package/dist/requestHandlers/userHandlers.cjs +925 -0
  61. package/dist/requestHandlers/userHandlers.cjs.map +1 -0
  62. package/dist/requestHandlers/userHandlers.d.cts +5 -0
  63. package/dist/requestHandlers/userHandlers.d.ts +5 -0
  64. package/dist/requestHandlers/userHandlers.js +8 -0
  65. package/dist/requestHandlers/userHandlers.js.map +1 -0
  66. package/dist/setupTests.cjs +905 -0
  67. package/dist/setupTests.cjs.map +1 -0
  68. package/dist/setupTests.d.cts +75 -0
  69. package/dist/setupTests.d.ts +75 -0
  70. package/dist/setupTests.js +119 -0
  71. package/dist/setupTests.js.map +1 -0
  72. package/dist/theme/light.cjs +41 -0
  73. package/dist/theme/light.cjs.map +1 -0
  74. package/dist/theme/light.d.cts +12 -0
  75. package/dist/theme/light.d.ts +12 -0
  76. package/dist/theme/light.js +7 -0
  77. package/dist/theme/light.js.map +1 -0
  78. package/dist/utils.cjs +41 -0
  79. package/dist/utils.cjs.map +1 -0
  80. package/dist/utils.d.cts +3 -0
  81. package/dist/utils.d.ts +3 -0
  82. package/dist/utils.js +16 -0
  83. package/dist/utils.js.map +1 -0
  84. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"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_RELEASES,\n defaultPermissionSets,\n emptyRole,\n emptyUiPermissions,\n maxSessionAge,\n rolesById,\n scopedPermissionAreas,\n uiPermissionsById\n} from '@northern.tech/utils/constants';\n\nexport const undefineds = /undefined|\\[object Object\\]/;\nexport const menderEnvironment = {\n features: {\n hasMultitenancy: true\n },\n integrationVersion: 'saas-123.34',\n menderVersion: 'next',\n metaMenderVersion: 'saas-123.34',\n services: {\n deploymentsVersion: '1.2.3',\n deviceauthVersion: null,\n inventoryVersion: null\n }\n};\nexport const TEST_SESSION_DATETIME = '2019-01-13T13:00:00.000Z';\nconst testDate = new Date(TEST_SESSION_DATETIME);\nexport const mockDate = new Date(testDate.setMilliseconds(testDate.getMilliseconds() + maxSessionAge));\n\nexport const defaultPassword = 'mysecretpassword!123';\nexport const defaultCreationDate = '2019-01-13T06:25:00.000Z';\nexport const defaultMacAddress = 'dc:a6:32:12:ad:bf';\n\nexport const testSsoId = 'sso_id';\n\nconst permissionSetObjectTypes = {\n any: 'Any',\n artifacts: 'Artifacts',\n empty: '',\n groups: 'Device groups',\n releases: 'Releases',\n tenantManagement: 'Tenant management',\n userManagement: 'User management'\n};\n\nconst commonEndpoints = {\n artifacts: '^/api/management/v1/deployments/artifacts',\n artifactDetails: '^/api/management/v1/deployments/artifacts/[^/]+',\n deviceManagement: '^/api/management/(v[1-9])/(devauth|inventory)/'\n};\n\nexport const token =\n 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjZTNkMGY4Yy1hZWRlLTQwMzAtYjM5MS03ZDUwMjBlYjg3M2UiLCJzdWIiOiJhMzBhNzgwYi1iODQzLTUzNDQtODBlMy0wZmQ5NWE0ZjZmYzMiLCJleHAiOjE2MDY4MTUzNjksImlhdCI6MTYwNjIxMDU2OSwibWVuZGVyLnRlbmFudCI6IjVmODVjMTdiY2U2MmI3ZmE3ZjVmNzA0MCIsIm1lbmRlci51c2VyIjp0cnVlLCJpc3MiOiJNZW5kZXIgVXNlcnMiLCJzY3AiOiJtZW5kZXIuKiIsIm1lbmRlci5wbGFuIjoicHJvZmVzc2lvbmFsIiwibmJmIjoxNjA2MjEwNTY5fQ.qVgYdCzLTf8OdK9uUctqqaY_HWkIiwpekuGvuGQAXCEgOv4bRNDlZRN_ZRSbxQoARG3pquhScbQrjBV9tcF4irTUPlTn3yrsXNO17DpcbTVeKRkb88RDtIKiRw3orVZ_GlIb-ckTQ5dS-Nqlyyf3Fmrhca-gwt6m_xv2UrmJK6eYYTMfggdRRWb-4u7mEkBI_pHPMTQrT8kJ2BeX-vHgazH9AoH0k85LHtFZQXD7pXHlDZRnLxJXukncwMGDmF17374gavYAIyDIzcC8sEBMDnVXgpikeA1sauzirqix6mAVs6XmxdQO7aF0wfXO1_PTYUA3Nk1oQfMYNlEI3U9uLRJRZIq2L8fmrrBryhstKd4y0KlBbGAQrx8NtRkgajjd1ljMfPBUEZrb7uSerVjneiO-aIBO76CuH0zdklphIjpGJeogkBhe8pAYNggp1XsZHgpZfl7IE5faKaDkMGnutaea--Czor6bhqUNCuY4tR0cpQJbNwy6LS9o1CFy4Log';\n\nexport const accessTokens = [\n { id: 'some-id-1', expiration_date: '2022-06-02T11:11:21.725Z', name: 'some-name-1' },\n { id: 'some-id-2', expiration_date: '2022-06-02T11:11:21.725Z', last_used: '2022-06-02T11:05:21.725Z', name: 'some-name-2' }\n];\n\nexport const webhookEvents = [\n {\n id: '1',\n type: 'device-status-changed',\n data: { id: '1', status: 'accepted' },\n time: '2020-09-01T12:00:00.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n },\n {\n id: '2',\n type: 'device-status-changed',\n data: { id: '3', status: 'accepted' },\n time: '2020-09-01T12:00:05.000Z',\n delivery_statuses: [{ integration_id: '1', success: true, status_code: 200 }]\n }\n];\nexport const tenants = [\n {\n id: '671a0f1dd58c813118fe8622',\n parent_tenant_id: '6718de64b42e08dea2a2065d',\n name: 'child2',\n tenant_token: 'mQDYRCr-tGbDuJhPp7fArbfTA5htVTWE9G204AzhDUM',\n status: 'active',\n additional_info: {\n marketing: false,\n campaign: ''\n },\n plan: 'enterprise',\n trial: false,\n trial_expiration: null,\n service_provider: false,\n created_at: '2024-10-24T09:10:53.281Z',\n cancelled_at: null,\n children_tenants: null,\n max_child_tenants: 0,\n device_count: 0,\n device_limit: 100,\n binary_delta: true\n }\n];\n\nexport const adminUserCapabilities = {\n canAuditlog: true,\n canConfigure: true,\n canDeploy: true,\n canManageDevices: true,\n canManageReleases: true,\n canManageUsers: true,\n canReadDeployments: true,\n canReadDevices: true,\n canReadReleases: true,\n canReadUsers: true,\n canTroubleshoot: true,\n canUploadReleases: true,\n canWriteDevices: true\n};\n\nexport const userId = 'a30a780b-b843-5344-80e3-0fd95a4f6fc3';\n\nconst defaultUser = {\n created_ts: '2019-01-01T10:30:00.000Z',\n email: 'a@b.com',\n id: 'a1',\n roles: ['RBAC_ROLE_PERMIT_ALL'],\n tfa_status: 'enabled',\n verified: true\n};\n\nconst deviceTypes = { qemu: 'qemux86-64' };\n\nconst checkInTimeRounded = '2019-01-01T00:00:00.000Z';\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\n\nexport const mockApiResponses = {\n deployments: {\n byId: {\n d1: {\n id: 'd1',\n name: 'test deployment',\n created: '2019-01-01T12:30:00.000Z',\n devices: {\n a1: {\n id: 'a1',\n status: 'installing',\n attributes: {},\n image: { size: 123 }\n }\n },\n statistics: {\n status: {\n 'already-installed': 0,\n decommissioned: 0,\n downloading: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0\n },\n total_size: 1234\n }\n },\n d2: {\n id: 'd2',\n name: 'test deployment 2',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:25:00.000Z',\n device_count: 1,\n devices: {\n b1: {\n attributes: {},\n id: 'b1',\n status: 'pending'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 0,\n noartifact: 0,\n pending: 1,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n }\n }\n },\n d3: {\n id: 'd3',\n name: 'Test',\n phases: [\n { id: '0', batch_size: 2, device_count: 2 },\n { id: '1', start_ts: '2019-02-04T11:45:10.002Z', batch_size: 3, device_count: 3 },\n { id: '2', start_ts: '2019-02-05T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '3', start_ts: '2019-02-06T11:45:10.002Z', batch_size: 5, device_count: 5 },\n { id: '4', start_ts: '2019-02-21T11:45:10.002Z', batch_size: 5, device_count: 0 }\n ],\n max_devices: 0,\n created: '2019-01-31T12:59:30.020Z',\n devices: {},\n filter: undefined,\n group: undefined,\n stats: {\n pending: 3,\n decommissioned: 0,\n failure: 23,\n pause_before_committing: 0,\n pause_before_rebooting: 0,\n installing: 0,\n rebooting: 0,\n 'already-installed': 0,\n pause_before_installing: 0,\n downloading: 0,\n success: 6,\n aborted: 0,\n noartifact: 0\n },\n statistics: { total_size: '1234' },\n status: 'inprogress',\n active: true,\n device_count: 100,\n retries: '0',\n type: 'software'\n }\n },\n byStatus: {\n pending: { deploymentIds: ['d2'] },\n inprogress: { deploymentIds: ['d3'] }\n }\n },\n devices: {\n byId: {\n a1: {\n id: 'a1',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n status: 'accepted',\n ts: defaultCreationDate\n }\n ],\n updated_ts: '2019-01-01T09:25:00.000Z'\n },\n b1: {\n id: 'b1',\n attributes: {\n ipv4_wlan0: '192.168.10.141/24',\n device_type: [deviceTypes.qemu]\n },\n system: {\n check_in_time: checkInTimeRounded\n },\n check_in_time: checkInTimeExact,\n check_in_time_exact: checkInTimeExact,\n check_in_time_rounded: checkInTimeRounded,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n }\n },\n groups: {\n byId: {\n testGroup: {\n deviceIds: ['a1', 'b1'],\n filters: [],\n total: 2\n },\n testGroupDynamic: {\n id: 'filter1',\n name: 'filter1',\n filters: [{ scope: 'system', key: 'group', operator: '$eq', value: 'things' }]\n }\n }\n },\n limit: 500,\n byStatus: {\n accepted: { deviceIds: ['a1', 'b1'], total: 2 },\n active: { deviceIds: [], total: 0 },\n inactive: { deviceIds: [], total: 0 },\n pending: { deviceIds: ['c1'], total: 1 },\n preauthorized: { deviceIds: [], total: 0 },\n rejected: { deviceIds: [], total: 0 }\n }\n },\n organization: {\n organization: {\n id: '1',\n addons: [],\n name: 'test',\n plan: 'os',\n trial: false\n },\n intentId: 'testIntent',\n auditlog: {\n events: [\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'user',\n user: {\n email: 'user@acme.com'\n }\n },\n change: 'change1'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string',\n identity_data: 'string'\n },\n time: '2019-01-01T12:16:22.667Z',\n action: 'create',\n object: {\n id: 'string',\n type: 'deployment',\n deployment: {\n name: 'production',\n artifact_name: 'Application 0.0.1'\n }\n },\n change: 'change2'\n },\n {\n actor: {\n id: 'string',\n type: 'user',\n email: 'string@example.com'\n },\n time: '2019-01-01T12:10:22.669Z',\n action: 'open_terminal',\n meta: {\n session_id: ['abd313a8-ee88-48ab-9c99-fbcd80048e6e']\n },\n object: {\n id: 'a1',\n type: 'device'\n },\n change: 'change3'\n }\n ]\n }\n },\n releases: {\n byId: {\n r1: {\n name: 'r1',\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: 'testtype' }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n metaData: {}\n }\n }\n },\n users: {\n byId: {\n a1: defaultUser,\n [userId]: { ...defaultUser, id: userId, email: 'a2@b.com', created_ts: '2019-01-01T12:30:00.000Z' }\n },\n rolesById: {\n admin: {\n name: 'admin',\n description: 'Administrator role',\n permissions: []\n },\n test: { name: 'test', description: 'test description', permissions: [] }\n },\n globalSettings: {\n '2fa': 'enabled',\n id_attribute: undefined,\n previousFilters: []\n },\n userSettings: {\n '2fa': 'disabled',\n columnSelection: [],\n onboarding: { something: 'here' },\n tooltips: {},\n previousFilters: []\n }\n }\n};\n\nexport const releasesList = Array.from({ length: 5000 }, (x, i) => ({\n artifacts: [\n {\n id: 'art1',\n description: 'test description',\n device_types_compatible: [deviceTypes.qemu],\n modified: '2020-09-10T12:16:22.667Z',\n updates: [{ type_info: 'testtype' }],\n artifact_depends: {\n device_type: [deviceTypes.qemu]\n },\n artifact_provides: {\n artifact_name: 'myapp',\n 'data-partition.myapp.version': 'v2020.10',\n list_of_fancy: [deviceTypes.qemu, 'x172']\n },\n clears_artifact_provides: ['data-partition.myapp.*']\n }\n ],\n device_types_compatible: [deviceTypes.qemu],\n metaData: {},\n name: `release-${i + 1}`,\n modified: i\n}));\n\nexport const permissionSets = [\n {\n ...defaultPermissionSets.Basic,\n object: permissionSetObjectTypes.empty,\n description: 'Set containing basic permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/settings$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/v1/useradm/users/me$' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/1.0/auth/verify$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/v1/useradm/2faverify$' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/useradm/users/me/2fa/(enable|disable)$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/roles' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/user/tenant' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageReleases,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to manage releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadUsers,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user to view other users',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ManageUsers,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.userManagement,\n description: 'Set of permissions which allows user manage other user accounts',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/' } }]\n },\n {\n ...defaultPermissionSets.ReadTenants,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to list other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ManageTenants,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.tenantManagement,\n description: 'Set of permissions which allows user to manage other tenants and their config',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/(v[1-9])/tenantadm/' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9])/tenantadm/' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadAuditLogs,\n action: uiPermissionsById.read.title,\n object: 'System Audit Log',\n description: 'Set of permissions which allows user to view system audit log',\n permissions: [{ action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/auditlogs/logs' } }]\n },\n {\n ...defaultPermissionSets.DeployToDevices,\n action: 'Deploy',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to deploy to devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/(deployments|deviceconfig)/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConfigureDevices,\n action: 'Configure',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage configuration of the devices',\n permissions: [{ action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/' } }],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ConnectToDevices,\n action: 'Connect',\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to use remote terminal and file transfer',\n permissions: [\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/connect$' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/download\\\\?path=[^\\u0026]+$' } },\n { action: 'http', object: { type: 'PUT', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/upload$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.SuperUser,\n action: 'Any',\n object: permissionSetObjectTypes.any,\n description: 'Set of permissions which allows user to do anything',\n permissions: [{ action: 'any', object: { type: 'any', value: 'any' } }]\n },\n {\n ...defaultPermissionSets.UploadArtifacts,\n action: 'Upload',\n object: permissionSetObjectTypes.artifacts,\n description: 'Set of permissions which allows user to upload artifacts',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/deployments/artifacts/generate' } }\n ]\n },\n {\n ...defaultPermissionSets.ReadDevices,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to view devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: '^/api/management/v2/inventory/filters/search' } },\n { action: 'http', object: { type: 'POST', value: '^/api/management/v1/reporting/devices/search' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9])/(deployments|devauth|inventory|deviceconfig|devicemonitor)/' } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+$' } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ManageDevices,\n action: uiPermissionsById.manage.title,\n object: permissionSetObjectTypes.groups,\n description: 'Set of permissions which allows user to manage devices',\n permissions: [\n { action: 'http', object: { type: 'POST', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'PUT', value: commonEndpoints.deviceManagement } },\n { action: 'http', object: { type: 'DELETE', value: commonEndpoints.deviceManagement } }\n ],\n supported_scope_types: [scopedPermissionAreas.groups.scopeType]\n },\n {\n ...defaultPermissionSets.ReadReleases,\n action: uiPermissionsById.read.title,\n object: permissionSetObjectTypes.releases,\n description: 'Set of permissions which allows user to view releases',\n permissions: [\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifacts } },\n { action: 'http', object: { type: 'GET', value: commonEndpoints.artifactDetails } },\n { action: 'http', object: { type: 'GET', value: '^/api/management/v1/deployments/artifacts/[^/]+/download' } }\n ]\n },\n {\n name: 'almostAdmin',\n object: permissionSetObjectTypes.empty,\n description: 'Set containing all the permissions.',\n permissions: [\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/auditlogs/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/config/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deployments/deployments/releases/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/devauth/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconfig/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/deviceconnect/devices' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/inventory/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/iot-manager/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/monitor/.*' } },\n { action: 'http', object: { type: 'any', value: '^/api/management/(v[1-9])/useradm/.*' } }\n ]\n }\n];\n\nexport const rbacRoles = [\n {\n name: 'dyn',\n description: '',\n permissions: [\n { action: 'CREATE_DEPLOYMENT', object: { type: 'DEVICE_GROUP', value: 'dyn' } },\n { action: 'VIEW_DEVICE', object: { type: 'DEVICE_GROUP', value: 'dyn' } }\n ]\n },\n { name: 'asdasd', description: '123', permissions: [{ action: 'http', object: { type: 'any', value: '/api/management/v1/useradm/.*' } }] },\n {\n name: '141sasd',\n description: '1313adg',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } },\n { ...defaultPermissionSets.ManageUsers }\n ]\n },\n {\n name: 'kljlkk',\n description: 'lkl',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['bestgroup'] } }]\n },\n {\n name: 'yyyyy',\n description: 'asd',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ManageDevices, scope: { type: scopedPermissionAreas.groups.scopeType, value: ['dockerclient'] } },\n { ...defaultPermissionSets.ManageReleases }\n ]\n },\n {\n name: 'RBAC_ROLE_DEPLOYMENTS_MANAGER',\n description: 'Intended for users responsible for managing deployments, this role can create and abort deployments',\n permission_sets_with_scope: [{ ...defaultPermissionSets.DeployToDevices }]\n },\n {\n name: 'RBAC_ROLE_REMOTE_TERMINAL',\n description: `Intended for tech support accounts, this role can access the devices' Remote Terminal.`,\n permission_sets_with_scope: [{ ...defaultPermissionSets.ConnectToDevices }]\n },\n { name: 'RBAC_ROLE_PERMIT_ALL', description: '', permission_sets_with_scope: [{ ...defaultPermissionSets.SuperUser }] },\n {\n name: 'RBAC_ROLE_OBSERVER',\n description:\n 'Intended for team leaders or limited tech support accounts, this role can see all Devices, Artifacts and Deployment reports but not make any changes.',\n permission_sets_with_scope: [{ ...defaultPermissionSets.ReadReleases }, { ...defaultPermissionSets.ReadDevices }]\n },\n {\n name: 'RBAC_ROLE_CI',\n description:\n 'Intended for automation accounts building software (e.g. CI/CD systems), this role can only manage Artifacts, including upload new Artifacts and delete Artifacts. It does not have access to Devices or Deployments.',\n permission_sets_with_scope: [\n { ...defaultPermissionSets.ReadReleases },\n { ...defaultPermissionSets.ManageReleases },\n { ...defaultPermissionSets.UploadArtifacts }\n ]\n },\n {\n name: 'almostAdmin',\n description: 'almost admin rights',\n permissions: permissionSets.find(item => item.name === 'almostAdmin')?.permissions\n },\n {\n name: 'almostAdminNew',\n description: 'almost admin rights',\n permission_sets_with_scope: Object.values(defaultPermissionSets)\n }\n];\n\nconst expectedParsedRoles = {\n '141sasd': {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] },\n userManagement: [uiPermissionsById.manage.value]\n }\n },\n asdasd: {\n editable: false,\n isCustom: true,\n uiPermissions: { ...emptyUiPermissions, userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value] }\n },\n dyn: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n deployments: [uiPermissionsById.deploy.value],\n groups: { dyn: [uiPermissionsById.read.value, uiPermissionsById.deploy.value] }\n }\n },\n kljlkk: {\n editable: true,\n isCustom: false,\n uiPermissions: { ...emptyUiPermissions, groups: { bestgroup: [uiPermissionsById.read.value, uiPermissionsById.connect.value] } }\n },\n yyyyy: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { dockerclient: [uiPermissionsById.read.value, uiPermissionsById.manage.value] },\n releases: { [ALL_RELEASES]: [uiPermissionsById.manage.value] }\n }\n },\n almostAdmin: {\n editable: false,\n isCustom: true,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.manage.value, uiPermissionsById.deploy.value, uiPermissionsById.read.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n // we can't assign deployment permissions to devices here, since the old path based rbac controls don't allow the scoped permissions\n // uiPermissionsById.deploy.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.read.value, uiPermissionsById.upload.value, uiPermissionsById.manage.value]\n },\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n },\n almostAdminNew: {\n editable: true,\n isCustom: undefined,\n uiPermissions: {\n ...emptyUiPermissions,\n auditlog: [uiPermissionsById.read.value],\n deployments: [uiPermissionsById.read.value, uiPermissionsById.deploy.value, uiPermissionsById.manage.value],\n groups: {\n [ALL_DEVICES]: [\n uiPermissionsById.read.value,\n uiPermissionsById.manage.value,\n uiPermissionsById.deploy.value,\n uiPermissionsById.connect.value,\n uiPermissionsById.configure.value\n ]\n },\n releases: {\n [ALL_RELEASES]: [uiPermissionsById.manage.value, uiPermissionsById.upload.value, uiPermissionsById.read.value]\n },\n tenantManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value],\n userManagement: [uiPermissionsById.read.value, uiPermissionsById.manage.value]\n }\n }\n};\n\nconst defaultRolesById = {\n ...rolesById,\n test: {\n ...emptyRole,\n name: 'test',\n description: 'test description',\n editable: true,\n uiPermissions: {\n ...emptyUiPermissions,\n groups: { testGroup: [uiPermissionsById.read.value] },\n releases: { bar: [uiPermissionsById.read.value] }\n }\n }\n};\n\nexport const receivedRoles = rbacRoles.reduce(\n (accu, role) => {\n const { name, description, ...roleRemainder } = role;\n if (name.startsWith('RBAC')) {\n accu[name] = {\n ...defaultRolesById[name],\n ...roleRemainder,\n editable: false,\n isCustom: false,\n description: defaultRolesById[name].description ? defaultRolesById[name].description : description\n };\n } else {\n const result = expectedParsedRoles[name] ?? {};\n accu[name] = {\n ...emptyRole,\n ...role,\n ...result,\n name\n };\n }\n return accu;\n },\n { ...defaultRolesById }\n);\n\nexport const receivedPermissionSets = permissionSets.reduce((accu, set) => {\n const result = defaultPermissionSets[set.name]?.result ?? {};\n accu[set.name] = {\n ...set,\n result: {\n ...emptyUiPermissions,\n ...result\n }\n };\n return accu;\n}, {});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,209 @@
1
+ import {
2
+ mockApiResponses
3
+ } from "./chunk-5MREOBVU.js";
4
+
5
+ // src/requestHandlers/deploymentHandlers.ts
6
+ import { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from "@northern.tech/utils/constants";
7
+ import { HttpResponse, http } from "msw";
8
+ var createdDeployment = {
9
+ id: "created-123",
10
+ name: "test deployment",
11
+ artifact_name: "r1",
12
+ artifacts: ["123"],
13
+ created: "2019-01-01T12:30:00.000Z",
14
+ device_count: 1,
15
+ devices: {
16
+ a1: {
17
+ attributes: {},
18
+ id: "a1",
19
+ image: { size: 123 },
20
+ status: "installing"
21
+ }
22
+ },
23
+ filter: void 0,
24
+ group: void 0,
25
+ statistics: {
26
+ status: {
27
+ downloading: 0,
28
+ decommissioned: 0,
29
+ failure: 0,
30
+ installing: 1,
31
+ noartifact: 0,
32
+ pending: 0,
33
+ rebooting: 0,
34
+ success: 0,
35
+ "already-installed": 0
36
+ },
37
+ total_size: 1234
38
+ }
39
+ };
40
+ var defaultDeploymentConfig = {
41
+ delta: {
42
+ enabled: true,
43
+ binary_delta: {
44
+ xdelta_args: {
45
+ disable_checksum: false,
46
+ disable_external_decompression: false,
47
+ compression_level: 6,
48
+ source_window_size: 0,
49
+ input_window_size: 0,
50
+ compression_duplicates_window: 0,
51
+ instruction_buffer_size: 0
52
+ },
53
+ timeout: 0
54
+ },
55
+ binary_delta_limits: {
56
+ xdelta_args_limits: {
57
+ source_window_size: limitDefault,
58
+ input_window_size: limitDefault,
59
+ compression_duplicates_window: limitDefault,
60
+ instruction_buffer_size: limitDefault
61
+ },
62
+ timeout: { min: 60, max: 3600, default: 60 },
63
+ jobs_in_parallel: limitDefault,
64
+ queue_length: limitDefault
65
+ }
66
+ }
67
+ };
68
+ var deploymentHandlers = [
69
+ http.get(
70
+ `${deploymentsApiUrl}/deployments`,
71
+ () => new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {
72
+ headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }
73
+ })
74
+ ),
75
+ http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {
76
+ const { searchParams } = new URL(request.url);
77
+ const releaseName = searchParams.get("name");
78
+ const release = mockApiResponses.releases.byId[releaseName] || {};
79
+ if (releaseName) {
80
+ const { device_types_compatible, ...remainder } = release;
81
+ return Object.keys(remainder).length || releaseName === "createdRelease" ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });
82
+ }
83
+ const releases = Object.values(mockApiResponses.releases.byId).map((stateRelease) => {
84
+ const { device_types_compatible, ...remainder } = stateRelease;
85
+ return remainder;
86
+ });
87
+ return HttpResponse.json(releases);
88
+ }),
89
+ http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {
90
+ if (deploymentId === createdDeployment.id) {
91
+ return HttpResponse.json(createdDeployment);
92
+ } else if (deploymentId === "config1") {
93
+ return HttpResponse.json({
94
+ ...createdDeployment,
95
+ id: "config1",
96
+ created: "2019-01-01T09:25:01.000Z",
97
+ finished: "2019-01-01T09:25:03.000Z",
98
+ status: "finished"
99
+ });
100
+ }
101
+ return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);
102
+ }),
103
+ http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {
104
+ if (deploymentId === createdDeployment.id) {
105
+ return HttpResponse.json(Object.values(createdDeployment.devices));
106
+ } else if (mockApiResponses.deployments.byId[deploymentId]) {
107
+ return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));
108
+ }
109
+ return new HttpResponse(null, { status: 521 });
110
+ }),
111
+ http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {
112
+ const { deployment_ids = [] } = await request.json();
113
+ if (deployment_ids.includes(createdDeployment.id)) {
114
+ return HttpResponse.json([]);
115
+ } else if (deployment_ids.every((id) => mockApiResponses.deployments.byId[id])) {
116
+ const stats = deployment_ids.map((id) => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));
117
+ return HttpResponse.json(stats);
118
+ }
119
+ return new HttpResponse(null, { status: 522 });
120
+ }),
121
+ http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {
122
+ if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {
123
+ return HttpResponse.text("test");
124
+ }
125
+ return new HttpResponse(null, { status: 523 });
126
+ }),
127
+ http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {
128
+ const body = await request.json();
129
+ if (!Object.keys(body).length) {
130
+ return new HttpResponse(JSON.stringify({}), { status: 524 });
131
+ }
132
+ return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
133
+ }),
134
+ http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {
135
+ const { filter_id, devices = [] } = await request.json();
136
+ if (!filter_id || !!devices.length) {
137
+ return new HttpResponse(JSON.stringify({}), { status: 525 });
138
+ }
139
+ return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
140
+ }),
141
+ http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {
142
+ const { filter_id, devices = [] } = await request.json();
143
+ if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {
144
+ return new HttpResponse(JSON.stringify({}), { status: 526 });
145
+ }
146
+ return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
147
+ }),
148
+ http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {
149
+ const { update_control_map } = await request.json();
150
+ if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {
151
+ return new HttpResponse(null, { status: 204 });
152
+ }
153
+ return new HttpResponse(null, { status: 581 });
154
+ }),
155
+ http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {
156
+ const { status } = await request.json();
157
+ return new HttpResponse(JSON.stringify({}), {
158
+ status: status === "aborted" && [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(
159
+ deploymentId
160
+ ) ? 200 : 528
161
+ });
162
+ }),
163
+ http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {
164
+ if (deploymentId === createdDeployment.id) {
165
+ return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {
166
+ headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }
167
+ });
168
+ } else if (mockApiResponses.deployments.byId[deploymentId]) {
169
+ return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {
170
+ headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }
171
+ });
172
+ }
173
+ return new HttpResponse(null, { status: 529 });
174
+ }),
175
+ http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),
176
+ http.put(`${deploymentsApiUrl}/config/binary_delta`, () => new HttpResponse(null, { status: 200 })),
177
+ http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {
178
+ if (deviceId === mockApiResponses.devices.byId.a1.id) {
179
+ return new HttpResponse(
180
+ JSON.stringify([
181
+ {
182
+ id: createdDeployment.id + "something",
183
+ deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: "inprogress" },
184
+ device: {
185
+ created: "2019-01-01T12:35:00.000Z",
186
+ finished: "2019-01-01T12:40:00.000Z",
187
+ status: "noartifact",
188
+ id: "something",
189
+ image: { ...mockApiResponses.releases.byId.r1 }
190
+ },
191
+ log: true,
192
+ attempts: 1,
193
+ delta_job_id: ""
194
+ }
195
+ ]),
196
+ {
197
+ headers: { [headerNames.total]: 34 }
198
+ }
199
+ );
200
+ }
201
+ return new HttpResponse(null, { status: 529 });
202
+ }),
203
+ http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 }))
204
+ ];
205
+
206
+ export {
207
+ deploymentHandlers
208
+ };
209
+ //# sourceMappingURL=chunk-A7LWVKMZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"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';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrl}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {\n const body = await request.json();\n if (!Object.keys(body).length) {\n return new HttpResponse(JSON.stringify({}), { status: 524 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (!filter_id || !!devices.length) {\n return new HttpResponse(JSON.stringify({}), { status: 525 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(`${deploymentsApiUrl}/config/binary_delta`, () => new HttpResponse(null, { status: 200 })),\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];\n"],"mappings":"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","names":[]}
@@ -0,0 +1,179 @@
1
+ import {
2
+ accessTokens,
3
+ defaultPassword,
4
+ mockApiResponses,
5
+ permissionSets,
6
+ rbacRoles,
7
+ testSsoId,
8
+ token,
9
+ userId
10
+ } from "./chunk-5MREOBVU.js";
11
+
12
+ // src/requestHandlers/userHandlers.ts
13
+ import { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from "@northern.tech/utils/constants";
14
+ import { HttpResponse, http } from "msw";
15
+ var userHandlers = [
16
+ http.post(`${useradmApiUrl}/auth/login`, ({ request }) => {
17
+ const authHeader = request.headers.get("authorization");
18
+ const authInfo = atob(authHeader?.split(" ")[1]);
19
+ const [user, password] = authInfo.split(":");
20
+ if (!password) {
21
+ return HttpResponse.json({ id: testSsoId, kind: "sso/saml" });
22
+ } else if (password !== defaultPassword) {
23
+ return new HttpResponse(null, { status: 401 });
24
+ } else if (user.includes("limited")) {
25
+ return new HttpResponse("limitedToken", { headers: { "Content-Type": APPLICATION_JWT_CONTENT_TYPE } });
26
+ } else if (user.includes("2fa")) {
27
+ return new HttpResponse(JSON.stringify({ error: "2fa needed" }), { status: 401 });
28
+ }
29
+ return new HttpResponse(token, { headers: { "Content-Type": APPLICATION_JWT_CONTENT_TYPE } });
30
+ }),
31
+ http.get(`https://hosted.mender.io${useradmApiUrl}/auth/magic/:id`, ({ params: { id } }) => {
32
+ if (id) {
33
+ return new HttpResponse("test", { headers: { "Set-Cookie": "JWT=test" } });
34
+ }
35
+ return new HttpResponse(null, { status: 400 });
36
+ }),
37
+ http.post(`${useradmApiUrl}/auth/logout`, () => new HttpResponse(null, { status: 200 })),
38
+ http.post(`${useradmApiUrl}/auth/password-reset/:status`, async ({ params: { status }, request }) => {
39
+ const { email, secret_hash, password } = await request.json();
40
+ if (!["start", "complete"].includes(status) && ![email, secret_hash, password].some((item) => item)) {
41
+ return new HttpResponse(null, { status: 560 });
42
+ }
43
+ if (status === "start" && email) {
44
+ return new HttpResponse(null, { status: 200 });
45
+ }
46
+ if (status === "complete" && secret_hash && password) {
47
+ return new HttpResponse(null, { status: 200 });
48
+ }
49
+ return new HttpResponse(null, { status: 561 });
50
+ }),
51
+ http.put(`${useradmApiUrl}/2faverify`, async ({ request }) => {
52
+ const { token2fa } = await request.json();
53
+ if (!token2fa) {
54
+ return new HttpResponse(null, { status: 562 });
55
+ }
56
+ return new HttpResponse(null, { status: 200 });
57
+ }),
58
+ http.get(`${useradmApiUrl}/users`, () => HttpResponse.json(Object.values(mockApiResponses.users.byId))),
59
+ http.get(`${useradmApiUrl}/users/me`, ({ request }) => {
60
+ const authHeader = request.headers.get("authorization");
61
+ if (authHeader?.includes("limited")) {
62
+ return new HttpResponse(JSON.stringify({ error: "forbidden by role-based access control" }), { status: 403 });
63
+ }
64
+ return HttpResponse.json(mockApiResponses.users.byId[userId]);
65
+ }),
66
+ http.get(`${useradmApiUrl}/users/:userId`, ({ params: { userId: userId2 } }) => {
67
+ if (userId2 === "me" || mockApiResponses.users.byId[userId2]) {
68
+ const user = userId2 === "me" ? userId : userId2;
69
+ return HttpResponse.json(mockApiResponses.users.byId[user]);
70
+ }
71
+ return new HttpResponse(null, { status: 563 });
72
+ }),
73
+ http.post(`${useradmApiUrl}/users`, async ({ request }) => {
74
+ const { email, password } = await request.json();
75
+ if (email === "test@test.com" || [email, password].every((value) => value)) {
76
+ return HttpResponse.json(mockApiResponses.users.byId.a1);
77
+ }
78
+ return new HttpResponse(null, { status: 564 });
79
+ }),
80
+ http.put(`${useradmApiUrl}/users/:userId`, async ({ params: { userId: userId2 }, request }) => {
81
+ const { email, password, current_password } = await request.json();
82
+ if (current_password === "bad_password") {
83
+ return new HttpResponse(null, { status: 401 });
84
+ }
85
+ if (mockApiResponses.users.byId[userId2] && [email, password].some((value) => Object.values(mockApiResponses.users.byId[userId2]).includes(value)) || email === "test@test.com") {
86
+ return new HttpResponse(null, { status: 200 });
87
+ }
88
+ return new HttpResponse(null, { status: 565 });
89
+ }),
90
+ http.delete(
91
+ `${useradmApiUrl}/users/:userId`,
92
+ ({ params: { userId: userId2 } }) => new HttpResponse(null, { status: mockApiResponses.users.byId[userId2] ? 200 : 566 })
93
+ ),
94
+ http.get(`${useradmApiUrl}/roles`, () => HttpResponse.json(rbacRoles)),
95
+ http.post(`${useradmApiUrl}/roles`, async ({ request }) => {
96
+ const { name, permissions } = await request.json();
97
+ if ([name, permissions].every((value) => value) && permissions.every((permission) => permission.action && permission.object && permission.object.type && permission.object.value)) {
98
+ return new HttpResponse(null, { status: 200 });
99
+ }
100
+ return new HttpResponse(null, { status: 567 });
101
+ }),
102
+ http.put(`${useradmApiUrl}/roles/:roleId`, async ({ params: { roleId }, request }) => {
103
+ const { description, name, permissions } = await request.json();
104
+ if (mockApiResponses.users.rolesById[roleId] && [description, name, permissions].some((value) => value)) {
105
+ return new HttpResponse(null, { status: 200 });
106
+ }
107
+ return new HttpResponse(null, { status: 568 });
108
+ }),
109
+ http.delete(
110
+ `${useradmApiUrl}/roles/:roleId`,
111
+ ({ params: { roleId } }) => new HttpResponse(null, { status: mockApiResponses.users.rolesById[roleId] ? 200 : 569 })
112
+ ),
113
+ http.get(`${useradmApiUrlv2}/roles`, () => HttpResponse.json(rbacRoles)),
114
+ http.get(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId } }) => {
115
+ if (mockApiResponses.users.rolesById[roleId]) {
116
+ return HttpResponse.json(mockApiResponses.users.rolesById[roleId]);
117
+ }
118
+ return new HttpResponse(null, { status: 571 });
119
+ }),
120
+ http.post(`${useradmApiUrlv2}/roles`, async ({ request }) => {
121
+ const { name, permission_sets_with_scope } = await request.json();
122
+ if (!!name && permission_sets_with_scope.every((permission) => permission.name && permissionSets.find((permissionSet) => permissionSet.name === permission.name))) {
123
+ return new HttpResponse(null, { status: 200 });
124
+ }
125
+ return new HttpResponse(null, { status: 572 });
126
+ }),
127
+ http.put(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId }, request }) => {
128
+ const { description, name, permission_sets_with_scope } = await request.json();
129
+ if (mockApiResponses.users.rolesById[roleId] && [description, name, permission_sets_with_scope].some((value) => value)) {
130
+ return new HttpResponse(null, { status: 200 });
131
+ }
132
+ return new HttpResponse(null, { status: 573 });
133
+ }),
134
+ http.delete(`${useradmApiUrlv2}/roles/:roleId`, ({ params: { roleId } }) => {
135
+ if (mockApiResponses.users.rolesById[roleId]) {
136
+ return new HttpResponse(null, { status: 200 });
137
+ }
138
+ return new HttpResponse(null, { status: 574 });
139
+ }),
140
+ http.get(`${useradmApiUrl}/settings`, () => HttpResponse.json(mockApiResponses.users.globalSettings)),
141
+ http.post(`${useradmApiUrl}/settings`, () => new HttpResponse(null, { status: 200 })),
142
+ http.get(`${useradmApiUrl}/settings/me`, () => HttpResponse.json(mockApiResponses.users.userSettings)),
143
+ http.post(`${useradmApiUrl}/settings/me`, () => new HttpResponse(null, { status: 200 })),
144
+ http.get(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json(accessTokens)),
145
+ http.post(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json("aNewToken")),
146
+ http.delete(
147
+ `${useradmApiUrl}/settings/tokens/:tokenId`,
148
+ ({ params: { tokenId } }) => new HttpResponse(null, { status: tokenId === "some-id-1" ? 200 : 577 })
149
+ ),
150
+ http.get(`${useradmApiUrl}/2faqr`, () => HttpResponse.json({ qr: btoa("test") })),
151
+ http.post(`${useradmApiUrl}/users/:userId/2fa/enable`, ({ params: { userId: userId2 } }) => {
152
+ if (mockApiResponses.users.byId[userId2] || userId2 === "me") {
153
+ return new HttpResponse(null, { status: 200 });
154
+ }
155
+ return new HttpResponse(null, { status: 570 });
156
+ }),
157
+ http.post(`${useradmApiUrl}/users/:userId/2fa/disable`, ({ params: { userId: userId2 } }) => {
158
+ if (mockApiResponses.users.byId[userId2] || userId2 === "me") {
159
+ return new HttpResponse(null, { status: 200 });
160
+ }
161
+ return new HttpResponse(null, { status: 571 });
162
+ }),
163
+ http.post(`${useradmApiUrl}/auth/verify-email/start`, () => new HttpResponse(null, { status: 200 })),
164
+ http.post(`${useradmApiUrl}/auth/verify-email/complete`, async ({ request }) => {
165
+ const { secret_hash } = await request.json();
166
+ return new HttpResponse(null, { status: secret_hash === "superSecret" ? 200 : 576 });
167
+ }),
168
+ http.get(`${useradmApiUrlv2}/permission_sets`, () => HttpResponse.json(permissionSets)),
169
+ http.post(`${useradmApiUrl}/users/:userId/assign`, async ({ request }) => {
170
+ const { tenant_ids } = await request.json();
171
+ return new HttpResponse(null, { status: tenant_ids.length ? 200 : 577 });
172
+ }),
173
+ http.get(`${useradmApiUrl}/users/tenants/:tenantId/token`, () => HttpResponse.text("differentToken"))
174
+ ];
175
+
176
+ export {
177
+ userHandlers
178
+ };
179
+ //# sourceMappingURL=chunk-ERCKCRE4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/requestHandlers/userHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { accessTokens, defaultPassword, userId as defaultUserId, mockApiResponses, permissionSets, rbacRoles, testSsoId, token } from '../mockData';\n\nexport const userHandlers = [\n http.post(`${useradmApiUrl}/auth/login`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n const authInfo = atob(authHeader?.split(' ')[1]);\n const [user, password] = authInfo.split(':');\n\n if (!password) {\n return HttpResponse.json({ id: testSsoId, kind: 'sso/saml' });\n } else if (password !== defaultPassword) {\n return new HttpResponse(null, { status: 401 });\n } else if (user.includes('limited')) {\n return new HttpResponse('limitedToken', { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n } else if (user.includes('2fa')) {\n return new HttpResponse(JSON.stringify({ error: '2fa needed' }), { status: 401 });\n }\n\n return new HttpResponse(token, { headers: { 'Content-Type': APPLICATION_JWT_CONTENT_TYPE } });\n }),\n http.get(`https://hosted.mender.io${useradmApiUrl}/auth/magic/:id`, ({ params: { id } }) => {\n if (id) {\n return new HttpResponse('test', { headers: { 'Set-Cookie': 'JWT=test' } });\n }\n return new HttpResponse(null, { status: 400 });\n }),\n http.post(`${useradmApiUrl}/auth/logout`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/password-reset/:status`, async ({ params: { status }, request }) => {\n const { email, secret_hash, password } = await request.json();\n if (!['start', 'complete'].includes(status) && ![email, secret_hash, password].some(item => item)) {\n return new HttpResponse(null, { status: 560 });\n }\n if (status === 'start' && email) {\n return new HttpResponse(null, { status: 200 });\n }\n if (status === 'complete' && secret_hash && password) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 561 });\n }),\n http.put(`${useradmApiUrl}/2faverify`, async ({ request }) => {\n const { token2fa } = await request.json();\n if (!token2fa) {\n return new HttpResponse(null, { status: 562 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${useradmApiUrl}/users`, () => HttpResponse.json(Object.values(mockApiResponses.users.byId))),\n http.get(`${useradmApiUrl}/users/me`, ({ request }) => {\n const authHeader = request.headers.get('authorization');\n if (authHeader?.includes('limited')) {\n return new HttpResponse(JSON.stringify({ error: 'forbidden by role-based access control' }), { status: 403 });\n }\n return HttpResponse.json(mockApiResponses.users.byId[defaultUserId]);\n }),\n http.get(`${useradmApiUrl}/users/:userId`, ({ params: { userId } }) => {\n if (userId === 'me' || mockApiResponses.users.byId[userId]) {\n const user = userId === 'me' ? defaultUserId : userId;\n return HttpResponse.json(mockApiResponses.users.byId[user]);\n }\n return new HttpResponse(null, { status: 563 });\n }),\n http.post(`${useradmApiUrl}/users`, async ({ request }) => {\n const { email, password } = await request.json();\n if (email === 'test@test.com' || [email, password].every(value => value)) {\n return HttpResponse.json(mockApiResponses.users.byId.a1);\n }\n return new HttpResponse(null, { status: 564 });\n }),\n http.put(`${useradmApiUrl}/users/:userId`, async ({ params: { userId }, request }) => {\n const { email, password, current_password } = await request.json();\n if (current_password === 'bad_password') {\n return new HttpResponse(null, { status: 401 });\n }\n if (\n (mockApiResponses.users.byId[userId] && [email, password].some(value => Object.values(mockApiResponses.users.byId[userId]).includes(value))) ||\n email === 'test@test.com'\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 565 });\n }),\n http.delete(\n `${useradmApiUrl}/users/:userId`,\n ({ params: { userId } }) => new HttpResponse(null, { status: mockApiResponses.users.byId[userId] ? 200 : 566 })\n ),\n http.get(`${useradmApiUrl}/roles`, () => HttpResponse.json(rbacRoles)),\n http.post(`${useradmApiUrl}/roles`, async ({ request }) => {\n const { name, permissions } = await request.json();\n if (\n [name, permissions].every(value => value) &&\n permissions.every(permission => permission.action && permission.object && permission.object.type && permission.object.value)\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 567 });\n }),\n http.put(`${useradmApiUrl}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permissions } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permissions].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 568 });\n }),\n http.delete(\n `${useradmApiUrl}/roles/:roleId`,\n ({ params: { roleId } }) => new HttpResponse(null, { status: mockApiResponses.users.rolesById[roleId] ? 200 : 569 })\n ),\n http.get(`${useradmApiUrlv2}/roles`, () => HttpResponse.json(rbacRoles)),\n http.get(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return HttpResponse.json(mockApiResponses.users.rolesById[roleId]);\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrlv2}/roles`, async ({ request }) => {\n const { name, permission_sets_with_scope } = await request.json();\n if (\n !!name &&\n permission_sets_with_scope.every(permission => permission.name && permissionSets.find(permissionSet => permissionSet.name === permission.name))\n ) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 572 });\n }),\n http.put(`${useradmApiUrlv2}/roles/:roleId`, async ({ params: { roleId }, request }) => {\n const { description, name, permission_sets_with_scope } = await request.json();\n if (mockApiResponses.users.rolesById[roleId] && [description, name, permission_sets_with_scope].some(value => value)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 573 });\n }),\n http.delete(`${useradmApiUrlv2}/roles/:roleId`, ({ params: { roleId } }) => {\n if (mockApiResponses.users.rolesById[roleId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 574 });\n }),\n http.get(`${useradmApiUrl}/settings`, () => HttpResponse.json(mockApiResponses.users.globalSettings)),\n http.post(`${useradmApiUrl}/settings`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/me`, () => HttpResponse.json(mockApiResponses.users.userSettings)),\n http.post(`${useradmApiUrl}/settings/me`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json(accessTokens)),\n http.post(`${useradmApiUrl}/settings/tokens`, () => HttpResponse.json('aNewToken')),\n http.delete(\n `${useradmApiUrl}/settings/tokens/:tokenId`,\n ({ params: { tokenId } }) => new HttpResponse(null, { status: tokenId === 'some-id-1' ? 200 : 577 })\n ),\n http.get(`${useradmApiUrl}/2faqr`, () => HttpResponse.json({ qr: btoa('test') })),\n http.post(`${useradmApiUrl}/users/:userId/2fa/enable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 570 });\n }),\n http.post(`${useradmApiUrl}/users/:userId/2fa/disable`, ({ params: { userId } }) => {\n if (mockApiResponses.users.byId[userId] || userId === 'me') {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 571 });\n }),\n http.post(`${useradmApiUrl}/auth/verify-email/start`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${useradmApiUrl}/auth/verify-email/complete`, async ({ request }) => {\n const { secret_hash } = await request.json();\n return new HttpResponse(null, { status: secret_hash === 'superSecret' ? 200 : 576 });\n }),\n http.get(`${useradmApiUrlv2}/permission_sets`, () => HttpResponse.json(permissionSets)),\n http.post(`${useradmApiUrl}/users/:userId/assign`, async ({ request }) => {\n const { tenant_ids } = await request.json();\n return new HttpResponse(null, { status: tenant_ids.length ? 200 : 577 });\n }),\n http.get(`${useradmApiUrl}/users/tenants/:tenantId/token`, () => HttpResponse.text('differentToken'))\n];\n"],"mappings":"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","names":["userId"]}
@@ -0,0 +1,17 @@
1
+ // src/theme/light.ts
2
+ var palette = {
3
+ border: {
4
+ main: "#e3e3e3"
5
+ },
6
+ tooltip: {
7
+ tierTipBackground: "#f7fafb"
8
+ }
9
+ };
10
+ var light = {
11
+ palette
12
+ };
13
+
14
+ export {
15
+ light
16
+ };
17
+ //# sourceMappingURL=chunk-HRGVXWMH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/light.ts"],"sourcesContent":["// Copyright 2022 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\nconst palette = {\n border: {\n main: '#e3e3e3'\n },\n tooltip: {\n tierTipBackground: '#f7fafb'\n }\n};\n\nexport const light = {\n palette\n};\n"],"mappings":";AAcA,IAAM,UAAU;AAAA,EACd,QAAQ;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,mBAAmB;AAAA,EACrB;AACF;AAEO,IAAM,QAAQ;AAAA,EACnB;AACF;","names":[]}