@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.
Files changed (42) hide show
  1. package/dist/chunk-CKQMccvm.cjs +28 -0
  2. package/dist/mockData.cjs +1 -1
  3. package/dist/openapi.yaml.d.cjs +0 -0
  4. package/dist/openapi.yaml.d.cts +4 -0
  5. package/dist/openapi.yaml.d.ts +5 -0
  6. package/dist/requestHandlers/deploymentHandlers.cjs +14 -13
  7. package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -1
  8. package/dist/requestHandlers/deploymentHandlers.js +13 -12
  9. package/dist/requestHandlers/deploymentHandlers.js.map +1 -1
  10. package/dist/requestHandlers/deviceHandlers.cjs +25 -24
  11. package/dist/requestHandlers/deviceHandlers.cjs.map +1 -1
  12. package/dist/requestHandlers/deviceHandlers.js +24 -23
  13. package/dist/requestHandlers/deviceHandlers.js.map +1 -1
  14. package/dist/requestHandlers/monitorHandlers.cjs +4 -3
  15. package/dist/requestHandlers/monitorHandlers.cjs.map +1 -1
  16. package/dist/requestHandlers/monitorHandlers.js +3 -2
  17. package/dist/requestHandlers/monitorHandlers.js.map +1 -1
  18. package/dist/requestHandlers/organizationHandlers.cjs +25 -25
  19. package/dist/requestHandlers/organizationHandlers.cjs.map +1 -1
  20. package/dist/requestHandlers/organizationHandlers.js +24 -24
  21. package/dist/requestHandlers/organizationHandlers.js.map +1 -1
  22. package/dist/requestHandlers/releaseHandlers.cjs +8 -7
  23. package/dist/requestHandlers/releaseHandlers.cjs.map +1 -1
  24. package/dist/requestHandlers/releaseHandlers.js +7 -6
  25. package/dist/requestHandlers/releaseHandlers.js.map +1 -1
  26. package/dist/requestHandlers/requestHandlers.cjs +1 -1
  27. package/dist/requestHandlers/userHandlers.cjs +22 -21
  28. package/dist/requestHandlers/userHandlers.cjs.map +1 -1
  29. package/dist/requestHandlers/userHandlers.js +21 -20
  30. package/dist/requestHandlers/userHandlers.js.map +1 -1
  31. package/dist/requestHandlers/validation.cjs +4 -0
  32. package/dist/requestHandlers/validation.d.cts +6 -0
  33. package/dist/requestHandlers/validation.d.ts +6 -0
  34. package/dist/requestHandlers/validation.js +2 -0
  35. package/dist/setupTests.cjs +2 -24
  36. package/dist/setupTests.cjs.map +1 -1
  37. package/dist/utils.cjs +1 -1
  38. package/dist/validation-CsEFO-Cv.cjs +77 -0
  39. package/dist/validation-CsEFO-Cv.cjs.map +1 -0
  40. package/dist/validation-JDM_vsFz.js +64 -0
  41. package/dist/validation-JDM_vsFz.js.map +1 -0
  42. 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("./setupTests.cjs");
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
@@ -0,0 +1,4 @@
1
+ //#region src/openapi.yaml.d.ts
2
+ declare const content: string;
3
+ export = content;
4
+ //# sourceMappingURL=openapi.yaml.d.cts.map
@@ -0,0 +1,5 @@
1
+ //#region src/openapi.yaml.d.ts
2
+ declare const content: string;
3
+ //#endregion
4
+ export { content as default };
5
+ //# sourceMappingURL=openapi.yaml.d.ts.map
@@ -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("../setupTests.cjs");
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("../setupTests.cjs");
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