@northern.tech/testing 0.8.4 → 0.9.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.
- package/dist/chunk-CKQMccvm.cjs +28 -0
- package/dist/mockData.cjs +1 -1
- package/dist/openapi.yaml.d.cjs +0 -0
- package/dist/openapi.yaml.d.cts +4 -0
- package/dist/openapi.yaml.d.ts +5 -0
- package/dist/requestHandlers/deploymentHandlers.cjs +14 -13
- package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -1
- package/dist/requestHandlers/deploymentHandlers.js +13 -12
- package/dist/requestHandlers/deploymentHandlers.js.map +1 -1
- package/dist/requestHandlers/deviceHandlers.cjs +25 -24
- package/dist/requestHandlers/deviceHandlers.cjs.map +1 -1
- package/dist/requestHandlers/deviceHandlers.js +24 -23
- package/dist/requestHandlers/deviceHandlers.js.map +1 -1
- package/dist/requestHandlers/monitorHandlers.cjs +4 -3
- package/dist/requestHandlers/monitorHandlers.cjs.map +1 -1
- package/dist/requestHandlers/monitorHandlers.js +3 -2
- package/dist/requestHandlers/monitorHandlers.js.map +1 -1
- package/dist/requestHandlers/organizationHandlers.cjs +25 -25
- package/dist/requestHandlers/organizationHandlers.cjs.map +1 -1
- package/dist/requestHandlers/organizationHandlers.js +24 -24
- package/dist/requestHandlers/organizationHandlers.js.map +1 -1
- package/dist/requestHandlers/releaseHandlers.cjs +8 -7
- package/dist/requestHandlers/releaseHandlers.cjs.map +1 -1
- package/dist/requestHandlers/releaseHandlers.js +7 -6
- package/dist/requestHandlers/releaseHandlers.js.map +1 -1
- package/dist/requestHandlers/requestHandlers.cjs +1 -1
- package/dist/requestHandlers/userHandlers.cjs +22 -21
- package/dist/requestHandlers/userHandlers.cjs.map +1 -1
- package/dist/requestHandlers/userHandlers.js +21 -20
- package/dist/requestHandlers/userHandlers.js.map +1 -1
- package/dist/requestHandlers/validation.cjs +4 -0
- package/dist/requestHandlers/validation.d.cts +6 -0
- package/dist/requestHandlers/validation.d.ts +6 -0
- package/dist/requestHandlers/validation.js +2 -0
- package/dist/setupTests.cjs +2 -24
- package/dist/setupTests.cjs.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/validation-CsEFO-Cv.cjs +77 -0
- package/dist/validation-CsEFO-Cv.cjs.map +1 -0
- package/dist/validation-JDM_vsFz.js +64 -0
- package/dist/validation-JDM_vsFz.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
Object.defineProperty(exports, "__toESM", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function() {
|
|
26
|
+
return __toESM;
|
|
27
|
+
}
|
|
28
|
+
});
|
package/dist/mockData.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./
|
|
2
|
+
require("./chunk-CKQMccvm.cjs");
|
|
3
3
|
let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
|
|
4
4
|
//#region src/mockData.ts
|
|
5
5
|
const undefineds = /undefined|\[object Object\]/;
|
|
File without changes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../chunk-CKQMccvm.cjs");
|
|
2
3
|
const require_mockData = require("../mockData.cjs");
|
|
3
|
-
require("../
|
|
4
|
+
const require_validation = require("../validation-CsEFO-Cv.cjs");
|
|
4
5
|
let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
|
|
5
6
|
let msw = require("msw");
|
|
6
7
|
//#region src/requestHandlers/deploymentHandlers.ts
|
|
@@ -96,7 +97,7 @@ const deploymentHandlers = [
|
|
|
96
97
|
else if (require_mockData.mockApiResponses.deployments.byId[deploymentId]) return msw.HttpResponse.json(Object.values(require_mockData.mockApiResponses.deployments.byId[deploymentId].devices));
|
|
97
98
|
return new msw.HttpResponse(null, { status: 521 });
|
|
98
99
|
}),
|
|
99
|
-
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {
|
|
100
|
+
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/statistics/list`, require_validation.validated(async ({ request }) => {
|
|
100
101
|
const { deployment_ids = [] } = await request.json();
|
|
101
102
|
if (deployment_ids.includes(createdDeployment.id)) return msw.HttpResponse.json([]);
|
|
102
103
|
else if (deployment_ids.every((id) => require_mockData.mockApiResponses.deployments.byId[id])) {
|
|
@@ -107,46 +108,46 @@ const deploymentHandlers = [
|
|
|
107
108
|
return msw.HttpResponse.json(stats);
|
|
108
109
|
}
|
|
109
110
|
return new msw.HttpResponse(null, { status: 522 });
|
|
110
|
-
}),
|
|
111
|
+
})),
|
|
111
112
|
msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {
|
|
112
113
|
if (require_mockData.mockApiResponses.deployments.byId[deploymentId] && require_mockData.mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) return msw.HttpResponse.text("test");
|
|
113
114
|
return new msw.HttpResponse(null, { status: 523 });
|
|
114
115
|
}),
|
|
115
|
-
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments`, async ({ request }) => {
|
|
116
|
+
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments`, require_validation.validated(async ({ request }) => {
|
|
116
117
|
const body = await request.json();
|
|
117
118
|
if (!Object.keys(body).length) return new msw.HttpResponse(JSON.stringify({}), { status: 524 });
|
|
118
119
|
return new msw.HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
119
|
-
}),
|
|
120
|
-
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments`, async ({ request }) => {
|
|
120
|
+
})),
|
|
121
|
+
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments`, require_validation.validated(async ({ request }) => {
|
|
121
122
|
const { filter_id, devices = [] } = await request.json();
|
|
122
123
|
if (!filter_id || !!devices.length) return new msw.HttpResponse(JSON.stringify({}), { status: 525 });
|
|
123
124
|
return new msw.HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
124
|
-
}),
|
|
125
|
-
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {
|
|
125
|
+
})),
|
|
126
|
+
msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/group/:deploymentGroup`, require_validation.validated(async ({ params: { deploymentGroup }, request }) => {
|
|
126
127
|
const { filter_id, devices = [] } = await request.json();
|
|
127
128
|
if (filter_id || !!devices.length || deploymentGroup !== Object.keys(require_mockData.mockApiResponses.devices.groups.byId)[0]) return new msw.HttpResponse(JSON.stringify({}), { status: 526 });
|
|
128
129
|
return new msw.HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
129
|
-
}),
|
|
130
|
+
})),
|
|
130
131
|
msw.http.patch(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {
|
|
131
132
|
const { update_control_map } = await request.json();
|
|
132
133
|
if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) return new msw.HttpResponse(null, { status: 204 });
|
|
133
134
|
return new msw.HttpResponse(null, { status: 581 });
|
|
134
135
|
}),
|
|
135
|
-
msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {
|
|
136
|
+
msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/:deploymentId/status`, require_validation.validated(async ({ params: { deploymentId }, request }) => {
|
|
136
137
|
const { status } = await request.json();
|
|
137
138
|
return new msw.HttpResponse(JSON.stringify({}), { status: status === "aborted" && [...require_mockData.mockApiResponses.deployments.byStatus.pending.deploymentIds, ...require_mockData.mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(deploymentId) ? 200 : 528 });
|
|
138
|
-
}),
|
|
139
|
+
})),
|
|
139
140
|
msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {
|
|
140
141
|
if (deploymentId === createdDeployment.id) return new msw.HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), { headers: { [_northern_tech_utils_constants.headerNames.total]: Object.keys(createdDeployment.devices).length } });
|
|
141
142
|
else if (require_mockData.mockApiResponses.deployments.byId[deploymentId]) return new msw.HttpResponse(JSON.stringify(Object.values(require_mockData.mockApiResponses.deployments.byId[deploymentId].devices)), { headers: { [_northern_tech_utils_constants.headerNames.total]: Object.keys(require_mockData.mockApiResponses.deployments.byId[deploymentId].devices).length } });
|
|
142
143
|
return new msw.HttpResponse(null, { status: 529 });
|
|
143
144
|
}),
|
|
144
145
|
msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/config`, () => msw.HttpResponse.json(defaultDeploymentConfig)),
|
|
145
|
-
msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {
|
|
146
|
+
msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/config/binary_delta`, require_validation.validated(async ({ request }) => {
|
|
146
147
|
const { xdelta_args = {} } = await request.json();
|
|
147
148
|
if (xdelta_args.source_window_size === 55) return new msw.HttpResponse(null, { status: 530 });
|
|
148
149
|
return new msw.HttpResponse(null, { status: 200 });
|
|
149
|
-
}),
|
|
150
|
+
})),
|
|
150
151
|
msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {
|
|
151
152
|
if (deviceId === require_mockData.mockApiResponses.devices.byId.a1.id) return new msw.HttpResponse(JSON.stringify([{
|
|
152
153
|
id: createdDeployment.id + "something",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploymentHandlers.cjs","names":["limitDefault","http","deploymentsApiUrlV2","HttpResponse","mockApiResponses","headerNames","deploymentsApiUrl"],"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 `${deploymentsApiUrlV2}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {\n const body = await request.json();\n if (!Object.keys(body).length) {\n return new HttpResponse(JSON.stringify({}), { status: 524 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (!filter_id || !!devices.length) {\n return new HttpResponse(JSON.stringify({}), { status: 525 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(`${deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploymentHandlers.cjs","names":["limitDefault","http","deploymentsApiUrlV2","HttpResponse","mockApiResponses","headerNames","deploymentsApiUrl","validated"],"sources":["../../src/requestHandlers/deploymentHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrlV2}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(\n `${deploymentsApiUrl}/deployments`,\n validated(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 ),\n http.post(\n `${deploymentsApiUrlV2}/deployments`,\n validated(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 ),\n http.post(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n })\n ),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { mockApiResponses } from "../mockData.js";
|
|
2
|
+
import { n as validated } from "../validation-JDM_vsFz.js";
|
|
2
3
|
import { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from "@northern.tech/utils/constants";
|
|
3
4
|
import { HttpResponse, http } from "msw";
|
|
4
5
|
//#region src/requestHandlers/deploymentHandlers.ts
|
|
@@ -94,7 +95,7 @@ const deploymentHandlers = [
|
|
|
94
95
|
else if (mockApiResponses.deployments.byId[deploymentId]) return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));
|
|
95
96
|
return new HttpResponse(null, { status: 521 });
|
|
96
97
|
}),
|
|
97
|
-
http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {
|
|
98
|
+
http.post(`${deploymentsApiUrl}/deployments/statistics/list`, validated(async ({ request }) => {
|
|
98
99
|
const { deployment_ids = [] } = await request.json();
|
|
99
100
|
if (deployment_ids.includes(createdDeployment.id)) return HttpResponse.json([]);
|
|
100
101
|
else if (deployment_ids.every((id) => mockApiResponses.deployments.byId[id])) {
|
|
@@ -105,46 +106,46 @@ const deploymentHandlers = [
|
|
|
105
106
|
return HttpResponse.json(stats);
|
|
106
107
|
}
|
|
107
108
|
return new HttpResponse(null, { status: 522 });
|
|
108
|
-
}),
|
|
109
|
+
})),
|
|
109
110
|
http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {
|
|
110
111
|
if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) return HttpResponse.text("test");
|
|
111
112
|
return new HttpResponse(null, { status: 523 });
|
|
112
113
|
}),
|
|
113
|
-
http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {
|
|
114
|
+
http.post(`${deploymentsApiUrl}/deployments`, validated(async ({ request }) => {
|
|
114
115
|
const body = await request.json();
|
|
115
116
|
if (!Object.keys(body).length) return new HttpResponse(JSON.stringify({}), { status: 524 });
|
|
116
117
|
return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
117
|
-
}),
|
|
118
|
-
http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {
|
|
118
|
+
})),
|
|
119
|
+
http.post(`${deploymentsApiUrlV2}/deployments`, validated(async ({ request }) => {
|
|
119
120
|
const { filter_id, devices = [] } = await request.json();
|
|
120
121
|
if (!filter_id || !!devices.length) return new HttpResponse(JSON.stringify({}), { status: 525 });
|
|
121
122
|
return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
122
|
-
}),
|
|
123
|
-
http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {
|
|
123
|
+
})),
|
|
124
|
+
http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, validated(async ({ params: { deploymentGroup }, request }) => {
|
|
124
125
|
const { filter_id, devices = [] } = await request.json();
|
|
125
126
|
if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) return new HttpResponse(JSON.stringify({}), { status: 526 });
|
|
126
127
|
return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });
|
|
127
|
-
}),
|
|
128
|
+
})),
|
|
128
129
|
http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {
|
|
129
130
|
const { update_control_map } = await request.json();
|
|
130
131
|
if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) return new HttpResponse(null, { status: 204 });
|
|
131
132
|
return new HttpResponse(null, { status: 581 });
|
|
132
133
|
}),
|
|
133
|
-
http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {
|
|
134
|
+
http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, validated(async ({ params: { deploymentId }, request }) => {
|
|
134
135
|
const { status } = await request.json();
|
|
135
136
|
return new HttpResponse(JSON.stringify({}), { status: status === "aborted" && [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(deploymentId) ? 200 : 528 });
|
|
136
|
-
}),
|
|
137
|
+
})),
|
|
137
138
|
http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {
|
|
138
139
|
if (deploymentId === createdDeployment.id) return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), { headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length } });
|
|
139
140
|
else if (mockApiResponses.deployments.byId[deploymentId]) return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), { headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length } });
|
|
140
141
|
return new HttpResponse(null, { status: 529 });
|
|
141
142
|
}),
|
|
142
143
|
http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),
|
|
143
|
-
http.put(`${deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {
|
|
144
|
+
http.put(`${deploymentsApiUrl}/config/binary_delta`, validated(async ({ request }) => {
|
|
144
145
|
const { xdelta_args = {} } = await request.json();
|
|
145
146
|
if (xdelta_args.source_window_size === 55) return new HttpResponse(null, { status: 530 });
|
|
146
147
|
return new HttpResponse(null, { status: 200 });
|
|
147
|
-
}),
|
|
148
|
+
})),
|
|
148
149
|
http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {
|
|
149
150
|
if (deviceId === mockApiResponses.devices.byId.a1.id) return new HttpResponse(JSON.stringify([{
|
|
150
151
|
id: createdDeployment.id + "something",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploymentHandlers.js","names":[],"sources":["../../src/requestHandlers/deploymentHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrlV2}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(`${deploymentsApiUrl}/deployments/statistics/list`, async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(`${deploymentsApiUrl}/deployments`, async ({ request }) => {\n const body = await request.json();\n if (!Object.keys(body).length) {\n return new HttpResponse(JSON.stringify({}), { status: 524 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrlV2}/deployments`, async ({ request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (!filter_id || !!devices.length) {\n return new HttpResponse(JSON.stringify({}), { status: 525 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.post(`${deploymentsApiUrl}/deployments/group/:deploymentGroup`, async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n }),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(`${deploymentsApiUrl}/deployments/:deploymentId/status`, async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(`${deploymentsApiUrl}/config/binary_delta`, async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploymentHandlers.js","names":[],"sources":["../../src/requestHandlers/deploymentHandlers.ts"],"sourcesContent":["// Copyright 2020 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses } from '../mockData';\nimport { validated } from './validation';\n\nconst createdDeployment = {\n id: 'created-123',\n name: 'test deployment',\n artifact_name: 'r1',\n artifacts: ['123'],\n created: '2019-01-01T12:30:00.000Z',\n device_count: 1,\n devices: {\n a1: {\n attributes: {},\n id: 'a1',\n image: { size: 123 },\n status: 'installing'\n }\n },\n filter: undefined,\n group: undefined,\n statistics: {\n status: {\n downloading: 0,\n decommissioned: 0,\n failure: 0,\n installing: 1,\n noartifact: 0,\n pending: 0,\n rebooting: 0,\n success: 0,\n 'already-installed': 0\n },\n total_size: 1234\n }\n};\n\nconst defaultDeploymentConfig = {\n delta: {\n enabled: true,\n binary_delta: {\n xdelta_args: {\n disable_checksum: false,\n disable_external_decompression: false,\n compression_level: 6,\n source_window_size: 0,\n input_window_size: 0,\n compression_duplicates_window: 0,\n instruction_buffer_size: 0\n },\n timeout: 0\n },\n binary_delta_limits: {\n xdelta_args_limits: {\n source_window_size: limitDefault,\n input_window_size: limitDefault,\n compression_duplicates_window: limitDefault,\n instruction_buffer_size: limitDefault\n },\n timeout: { min: 60, max: 3600, default: 60 },\n jobs_in_parallel: limitDefault,\n queue_length: limitDefault\n }\n }\n};\n\nexport const deploymentHandlers = [\n http.get(\n `${deploymentsApiUrlV2}/deployments`,\n () =>\n new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId).reverse()), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId).length }\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/releases`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const releaseName = searchParams.get('name');\n const release = mockApiResponses.releases.byId[releaseName] || {};\n if (releaseName) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = release;\n return Object.keys(remainder).length || releaseName === 'createdRelease' ? HttpResponse.json([remainder]) : new HttpResponse(null, { status: 520 });\n }\n const releases = Object.values(mockApiResponses.releases.byId).map(stateRelease => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { device_types_compatible, ...remainder } = stateRelease;\n return remainder;\n });\n return HttpResponse.json(releases);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(createdDeployment);\n } else if (deploymentId === 'config1') {\n return HttpResponse.json({\n ...createdDeployment,\n id: 'config1',\n created: '2019-01-01T09:25:01.000Z',\n finished: '2019-01-01T09:25:03.000Z',\n status: 'finished'\n });\n }\n return HttpResponse.json(mockApiResponses.deployments.byId[deploymentId]);\n }),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return HttpResponse.json(Object.values(createdDeployment.devices));\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return HttpResponse.json(Object.values(mockApiResponses.deployments.byId[deploymentId].devices));\n }\n return new HttpResponse(null, { status: 521 });\n }),\n http.post(\n `${deploymentsApiUrl}/deployments/statistics/list`,\n validated(async ({ request }) => {\n const { deployment_ids = [] } = await request.json();\n if (deployment_ids.includes(createdDeployment.id)) {\n return HttpResponse.json([]);\n } else if (deployment_ids.every(id => mockApiResponses.deployments.byId[id])) {\n const stats = deployment_ids.map(id => ({ id, stats: mockApiResponses.deployments.byId[id].statistics.status }));\n return HttpResponse.json(stats);\n }\n return new HttpResponse(null, { status: 522 });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/:deviceId/log`, ({ params: { deploymentId, deviceId } }) => {\n if (mockApiResponses.deployments.byId[deploymentId] && mockApiResponses.deployments.byId[deploymentId].devices[deviceId]) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 523 });\n }),\n http.post(\n `${deploymentsApiUrl}/deployments`,\n validated(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 ),\n http.post(\n `${deploymentsApiUrlV2}/deployments`,\n validated(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 ),\n http.post(\n `${deploymentsApiUrl}/deployments/group/:deploymentGroup`,\n validated(async ({ params: { deploymentGroup }, request }) => {\n const { filter_id, devices = [] } = await request.json();\n if (filter_id || !!devices.length || deploymentGroup !== Object.keys(mockApiResponses.devices.groups.byId)[0]) {\n return new HttpResponse(JSON.stringify({}), { status: 526 });\n }\n return new HttpResponse(JSON.stringify({}), { headers: { location: `find/me/here/${createdDeployment.id}` } });\n })\n ),\n http.patch(`${deploymentsApiUrl}/deployments/:deploymentId`, async ({ params: { deploymentId }, request }) => {\n const { update_control_map } = await request.json();\n if (deploymentId === createdDeployment.id && Object.keys(update_control_map).length) {\n return new HttpResponse(null, { status: 204 });\n }\n return new HttpResponse(null, { status: 581 });\n }),\n http.put(\n `${deploymentsApiUrl}/deployments/:deploymentId/status`,\n validated(async ({ params: { deploymentId }, request }) => {\n const { status } = await request.json();\n return new HttpResponse(JSON.stringify({}), {\n status:\n status === 'aborted' &&\n [...mockApiResponses.deployments.byStatus.pending.deploymentIds, ...mockApiResponses.deployments.byStatus.inprogress.deploymentIds].includes(\n deploymentId\n )\n ? 200\n : 528\n });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/:deploymentId/devices/list`, ({ params: { deploymentId } }) => {\n if (deploymentId === createdDeployment.id) {\n return new HttpResponse(JSON.stringify(Object.values(createdDeployment.devices)), {\n headers: { [headerNames.total]: Object.keys(createdDeployment.devices).length }\n });\n } else if (mockApiResponses.deployments.byId[deploymentId]) {\n return new HttpResponse(JSON.stringify(Object.values(mockApiResponses.deployments.byId[deploymentId].devices)), {\n headers: { [headerNames.total]: Object.keys(mockApiResponses.deployments.byId[deploymentId].devices).length }\n });\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.get(`${deploymentsApiUrl}/config`, () => HttpResponse.json(defaultDeploymentConfig)),\n http.put(\n `${deploymentsApiUrl}/config/binary_delta`,\n validated(async ({ request }) => {\n const { xdelta_args = {} } = await request.json();\n if (xdelta_args.source_window_size === 55) {\n return new HttpResponse(null, { status: 530 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.get(`${deploymentsApiUrl}/deployments/devices/:deviceId`, ({ params: { deviceId } }) => {\n if (deviceId === mockApiResponses.devices.byId.a1.id) {\n return new HttpResponse(\n JSON.stringify([\n {\n id: createdDeployment.id + 'something',\n deployment: { ...createdDeployment, id: mockApiResponses.deployments.byId.d1.id, status: 'inprogress' },\n device: {\n created: '2019-01-01T12:35:00.000Z',\n finished: '2019-01-01T12:40:00.000Z',\n status: 'noartifact',\n id: 'something',\n image: { ...mockApiResponses.releases.byId.r1 }\n },\n log: true,\n attempts: 1,\n delta_job_id: ''\n }\n ]),\n {\n headers: { [headerNames.total]: 34 }\n }\n );\n }\n return new HttpResponse(null, { status: 529 });\n }),\n http.delete(`${deploymentsApiUrl}/deployments/devices/:deviceId/history`, () => new HttpResponse(null, { status: 204 })),\n http.get(`/api/management/v1alpha1/deployments/deployments/:deploymentId/devices/:deviceId/log/explain`, ({ params: { deploymentId, deviceId } }) => {\n if (deploymentId === mockApiResponses.deployments.byId.d1.id && deviceId === mockApiResponses.devices.byId.a1.id) {\n const mockAnalysis = `## Summary\nThe deployment failed during the artifact download phase. The device was unable to establish a secure connection to the artifact repository.\n\n## Key Issues\n1. **Network connectivity issues** - Connection timeout occurred\n2. **SSL/TLS certificate verification failed** - Invalid certificate chain\n3. **Artifact verification failed** - Checksum mismatch detected\n\n## Recommendations\n- Check network connectivity between device and artifact repository\n- Verify SSL certificates are properly configured\n- Ensure artifact integrity before deployment`;\n return HttpResponse.text(mockAnalysis);\n }\n if (deploymentId === 'rate-limited-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Rate limit exceeded' }), { status: 429 });\n }\n if (deploymentId === 'error-deployment') {\n return new HttpResponse(JSON.stringify({ error: 'Analysis failed' }), { status: 500 });\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../chunk-CKQMccvm.cjs");
|
|
2
3
|
const require_mockData = require("../mockData.cjs");
|
|
3
|
-
require("../
|
|
4
|
+
const require_validation = require("../validation-CsEFO-Cv.cjs");
|
|
4
5
|
let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
|
|
5
6
|
let msw = require("msw");
|
|
6
7
|
//#region src/requestHandlers/deviceHandlers.ts
|
|
@@ -231,7 +232,7 @@ const deviceAttributes = [
|
|
|
231
232
|
count: 1
|
|
232
233
|
}
|
|
233
234
|
];
|
|
234
|
-
const searchHandler = async ({ request }) => {
|
|
235
|
+
const searchHandler = require_validation.validated(async ({ request }) => {
|
|
235
236
|
const { page, per_page, filters } = await request.json();
|
|
236
237
|
if ([
|
|
237
238
|
page,
|
|
@@ -262,7 +263,7 @@ const searchHandler = async ({ request }) => {
|
|
|
262
263
|
}));
|
|
263
264
|
deviceList = deviceList.slice((page - 1) * per_page, page * per_page);
|
|
264
265
|
return new msw.HttpResponse(JSON.stringify(deviceList), { headers: { [_northern_tech_utils_constants.headerNames.total]: require_mockData.mockApiResponses.devices.byStatus[status].total } });
|
|
265
|
-
};
|
|
266
|
+
});
|
|
266
267
|
const deviceHandlers = [
|
|
267
268
|
msw.http.delete(`${_northern_tech_utils_constants.deviceAuthV2}/devices/:deviceId/auth/:authId`, ({ params: { authId, deviceId } }) => {
|
|
268
269
|
if (require_mockData.mockApiResponses.devices.byId[deviceId].auth_sets.find((authSet) => authSet.id === authId)) return new msw.HttpResponse(null, { status: 200 });
|
|
@@ -276,11 +277,11 @@ const deviceHandlers = [
|
|
|
276
277
|
if (require_mockData.mockApiResponses.devices.groups.byId[group]) return new msw.HttpResponse(null, { status: 200 });
|
|
277
278
|
return new msw.HttpResponse(null, { status: 515 });
|
|
278
279
|
}),
|
|
279
|
-
msw.http.delete(`${_northern_tech_utils_constants.inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {
|
|
280
|
+
msw.http.delete(`${_northern_tech_utils_constants.inventoryApiUrl}/groups/:group/devices`, require_validation.validated(async ({ params: { group }, request }) => {
|
|
280
281
|
const deviceIds = await request.json();
|
|
281
282
|
if (require_mockData.mockApiResponses.devices.groups.byId[group] && deviceIds.every((id) => !!require_mockData.mockApiResponses.devices.byId[id])) return new msw.HttpResponse(null, { status: 200 });
|
|
282
283
|
return new msw.HttpResponse(null, { status: 503 });
|
|
283
|
-
}),
|
|
284
|
+
})),
|
|
284
285
|
msw.http.delete(`${_northern_tech_utils_constants.inventoryApiUrlV2}/filters/:filterId`, ({ params: { filterId } }) => {
|
|
285
286
|
if (Object.values(require_mockData.mockApiResponses.devices.groups.byId).find((group) => group.id === filterId)) return new msw.HttpResponse(null, { status: 200 });
|
|
286
287
|
return new msw.HttpResponse(null, { status: 504 });
|
|
@@ -299,11 +300,11 @@ const deviceHandlers = [
|
|
|
299
300
|
if (require_mockData.mockApiResponses.devices.byId[deviceId]) return msw.HttpResponse.json(inventoryDevice);
|
|
300
301
|
return new msw.HttpResponse(null, { status: 506 });
|
|
301
302
|
}),
|
|
302
|
-
msw.http.put(`${_northern_tech_utils_constants.inventoryApiUrl}/devices/:deviceId/tags`, async ({ params: { deviceId }, request }) => {
|
|
303
|
+
msw.http.put(`${_northern_tech_utils_constants.inventoryApiUrl}/devices/:deviceId/tags`, require_validation.validated(async ({ params: { deviceId }, request }) => {
|
|
303
304
|
const tags = await request.json();
|
|
304
305
|
if (!require_mockData.mockApiResponses.devices.byId[deviceId] && !Array.isArray(tags) && !tags.every((item) => item.name && item.value)) return new msw.HttpResponse(null, { status: 506 });
|
|
305
306
|
return msw.HttpResponse.json(tags);
|
|
306
|
-
}),
|
|
307
|
+
})),
|
|
307
308
|
msw.http.get(`${_northern_tech_utils_constants.inventoryApiUrl}/groups`, () => {
|
|
308
309
|
const groups = Object.entries(require_mockData.mockApiResponses.devices.groups.byId).reduce((accu, [groupName, group]) => {
|
|
309
310
|
if (!group.id) accu.push(groupName);
|
|
@@ -336,18 +337,18 @@ const deviceHandlers = [
|
|
|
336
337
|
}
|
|
337
338
|
]
|
|
338
339
|
}])),
|
|
339
|
-
msw.http.patch(`${_northern_tech_utils_constants.inventoryApiUrl}/groups/:group/devices`, async ({ params: { group }, request }) => {
|
|
340
|
+
msw.http.patch(`${_northern_tech_utils_constants.inventoryApiUrl}/groups/:group/devices`, require_validation.validated(async ({ params: { group }, request }) => {
|
|
340
341
|
const deviceIds = await request.json();
|
|
341
342
|
if (!!group && deviceIds.every((id) => !!require_mockData.mockApiResponses.devices.byId[id])) return new msw.HttpResponse(null, { status: 200 });
|
|
342
343
|
return new msw.HttpResponse(null, { status: 508 });
|
|
343
|
-
}),
|
|
344
|
-
msw.http.post(`${_northern_tech_utils_constants.deviceAuthV2}/devices`, async ({ request }) => {
|
|
344
|
+
})),
|
|
345
|
+
msw.http.post(`${_northern_tech_utils_constants.deviceAuthV2}/devices`, require_validation.validated(async ({ request }) => {
|
|
345
346
|
const authset = await request.json();
|
|
346
347
|
if (Object.values(require_mockData.mockApiResponses.devices.byId).some((device) => device.auth_sets.some((deviceAuthSet) => deviceAuthSet.pubkey == authset.pubkey || deviceAuthSet.identity_data == authset.identity_data))) return new msw.HttpResponse(null, { status: 409 });
|
|
347
348
|
return new msw.HttpResponse(null, { status: 200 });
|
|
348
|
-
}),
|
|
349
|
+
})),
|
|
349
350
|
msw.http.post(`${_northern_tech_utils_constants.inventoryApiUrlV2}/filters/search`, searchHandler),
|
|
350
|
-
msw.http.post(`${_northern_tech_utils_constants.inventoryApiUrlV2}/filters`, async ({ request }) => {
|
|
351
|
+
msw.http.post(`${_northern_tech_utils_constants.inventoryApiUrlV2}/filters`, require_validation.validated(async ({ request }) => {
|
|
351
352
|
const { name, terms } = await request.json();
|
|
352
353
|
if ([name, terms].some((item) => !item) || require_mockData.mockApiResponses.devices.groups[name] || !terms.every((term) => _northern_tech_utils_constants.DEVICE_FILTERING_OPTIONS[term.type] && [
|
|
353
354
|
"identity",
|
|
@@ -355,7 +356,7 @@ const deviceHandlers = [
|
|
|
355
356
|
"system"
|
|
356
357
|
].includes(term.scope) && !!term.value && !!term.attribute)) return new msw.HttpResponse(null, { status: 510 });
|
|
357
358
|
return new msw.HttpResponse(JSON.stringify({}), { headers: { location: "find/me/here/createdFilterId" } });
|
|
358
|
-
}),
|
|
359
|
+
})),
|
|
359
360
|
msw.http.get(`${_northern_tech_utils_constants.inventoryApiUrlV2}/statistics`, async () => msw.HttpResponse.json({ devices_by_status: {
|
|
360
361
|
accepted: {
|
|
361
362
|
standard: require_mockData.mockApiResponses.devices.byStatus.accepted.total,
|
|
@@ -368,11 +369,11 @@ const deviceHandlers = [
|
|
|
368
369
|
system: 0
|
|
369
370
|
}
|
|
370
371
|
} })),
|
|
371
|
-
msw.http.put(`${_northern_tech_utils_constants.deviceAuthV2}/devices/:deviceId/auth/:authId/status`, async ({ params: { authId, deviceId }, request }) => {
|
|
372
|
+
msw.http.put(`${_northern_tech_utils_constants.deviceAuthV2}/devices/:deviceId/auth/:authId/status`, require_validation.validated(async ({ params: { authId, deviceId }, request }) => {
|
|
372
373
|
const { status } = await request.json();
|
|
373
374
|
if (require_mockData.mockApiResponses.devices.byId[deviceId].auth_sets.find((authSet) => authSet.id === authId) && _northern_tech_utils_constants.DEVICE_STATES[status]) return new msw.HttpResponse(null, { status: 200 });
|
|
374
375
|
return new msw.HttpResponse(null, { status: 511 });
|
|
375
|
-
}),
|
|
376
|
+
})),
|
|
376
377
|
msw.http.get(`${_northern_tech_utils_constants.deviceConfig}/:deviceId`, ({ params: { deviceId } }) => {
|
|
377
378
|
if (deviceId === "testId") return new msw.HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });
|
|
378
379
|
if (require_mockData.mockApiResponses.devices.byId[deviceId]) return msw.HttpResponse.json({
|
|
@@ -392,14 +393,14 @@ const deviceHandlers = [
|
|
|
392
393
|
});
|
|
393
394
|
return new msw.HttpResponse(null, { status: 512 });
|
|
394
395
|
}),
|
|
395
|
-
msw.http.put(`${_northern_tech_utils_constants.deviceConfig}/:deviceId`, async ({ params: { deviceId }, request }) => {
|
|
396
|
+
msw.http.put(`${_northern_tech_utils_constants.deviceConfig}/:deviceId`, require_validation.validated(async ({ params: { deviceId }, request }) => {
|
|
396
397
|
if ((await request.text()).includes("evilValue")) return new msw.HttpResponse(null, { status: 418 });
|
|
397
398
|
return new msw.HttpResponse(null, { status: require_mockData.mockApiResponses.devices.byId[deviceId] ? 201 : 513 });
|
|
398
|
-
}),
|
|
399
|
-
msw.http.post(`${_northern_tech_utils_constants.deviceConfig}/:deviceId/deploy`, ({ params: { deviceId } }) => {
|
|
399
|
+
})),
|
|
400
|
+
msw.http.post(`${_northern_tech_utils_constants.deviceConfig}/:deviceId/deploy`, require_validation.validated(({ params: { deviceId } }) => {
|
|
400
401
|
if (require_mockData.mockApiResponses.devices.byId[deviceId]) return msw.HttpResponse.json({ deployment_id: "config1" });
|
|
401
402
|
return new msw.HttpResponse(null, { status: 514 });
|
|
402
|
-
}),
|
|
403
|
+
})),
|
|
403
404
|
msw.http.get(`${_northern_tech_utils_constants.deviceConnect}/devices/:deviceId`, ({ params: { deviceId } }) => {
|
|
404
405
|
if (deviceId === "testId") return new msw.HttpResponse(JSON.stringify({ error: { status_code: 404 } }), { status: 404 });
|
|
405
406
|
if (require_mockData.mockApiResponses.devices.byId[deviceId]) return msw.HttpResponse.json({
|
|
@@ -408,20 +409,20 @@ const deviceHandlers = [
|
|
|
408
409
|
});
|
|
409
410
|
return new msw.HttpResponse(null, { status: 512 });
|
|
410
411
|
}),
|
|
411
|
-
msw.http.post(`${_northern_tech_utils_constants.deviceConnect}/devices/:deviceId/:action`, ({ params: { deviceId, action } }) => {
|
|
412
|
+
msw.http.post(`${_northern_tech_utils_constants.deviceConnect}/devices/:deviceId/:action`, require_validation.validated(({ params: { deviceId, action } }) => {
|
|
412
413
|
if (["check-update", "send-inventory"].includes(action) && require_mockData.mockApiResponses.devices.byId[deviceId]) return new msw.HttpResponse(null, { status: 202 });
|
|
413
414
|
return new msw.HttpResponse(null, { status: 518 });
|
|
414
|
-
}),
|
|
415
|
+
})),
|
|
415
416
|
msw.http.get(`${_northern_tech_utils_constants.iotManagerBaseURL}/devices/:deviceId/state`, ({ params: { deviceId } }) => {
|
|
416
417
|
if (require_mockData.mockApiResponses.devices.byId[deviceId]) return msw.HttpResponse.json({ deployment_id: require_mockData.mockApiResponses.deployments.byId.d1.id });
|
|
417
418
|
return new msw.HttpResponse(null, { status: 515 });
|
|
418
419
|
}),
|
|
419
|
-
msw.http.put(`${_northern_tech_utils_constants.iotManagerBaseURL}/devices/:deviceId/state/:integrationId`, async ({ params: { deviceId }, request }) => {
|
|
420
|
+
msw.http.put(`${_northern_tech_utils_constants.iotManagerBaseURL}/devices/:deviceId/state/:integrationId`, require_validation.validated(async ({ params: { deviceId }, request }) => {
|
|
420
421
|
const body = await request.json();
|
|
421
422
|
if (require_mockData.mockApiResponses.devices.byId[deviceId] && body) return msw.HttpResponse.json({ deployment_id: require_mockData.mockApiResponses.deployments.byId.d1.id });
|
|
422
423
|
return new msw.HttpResponse(null, { status: 516 });
|
|
423
|
-
}),
|
|
424
|
-
msw.http.put(`${_northern_tech_utils_constants.deviceConnect}/devices/:deviceId/upload`, ({ params: { deviceId } }) => new msw.HttpResponse(null, { status: require_mockData.mockApiResponses.devices.byId[deviceId] ? 200 : 517 })),
|
|
424
|
+
})),
|
|
425
|
+
msw.http.put(`${_northern_tech_utils_constants.deviceConnect}/devices/:deviceId/upload`, require_validation.validated(({ params: { deviceId } }) => new msw.HttpResponse(null, { status: require_mockData.mockApiResponses.devices.byId[deviceId] ? 200 : 517 }))),
|
|
425
426
|
msw.http.get(`${_northern_tech_utils_constants.deviceAuthV2}/license`, () => msw.HttpResponse.text("test,report"))
|
|
426
427
|
];
|
|
427
428
|
//#endregion
|