@northern.tech/testing 0.13.2 → 0.13.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"deviceHandlers.js","names":[],"sources":["../../src/requestHandlers/deviceHandlers.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 {\n DEVICE_FILTERING_OPTIONS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL\n} from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { defaultCreationDate, defaultMacAddress, mockApiResponses } from '../mockData';\nimport { validated } from './validation';\n\nexport const defaultDeviceId = 'a1';\n\nconst deviceAuthDevice = {\n id: defaultDeviceId,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n};\n\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst updatedTime = '2019-01-01T09:25:00.000Z';\n\nexport const inventoryDevice = {\n id: defaultDeviceId,\n attributes: [\n { name: 'network_interfaces', value: ['eth0', 'wlan0'], scope: 'inventory' },\n { name: 'kernel', value: 'Linux version 4.19.75-v7l+', scope: 'inventory' },\n { name: 'artifact_name', value: 'raspotifyInstaller', scope: 'inventory' },\n { name: 'ipv6_wlan0', value: 'fe80::68d9:8453:3e9c:7c80/64', scope: 'inventory' },\n { name: 'mac_eth0', value: defaultMacAddress, scope: 'inventory' },\n { name: 'rootfs_type', value: 'ext4', scope: 'inventory' },\n { name: 'mender_bootloader_integration', value: 'unknown', scope: 'inventory' },\n { name: 'cpu_model', value: 'ARMv7 Processor rev 3 (v7l)', scope: 'inventory' },\n { name: 'hostname', value: 'raspberrypi', scope: 'inventory' },\n { name: 'mender_client_version', value: '2.1.0', scope: 'inventory' },\n { name: 'ipv4_wlan0', value: '192.168.10.141/24', scope: 'inventory' },\n { name: 'device_type', value: 'raspberrypi4', scope: 'inventory' },\n { name: 'mem_total_kB', value: '1986024', scope: 'inventory' },\n { name: 'mac_wlan0', value: 'dc:a6:32:12:ad:c0', scope: 'inventory' },\n { name: 'os', value: 'Raspbian GNU/Linux 10 (buster)', scope: 'inventory' },\n { name: 'created_ts', value: defaultCreationDate, scope: 'system' },\n { name: 'updated_ts', value: updatedTime, scope: 'system' },\n { name: 'status', value: 'accepted', scope: 'identity' },\n { name: 'mac', value: defaultMacAddress, scope: 'identity' },\n { name: 'group', value: 'test', scope: 'system' }\n ],\n check_in_time: checkInTimeExact,\n updated_ts: updatedTime\n};\n\nconst deviceAttributes = [\n { name: 'status', scope: 'identity', count: 5 },\n { name: 'created_ts', scope: 'system', count: 5 },\n { name: 'updated_ts', scope: 'system', count: 5 },\n { name: 'mac', scope: 'identity', count: 1 },\n { name: 'artifact_name', scope: 'inventory', count: 1 },\n { name: 'cpu_model', scope: 'inventory', count: 1 },\n { name: 'device_type', scope: 'inventory', count: 1 },\n { name: 'hostname', scope: 'inventory', count: 1 },\n { name: 'ipv4_wlan0', scope: 'inventory', count: 1 },\n { name: 'ipv6_wlan0', scope: 'inventory', count: 1 },\n { name: 'kernel', scope: 'inventory', count: 1 },\n { name: 'mac_eth0', scope: 'inventory', count: 1 },\n { name: 'mac_wlan0', scope: 'inventory', count: 1 },\n { name: 'mem_total_kB', scope: 'inventory', count: 1 },\n { name: 'mender_bootloader_integration', scope: 'inventory', count: 1 },\n { name: 'mender_client_version', scope: 'inventory', count: 1 },\n { name: 'network_interfaces', scope: 'inventory', count: 1 },\n { name: 'os', scope: 'inventory', count: 1 },\n { name: 'rootfs_type', scope: 'inventory', count: 1 },\n { name: 'group', scope: 'system', count: 1 }\n];\n\nconst searchHandler = validated(async ({ request }) => {\n const { page, per_page, filters } = await request.json();\n if ([page, per_page, filters].some(item => !item)) {\n return new HttpResponse(null, { status: 509 });\n }\n const filter = filters.find(filter => filter.scope === 'identity' && filter.attribute === 'status' && Object.values(DEVICE_STATES).includes(filter.value));\n const status = filter?.value || '';\n if (!status || filters.length > 1) {\n if (filters.find(filter => filter.attribute === 'group' && filter.value.includes(Object.keys(mockApiResponses.devices.groups.byId)[0]))) {\n return new HttpResponse(JSON.stringify([inventoryDevice, { ...inventoryDevice, id: 'b1' }]), {\n headers: { [headerNames.total]: 2 }\n });\n }\n if (filters.find(filter => filter.scope === 'monitor' && ['failed_last_update', 'alerts', 'auth_request'].includes(filter.attribute))) {\n return new HttpResponse(JSON.stringify([inventoryDevice]), { headers: { [headerNames.total]: 4 } });\n }\n return new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 0 } });\n }\n let deviceList = Array.from({ length: mockApiResponses.devices.byStatus[status].total }, (_, index) => ({\n ...inventoryDevice,\n attributes: [...inventoryDevice.attributes, { name: 'test-count', value: index, scope: 'system' }],\n id: `${String.fromCharCode('a'.charCodeAt(0) + index)}1`\n }));\n deviceList = deviceList.slice((page - 1) * per_page, page * per_page);\n return new HttpResponse(JSON.stringify(deviceList), { headers: { [headerNames.total]: mockApiResponses.devices.byStatus[status].total } });\n});\n\nexport const deviceHandlers = [\n http.delete(`${deviceAuthV2}/devices/:deviceId/auth/:authId`, ({ params: { authId, deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 501 });\n }),\n http.delete(`${deviceAuthV2}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 502 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group`, ({ params: { group } }) => {\n if (mockApiResponses.devices.groups.byId[group]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.delete(\n `${inventoryApiUrl}/groups/:group/devices`,\n validated(async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (mockApiResponses.devices.groups.byId[group] && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 503 });\n })\n ),\n http.delete(`${inventoryApiUrlV2}/filters/:filterId`, ({ params: { filterId } }) => {\n if (Object.values(mockApiResponses.devices.groups.byId).find(group => group.id === filterId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 504 });\n }),\n http.get(`${deviceAuthV2}/devices`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const deviceIds = searchParams.getAll('id');\n if (deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return HttpResponse.json(deviceIds.map(id => ({ ...deviceAuthDevice, id })));\n }\n return new HttpResponse(null, { status: 505 });\n }),\n http.get(`${deviceAuthV2}/limits/devices`, () => HttpResponse.json(mockApiResponses.devices.limits)),\n http.get(`${inventoryApiUrl}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json(inventoryDevice);\n }\n return new HttpResponse(null, { status: 506 });\n }),\n http.put(\n `${inventoryApiUrl}/devices/:deviceId/tags`,\n validated(async ({ params: { deviceId }, request }) => {\n const tags = await request.json();\n if (!mockApiResponses.devices.byId[deviceId] && !Array.isArray(tags) && !tags.every(item => item.name && item.value)) {\n return new HttpResponse(null, { status: 506 });\n }\n return HttpResponse.json(tags);\n })\n ),\n http.get(`${inventoryApiUrl}/groups`, () => {\n const groups = Object.entries(mockApiResponses.devices.groups.byId).reduce((accu, [groupName, group]) => {\n if (!group.id) {\n accu.push(groupName);\n }\n return accu;\n }, []);\n return HttpResponse.json(groups);\n }),\n http.get(`${inventoryApiUrlV2}/filters/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.get(`${inventoryApiUrlV2}/filters`, () =>\n HttpResponse.json([\n {\n id: 'filter1',\n name: 'testGroupDynamic',\n terms: [\n { scope: 'identity', attribute: 'id', type: '$in', value: [defaultDeviceId] },\n { scope: 'identity', attribute: 'mac', type: '$exists', value: false },\n { scope: 'identity', attribute: 'kernel', type: '$exists', value: true }\n ]\n }\n ])\n ),\n http.patch(\n `${inventoryApiUrl}/groups/:group/devices`,\n validated(async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (!!group && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 508 });\n })\n ),\n http.post(\n `${deviceAuthV2}/devices`,\n validated(async ({ request }) => {\n const authset = await request.json();\n if (\n Object.values(mockApiResponses.devices.byId).some(device =>\n device.auth_sets.some(deviceAuthSet => deviceAuthSet.pubkey == authset.pubkey || deviceAuthSet.identity_data == authset.identity_data)\n )\n ) {\n return new HttpResponse(null, { status: 409 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.post(`${inventoryApiUrlV2}/filters/search`, searchHandler),\n http.post(\n `${inventoryApiUrlV2}/filters`,\n validated(async ({ request }) => {\n const { name, terms } = await request.json();\n if (\n [name, terms].some(item => !item) ||\n mockApiResponses.devices.groups[name] ||\n !terms.every(\n term => DEVICE_FILTERING_OPTIONS[term.type] && ['identity', 'inventory', 'system'].includes(term.scope) && !!term.value && !!term.attribute\n )\n ) {\n return new HttpResponse(null, { status: 510 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: 'find/me/here/createdFilterId' } });\n })\n ),\n http.get(`${inventoryApiUrlV2}/statistics`, async () =>\n HttpResponse.json({\n devices_by_status: {\n accepted: { standard: mockApiResponses.devices.byStatus.accepted.total, micro: 0, system: 0 },\n pending: { standard: mockApiResponses.devices.byStatus.pending.total, micro: 0, system: 0 }\n }\n })\n ),\n http.put(\n `${deviceAuthV2}/devices/:deviceId/auth/:authId/status`,\n validated(async ({ params: { authId, deviceId }, request }) => {\n const { status } = await request.json();\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId) && DEVICE_STATES[status]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 511 });\n })\n ),\n http.get(`${deviceConfig}/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({\n configured: { test: true, something: 'else', aNumber: 42 },\n deployment_id: 'config1',\n reported: { test: true, something: 'else', aNumber: 42 },\n updated_ts: updatedTime,\n reported_ts: '2019-01-01T09:25:01.000Z'\n });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.put(\n `${deviceConfig}/:deviceId`,\n validated(async ({ params: { deviceId }, request }) => {\n const body = await request.text();\n if (body.includes('evilValue')) {\n return new HttpResponse(null, { status: 418 });\n }\n return new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 201 : 513 });\n })\n ),\n http.post(\n `${deviceConfig}/:deviceId/deploy`,\n validated(({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: 'config1' });\n }\n return new HttpResponse(null, { status: 514 });\n })\n ),\n http.get(`${deviceConnect}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ status: 'connected', updated_ts: mockApiResponses.devices.byId[deviceId].updated_ts });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.post(\n `${deviceConnect}/devices/:deviceId/:action`,\n validated(({ params: { deviceId, action } }) => {\n if (['check-update', 'send-inventory'].includes(action) && mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 202 });\n }\n return new HttpResponse(null, { status: 518 });\n })\n ),\n http.get(`${iotManagerBaseURL}/devices/:deviceId/state`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.put(\n `${iotManagerBaseURL}/devices/:deviceId/state/:integrationId`,\n validated(async ({ params: { deviceId }, request }) => {\n const body = await request.json();\n if (mockApiResponses.devices.byId[deviceId] && body) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 516 });\n })\n ),\n http.put(\n `${deviceConnect}/devices/:deviceId/upload`,\n validated(({ params: { deviceId } }) => new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 200 : 517 }))\n ),\n http.get(`${deviceAuthV2}/license`, () => HttpResponse.text('test,report'))\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"deviceHandlers.js","names":[],"sources":["../../src/requestHandlers/deviceHandlers.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 {\n DEVICE_FILTERING_OPTIONS,\n DEVICE_STATES,\n deviceAuthV2,\n deviceConfig,\n deviceConnect,\n headerNames,\n inventoryApiUrl,\n inventoryApiUrlV2,\n iotManagerBaseURL\n} from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { defaultCreationDate, defaultMacAddress, mockApiResponses } from '../mockData';\nimport { validated } from './validation';\n\nexport const defaultDeviceId = 'a1';\n\nconst deviceAuthDevice = {\n id: defaultDeviceId,\n identity_data: { mac: defaultMacAddress },\n status: 'accepted',\n decommissioning: false,\n created_ts: defaultCreationDate,\n updated_ts: '2019-01-01T09:25:00.000Z',\n auth_sets: [\n {\n id: 'auth1',\n identity_data: { mac: defaultMacAddress },\n pubkey: '-----BEGIN PUBLIC KEY-----\\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\\n-----END PUBLIC KEY-----\\n',\n ts: defaultCreationDate,\n status: 'accepted'\n }\n ]\n};\n\nconst checkInTimeExact = '2019-01-01T10:25:00.000Z';\nconst updatedTime = '2019-01-01T09:25:00.000Z';\n\nexport const inventoryDevice = {\n id: defaultDeviceId,\n attributes: [\n { name: 'network_interfaces', value: ['eth0', 'wlan0'], scope: 'inventory' },\n { name: 'kernel', value: 'Linux version 4.19.75-v7l+', scope: 'inventory' },\n { name: 'artifact_name', value: 'raspotifyInstaller', scope: 'inventory' },\n { name: 'ipv6_wlan0', value: 'fe80::68d9:8453:3e9c:7c80/64', scope: 'inventory' },\n { name: 'mac_eth0', value: defaultMacAddress, scope: 'inventory' },\n { name: 'rootfs_type', value: 'ext4', scope: 'inventory' },\n { name: 'mender_bootloader_integration', value: 'unknown', scope: 'inventory' },\n { name: 'cpu_model', value: 'ARMv7 Processor rev 3 (v7l)', scope: 'inventory' },\n { name: 'hostname', value: 'raspberrypi', scope: 'inventory' },\n { name: 'mender_client_version', value: '2.1.0', scope: 'inventory' },\n { name: 'ipv4_wlan0', value: '192.168.10.141/24', scope: 'inventory' },\n { name: 'device_type', value: 'raspberrypi4', scope: 'inventory' },\n { name: 'mem_total_kB', value: '1986024', scope: 'inventory' },\n { name: 'mac_wlan0', value: 'dc:a6:32:12:ad:c0', scope: 'inventory' },\n { name: 'os', value: 'Raspbian GNU/Linux 10 (buster)', scope: 'inventory' },\n { name: 'created_ts', value: defaultCreationDate, scope: 'system' },\n { name: 'updated_ts', value: updatedTime, scope: 'system' },\n { name: 'status', value: 'accepted', scope: 'identity' },\n { name: 'mac', value: defaultMacAddress, scope: 'identity' },\n { name: 'group', value: 'test', scope: 'system' }\n ],\n check_in_time: checkInTimeExact,\n updated_ts: updatedTime\n};\n\nconst deviceAttributes = [\n { name: 'status', scope: 'identity', count: 5 },\n { name: 'created_ts', scope: 'system', count: 5 },\n { name: 'updated_ts', scope: 'system', count: 5 },\n { name: 'mac', scope: 'identity', count: 1 },\n { name: 'artifact_name', scope: 'inventory', count: 1 },\n { name: 'cpu_model', scope: 'inventory', count: 1 },\n { name: 'device_type', scope: 'inventory', count: 1 },\n { name: 'hostname', scope: 'inventory', count: 1 },\n { name: 'ipv4_wlan0', scope: 'inventory', count: 1 },\n { name: 'ipv6_wlan0', scope: 'inventory', count: 1 },\n { name: 'kernel', scope: 'inventory', count: 1 },\n { name: 'mac_eth0', scope: 'inventory', count: 1 },\n { name: 'mac_wlan0', scope: 'inventory', count: 1 },\n { name: 'mem_total_kB', scope: 'inventory', count: 1 },\n { name: 'mender_bootloader_integration', scope: 'inventory', count: 1 },\n { name: 'mender_client_version', scope: 'inventory', count: 1 },\n { name: 'network_interfaces', scope: 'inventory', count: 1 },\n { name: 'os', scope: 'inventory', count: 1 },\n { name: 'rootfs_type', scope: 'inventory', count: 1 },\n { name: 'group', scope: 'system', count: 1 }\n];\n\nconst searchHandler = validated(async ({ request }) => {\n const { page, per_page, filters } = await request.json();\n if ([page, per_page, filters].some(item => !item)) {\n return new HttpResponse(null, { status: 509 });\n }\n const filter = filters.find(filter => filter.scope === 'identity' && filter.attribute === 'status' && Object.values(DEVICE_STATES).includes(filter.value));\n const status = filter?.value || '';\n if (!status || filters.length > 1) {\n if (filters.find(filter => filter.attribute === 'group' && filter.value.includes(Object.keys(mockApiResponses.devices.groups.byId)[0]))) {\n return new HttpResponse(JSON.stringify([inventoryDevice, { ...inventoryDevice, id: 'b1' }]), {\n headers: { [headerNames.total]: 2 }\n });\n }\n if (filters.find(filter => filter.scope === 'monitor' && ['failed_last_update', 'alerts', 'auth_request'].includes(filter.attribute))) {\n return new HttpResponse(JSON.stringify([inventoryDevice]), { headers: { [headerNames.total]: 4 } });\n }\n if (filters.find(filter => filter.scope === 'system' && filter.attribute === 'test_device')) {\n return new HttpResponse(JSON.stringify([inventoryDevice]), { headers: { [headerNames.total]: 3 } });\n }\n return new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 0 } });\n }\n let deviceList = Array.from({ length: mockApiResponses.devices.byStatus[status].total }, (_, index) => ({\n ...inventoryDevice,\n attributes: [...inventoryDevice.attributes, { name: 'test-count', value: index, scope: 'system' }],\n id: `${String.fromCharCode('a'.charCodeAt(0) + index)}1`\n }));\n deviceList = deviceList.slice((page - 1) * per_page, page * per_page);\n return new HttpResponse(JSON.stringify(deviceList), { headers: { [headerNames.total]: mockApiResponses.devices.byStatus[status].total } });\n});\n\nexport const deviceHandlers = [\n http.delete(`${deviceAuthV2}/devices/:deviceId/auth/:authId`, ({ params: { authId, deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 501 });\n }),\n http.delete(`${deviceAuthV2}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 502 });\n }),\n http.delete(`${inventoryApiUrl}/groups/:group`, ({ params: { group } }) => {\n if (mockApiResponses.devices.groups.byId[group]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.delete(\n `${inventoryApiUrl}/groups/:group/devices`,\n validated(async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (mockApiResponses.devices.groups.byId[group] && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 503 });\n })\n ),\n http.delete(`${inventoryApiUrlV2}/filters/:filterId`, ({ params: { filterId } }) => {\n if (Object.values(mockApiResponses.devices.groups.byId).find(group => group.id === filterId)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 504 });\n }),\n http.get(`${deviceAuthV2}/devices`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const deviceIds = searchParams.getAll('id');\n if (deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return HttpResponse.json(deviceIds.map(id => ({ ...deviceAuthDevice, id })));\n }\n return new HttpResponse(null, { status: 505 });\n }),\n http.get(`${deviceAuthV2}/limits/devices`, () => HttpResponse.json(mockApiResponses.devices.limits)),\n http.get(`${inventoryApiUrl}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json(inventoryDevice);\n }\n return new HttpResponse(null, { status: 506 });\n }),\n http.put(\n `${inventoryApiUrl}/devices/:deviceId/tags`,\n validated(async ({ params: { deviceId }, request }) => {\n const tags = await request.json();\n if (!mockApiResponses.devices.byId[deviceId] && !Array.isArray(tags) && !tags.every(item => item.name && item.value)) {\n return new HttpResponse(null, { status: 506 });\n }\n return HttpResponse.json(tags);\n })\n ),\n http.put(`${deviceAuthV2}/devices/:deviceId/flags`, ({ params: { deviceId } }) => {\n if (!mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 506 });\n }\n return new HttpResponse(null, { status: 204 });\n }),\n http.get(`${inventoryApiUrl}/groups`, () => {\n const groups = Object.entries(mockApiResponses.devices.groups.byId).reduce((accu, [groupName, group]) => {\n if (!group.id) {\n accu.push(groupName);\n }\n return accu;\n }, []);\n return HttpResponse.json(groups);\n }),\n http.get(`${inventoryApiUrlV2}/filters/attributes`, () => HttpResponse.json(deviceAttributes)),\n http.get(`${inventoryApiUrlV2}/filters`, () =>\n HttpResponse.json([\n {\n id: 'filter1',\n name: 'testGroupDynamic',\n terms: [\n { scope: 'identity', attribute: 'id', type: '$in', value: [defaultDeviceId] },\n { scope: 'identity', attribute: 'mac', type: '$exists', value: false },\n { scope: 'identity', attribute: 'kernel', type: '$exists', value: true }\n ]\n }\n ])\n ),\n http.patch(\n `${inventoryApiUrl}/groups/:group/devices`,\n validated(async ({ params: { group }, request }) => {\n const deviceIds = await request.json();\n if (!!group && deviceIds.every(id => !!mockApiResponses.devices.byId[id])) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 508 });\n })\n ),\n http.post(\n `${deviceAuthV2}/devices`,\n validated(async ({ request }) => {\n const authset = await request.json();\n if (\n Object.values(mockApiResponses.devices.byId).some(device =>\n device.auth_sets.some(deviceAuthSet => deviceAuthSet.pubkey == authset.pubkey || deviceAuthSet.identity_data == authset.identity_data)\n )\n ) {\n return new HttpResponse(null, { status: 409 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.post(`${inventoryApiUrlV2}/filters/search`, searchHandler),\n http.post(\n `${inventoryApiUrlV2}/filters`,\n validated(async ({ request }) => {\n const { name, terms } = await request.json();\n if (\n [name, terms].some(item => !item) ||\n mockApiResponses.devices.groups[name] ||\n !terms.every(\n term => DEVICE_FILTERING_OPTIONS[term.type] && ['identity', 'inventory', 'system'].includes(term.scope) && !!term.value && !!term.attribute\n )\n ) {\n return new HttpResponse(null, { status: 510 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: 'find/me/here/createdFilterId' } });\n })\n ),\n http.get(`${inventoryApiUrlV2}/statistics`, async () =>\n HttpResponse.json({\n devices_by_status: {\n accepted: { standard: mockApiResponses.devices.byStatus.accepted.total, micro: 0, system: 0 },\n pending: { standard: mockApiResponses.devices.byStatus.pending.total, micro: 0, system: 0 }\n }\n })\n ),\n http.put(\n `${deviceAuthV2}/devices/:deviceId/auth/:authId/status`,\n validated(async ({ params: { authId, deviceId }, request }) => {\n const { status } = await request.json();\n if (mockApiResponses.devices.byId[deviceId].auth_sets.find(authSet => authSet.id === authId) && DEVICE_STATES[status]) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 511 });\n })\n ),\n http.get(`${deviceConfig}/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({\n configured: { test: true, something: 'else', aNumber: 42 },\n deployment_id: 'config1',\n reported: { test: true, something: 'else', aNumber: 42 },\n updated_ts: updatedTime,\n reported_ts: '2019-01-01T09:25:01.000Z'\n });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.put(\n `${deviceConfig}/:deviceId`,\n validated(async ({ params: { deviceId }, request }) => {\n const body = await request.text();\n if (body.includes('evilValue')) {\n return new HttpResponse(null, { status: 418 });\n }\n return new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 201 : 513 });\n })\n ),\n http.post(\n `${deviceConfig}/:deviceId/deploy`,\n validated(({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: 'config1' });\n }\n return new HttpResponse(null, { status: 514 });\n })\n ),\n http.get(`${deviceConnect}/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === 'testId') {\n return new HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });\n }\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ status: 'connected', updated_ts: mockApiResponses.devices.byId[deviceId].updated_ts });\n }\n return new HttpResponse(null, { status: 512 });\n }),\n http.post(\n `${deviceConnect}/devices/:deviceId/:action`,\n validated(({ params: { deviceId, action } }) => {\n if (['check-update', 'send-inventory'].includes(action) && mockApiResponses.devices.byId[deviceId]) {\n return new HttpResponse(null, { status: 202 });\n }\n return new HttpResponse(null, { status: 518 });\n })\n ),\n http.get(`${iotManagerBaseURL}/devices/:deviceId/state`, ({ params: { deviceId } }) => {\n if (mockApiResponses.devices.byId[deviceId]) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 515 });\n }),\n http.put(\n `${iotManagerBaseURL}/devices/:deviceId/state/:integrationId`,\n validated(async ({ params: { deviceId }, request }) => {\n const body = await request.json();\n if (mockApiResponses.devices.byId[deviceId] && body) {\n return HttpResponse.json({ deployment_id: mockApiResponses.deployments.byId.d1.id });\n }\n return new HttpResponse(null, { status: 516 });\n })\n ),\n http.put(\n `${deviceConnect}/devices/:deviceId/upload`,\n validated(({ params: { deviceId } }) => new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 200 : 517 }))\n ),\n http.get(`${deviceAuthV2}/license`, () => HttpResponse.text('test,report'))\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-DF4fJNiu.cjs");
3
+ const require_validation = require("../validation-CfruVk7U.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-oTHtH6C3.js";
2
+ import { n as validated } from "../validation-DRfQw1oy.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-DF4fJNiu.cjs");
3
+ const require_validation = require("../validation-CfruVk7U.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
@@ -1,5 +1,5 @@
1
1
  import { mockApiResponses, tenants, webhookEvents } from "../mockData.js";
2
- import { n as validated } from "../validation-oTHtH6C3.js";
2
+ import { n as validated } from "../validation-DRfQw1oy.js";
3
3
  import { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw";
5
5
  //#region src/requestHandlers/organizationHandlers.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-DF4fJNiu.cjs");
3
+ const require_validation = require("../validation-CfruVk7U.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
6
6
  let msw = require("msw");
@@ -1,5 +1,5 @@
1
1
  import { manifestsList, mockApiResponses, releasesList, softwareList } from "../mockData.js";
2
- import { n as validated } from "../validation-oTHtH6C3.js";
2
+ import { n as validated } from "../validation-DRfQw1oy.js";
3
3
  import { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV1alpha1, deploymentsApiUrlV2, headerNames } from "@northern.tech/utils/constants";
4
4
  import { customSort } from "@northern.tech/utils/helpers";
5
5
  import { HttpResponse, http } from "msw";
@@ -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-DF4fJNiu.cjs");
3
+ const require_validation = require("../validation-CfruVk7U.cjs");
4
4
  let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
5
5
  let msw = require("msw");
6
6
  //#region src/requestHandlers/userHandlers.ts
@@ -1,5 +1,5 @@
1
1
  import { accessTokens, mockApiResponses, permissionSets, rbacRoles, testSsoId, token, userId } from "../mockData.js";
2
- import { n as validated } from "../validation-oTHtH6C3.js";
2
+ import { n as validated } from "../validation-DRfQw1oy.js";
3
3
  import { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw";
5
5
  //#region src/requestHandlers/userHandlers.ts
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_validation = require("../validation-DF4fJNiu.cjs");
2
+ const require_validation = require("../validation-CfruVk7U.cjs");
3
3
  exports.validateRequest = require_validation.validateRequest;
4
4
  exports.validated = require_validation.validated;
@@ -1,2 +1,2 @@
1
- import { n as validated, t as validateRequest } from "../validation-oTHtH6C3.js";
1
+ import { n as validated, t as validateRequest } from "../validation-DRfQw1oy.js";
2
2
  export { validateRequest, validated };