@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
@@ -1 +1 @@
1
- {"version":3,"file":"organizationHandlers.cjs","names":["HttpResponse","http","tenantadmApiUrlv1","mockApiResponses","tenantadmApiUrlv2","tenants","auditLogsApiUrl","headerNames","iotManagerBaseURL","webhookEvents","ssoIdpApiUrlv1"],"sources":["../../src/requestHandlers/organizationHandlers.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 { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, tenants, webhookEvents } from '../mockData';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan', 'tos'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n};\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => HttpResponse.json(tenants)),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(`${tenantadmApiUrlv2}/billing/card`, () => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' })),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n ({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 })\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/contact/support`, async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.patch(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription`, () => new HttpResponse(null, { status: 202 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(`${iotManagerBaseURL}/integrations`, () => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }])),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(ssoIdpApiUrlv1, () => new HttpResponse(null, { status: 200 })),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 })),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"organizationHandlers.cjs","names":["validated","HttpResponse","http","tenantadmApiUrlv1","mockApiResponses","tenantadmApiUrlv2","tenants","auditLogsApiUrl","headerNames","iotManagerBaseURL","webhookEvents","ssoIdpApiUrlv1"],"sources":["../../src/requestHandlers/organizationHandlers.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 { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, tenants, webhookEvents } from '../mockData';\nimport { validated } from './validation';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = validated(async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n});\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(\n `${tenantadmApiUrlv2}/tenants/:tenantId/child`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/tenants/:tenantId/cancel`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n // TODO: add validation once spec is fixed (accepts `device_limits`)\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => HttpResponse.json(tenants)),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/card`,\n validated(() => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n validated(({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 }))\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(\n `${tenantadmApiUrlv2}/tenants/:tenantId/plan`,\n validated(async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.post(\n `${tenantadmApiUrlv2}/contact/support`,\n validated(async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.patch(\n `${tenantadmApiUrlv2}/billing/profile`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/profile`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/subscription`,\n validated(() => new HttpResponse(null, { status: 202 }))\n ),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(\n `${iotManagerBaseURL}/integrations`,\n validated(() => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }]))\n ),\n http.put(\n `${iotManagerBaseURL}/integrations/:integrationId`,\n validated(({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.put(\n `${iotManagerBaseURL}/integrations/:integrationId/credentials`,\n validated(({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(\n ssoIdpApiUrlv1,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(\n `${ssoIdpApiUrlv1}/:configId`,\n validated(({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 }))\n ),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\n];\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { mockApiResponses, tenants, webhookEvents } from "../mockData.js";
2
+ import { n as validated } from "../validation-JDM_vsFz.js";
2
3
  import { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from "@northern.tech/utils/constants";
3
4
  import { HttpResponse, http } from "msw";
4
5
  //#region src/requestHandlers/organizationHandlers.ts
@@ -108,16 +109,15 @@ const tagsSample = [{
108
109
  name: "saas-v2023.05.02",
109
110
  more: "here"
110
111
  }];
111
- const signupHandler = async ({ request }) => {
112
+ const signupHandler = validated(async ({ request }) => {
112
113
  const signup = await request.json();
113
114
  if ([
114
115
  "email",
115
116
  "organization",
116
- "plan",
117
- "tos"
117
+ "plan"
118
118
  ].every((item) => !!signup[item])) return HttpResponse.text("test");
119
119
  return new HttpResponse(null, { status: 400 });
120
- };
120
+ });
121
121
  const invoicePreviewBasic = {
122
122
  id: "upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0",
123
123
  period_start: "2025-07-15T15:25:22Z",
@@ -153,8 +153,8 @@ const organizationHandlers = [
153
153
  http.get("/tags.json", () => HttpResponse.json(tagsSample)),
154
154
  http.get("/versions.json", () => HttpResponse.json(releasesSample)),
155
155
  http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),
156
- http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new HttpResponse(null, { status: 200 })),
157
- http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new HttpResponse(null, { status: 200 })),
156
+ http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, validated(() => new HttpResponse(null, { status: 200 }))),
157
+ http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, validated(() => new HttpResponse(null, { status: 200 }))),
158
158
  http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),
159
159
  http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {
160
160
  const { users } = await request.json();
@@ -188,11 +188,11 @@ const organizationHandlers = [
188
188
  postal_code: "0123"
189
189
  } }
190
190
  })),
191
- http.post(`${tenantadmApiUrlv2}/billing/card`, () => HttpResponse.json({
191
+ http.post(`${tenantadmApiUrlv2}/billing/card`, validated(() => HttpResponse.json({
192
192
  intent_id: mockApiResponses.organization.intentId,
193
193
  secret: "testSecret"
194
- })),
195
- http.post(`${tenantadmApiUrlv2}/billing/card/:intentId/confirm`, ({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 })),
194
+ }))),
195
+ http.post(`${tenantadmApiUrlv2}/billing/card/:intentId/confirm`, validated(({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 }))),
196
196
  http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {
197
197
  if (tenantId != mockApiResponses.organization.organization.id || ![
198
198
  "cancel",
@@ -207,7 +207,7 @@ const organizationHandlers = [
207
207
  if (plan && !Object.keys(PLANS).includes(plan)) return new HttpResponse(null, { status: 542 });
208
208
  return new HttpResponse(null, { status: 200 });
209
209
  }),
210
- http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {
210
+ http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, validated(async ({ params: { tenantId }, request }) => {
211
211
  const body = await request.json();
212
212
  const expectedKeys = [
213
213
  "current_plan",
@@ -219,15 +219,15 @@ const organizationHandlers = [
219
219
  if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every((key) => expectedKeys.includes(key))) return new HttpResponse(null, { status: 544 });
220
220
  if (body.requested_plan && !Object.values(PLANS).some((item) => item.name === body.requested_plan)) return new HttpResponse(null, { status: 545 });
221
221
  return new HttpResponse(null, { status: 200 });
222
- }),
223
- http.post(`${tenantadmApiUrlv2}/contact/support`, async ({ request }) => {
222
+ })),
223
+ http.post(`${tenantadmApiUrlv2}/contact/support`, validated(async ({ request }) => {
224
224
  const { subject, body } = await request.json();
225
225
  if (!(subject && body)) return new HttpResponse(null, { status: 543 });
226
226
  return new HttpResponse(null, { status: 200 });
227
- }),
228
- http.patch(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),
229
- http.post(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),
230
- http.post(`${tenantadmApiUrlv2}/billing/subscription`, () => new HttpResponse(null, { status: 202 })),
227
+ })),
228
+ http.patch(`${tenantadmApiUrlv2}/billing/profile`, validated(() => new HttpResponse(null, { status: 200 }))),
229
+ http.post(`${tenantadmApiUrlv2}/billing/profile`, validated(() => new HttpResponse(null, { status: 200 }))),
230
+ http.post(`${tenantadmApiUrlv2}/billing/subscription`, validated(() => new HttpResponse(null, { status: 202 }))),
231
231
  http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),
232
232
  http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),
233
233
  http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),
@@ -260,18 +260,18 @@ const organizationHandlers = [
260
260
  provider: "iot-core",
261
261
  something: "new"
262
262
  }])),
263
- http.post(`${iotManagerBaseURL}/integrations`, () => HttpResponse.json([{
263
+ http.post(`${iotManagerBaseURL}/integrations`, validated(() => HttpResponse.json([{
264
264
  connection_string: "something_else",
265
265
  provider: "iot-hub"
266
- }])),
267
- http.put(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {
266
+ }]))),
267
+ http.put(`${iotManagerBaseURL}/integrations/:integrationId`, validated(({ params: { integrationId } }) => {
268
268
  if (!integrationId) return new HttpResponse(null, { status: 547 });
269
269
  return new HttpResponse(null, { status: 200 });
270
- }),
271
- http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {
270
+ })),
271
+ http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, validated(({ params: { integrationId } }) => {
272
272
  if (!integrationId) return new HttpResponse(null, { status: 548 });
273
273
  return new HttpResponse(null, { status: 200 });
274
- }),
274
+ })),
275
275
  http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {
276
276
  if (!integrationId) return new HttpResponse(null, { status: 549 });
277
277
  return new HttpResponse(null, { status: 200 });
@@ -291,7 +291,7 @@ const organizationHandlers = [
291
291
  issuer: "https://samltest2.id/saml/idp",
292
292
  valid_until: "2030-10-24T21:14:09Z"
293
293
  }])),
294
- http.post(ssoIdpApiUrlv1, () => new HttpResponse(null, { status: 200 })),
294
+ http.post(ssoIdpApiUrlv1, validated(() => new HttpResponse(null, { status: 200 }))),
295
295
  http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {
296
296
  if (!configId) return new HttpResponse(null, { status: 550 });
297
297
  return HttpResponse.json({
@@ -301,7 +301,7 @@ const organizationHandlers = [
301
301
  config: "<div>not quite right</div>"
302
302
  });
303
303
  }),
304
- http.put(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 })),
304
+ http.put(`${ssoIdpApiUrlv1}/:configId`, validated(({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 }))),
305
305
  http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))
306
306
  ];
307
307
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"organizationHandlers.js","names":[],"sources":["../../src/requestHandlers/organizationHandlers.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 { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, tenants, webhookEvents } from '../mockData';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan', 'tos'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n};\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(`${tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => HttpResponse.json(tenants)),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(`${tenantadmApiUrlv2}/billing/card`, () => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' })),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n ({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 })\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`${tenantadmApiUrlv2}/contact/support`, async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.patch(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/profile`, () => new HttpResponse(null, { status: 200 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription`, () => new HttpResponse(null, { status: 202 })),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(`${iotManagerBaseURL}/integrations`, () => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }])),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.put(`${iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(ssoIdpApiUrlv1, () => new HttpResponse(null, { status: 200 })),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 })),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"organizationHandlers.js","names":[],"sources":["../../src/requestHandlers/organizationHandlers.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 { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoIdpApiUrlv1, tenantadmApiUrlv1, tenantadmApiUrlv2 } from '@northern.tech/utils/constants';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, tenants, webhookEvents } from '../mockData';\nimport { validated } from './validation';\n\nconst PLANS = {\n os: { id: 'os', name: 'Basic' },\n professional: { id: 'professional', name: 'Professional' },\n enterprise: { id: 'enterprise', name: 'Enterprise' }\n};\n\nconst releasesSample = {\n lts: ['3.3'],\n releases: {\n '3.2': {\n '3.2.1': {\n release_date: '2022-02-02',\n release: '3.2.1',\n repos: [\n { name: 'integration', version: '1.2.3' },\n { name: 'mender', version: '3.2.1' },\n { name: 'mender-artifact', version: '1.3.7' },\n { name: 'service', version: '3.0.0' },\n { name: 'other-service', version: '1.1.0' }\n ]\n },\n '3.2.0': {\n release_date: '2022-01-24',\n release: '3.2.0',\n repos: [\n { name: 'service', version: '3.0.0' },\n { name: 'another-service', version: '4.1.0' }\n ]\n }\n },\n '2.7': {\n '2.7.2': {\n release_date: '2021-11-04',\n release: '2.7.2',\n repos: [\n { name: 'service', version: '1.1.0' },\n { name: 'more-service', version: '1.0.2' }\n ]\n }\n },\n '1.0': {\n supported_until: '2018-02',\n '1.0.1': {\n release_date: '2017-04-03',\n release: '1.0.1',\n repos: [{ name: 'service', version: '1.0.1' }]\n },\n '1.0.0': {\n release_date: '2017-02-16',\n release: '1.0.0',\n repos: [{ name: 'mono-service', version: '1.0.0' }]\n }\n }\n },\n saas: [\n { tag: 'saas-v2022.03.10', date: '2022-03-09' },\n { tag: 'saas-v2020.09.25', date: '2020-09-24' },\n { tag: 'saas-v2020.07.09', date: '2020-07-09' }\n ]\n};\n\nconst tagsSample = [{ name: 'saas-v2023.05.02', more: 'here' }];\n\nconst signupHandler = validated(async ({ request }) => {\n const signup = await request.json();\n if (['email', 'organization', 'plan'].every(item => !!signup[item])) {\n return HttpResponse.text('test');\n }\n return new HttpResponse(null, { status: 400 });\n});\n\nconst invoicePreviewBasic = {\n id: 'upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0',\n period_start: '2025-07-15T15:25:22Z',\n period_end: '2025-08-15T15:25:22Z',\n total: 3200,\n currency: 'usd',\n lines: [\n {\n description: '50 device × Mender Basic (Tier 1 at $0.00 / month)',\n amount: 0,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 50,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n },\n {\n description: 'Mender Basic (Tier 1 at $32.00 / month)',\n amount: 3200,\n currency: 'usd',\n product: 'mender_standard',\n quantity: 0,\n price_id: 'price_1PYktlFlFfXikjZVh2aNHp7i'\n }\n ]\n};\nconst subscriptionBasic = {\n id: 'sub_1RlAjOFlFfXikjZVj5BvpJE4',\n status: 'active',\n plan: 'os',\n products: [\n {\n name: 'mender_standard',\n quantity: 50\n }\n ]\n};\n\nexport const organizationHandlers = [\n http.get('/tags.json', () => HttpResponse.json(tagsSample)),\n http.get('/versions.json', () => HttpResponse.json(releasesSample)),\n http.get(`${tenantadmApiUrlv1}/user/tenant`, () => HttpResponse.json(mockApiResponses.organization.organization)),\n http.put(\n `${tenantadmApiUrlv2}/tenants/:tenantId/child`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/tenants/:tenantId/cancel`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n // TODO: add validation once spec is fixed (accepts `device_limits`)\n http.post(`${tenantadmApiUrlv2}/tenants`, async ({ request }) => {\n const { users } = await request.json();\n const { email } = users[0];\n if (email.includes('bad')) {\n return new HttpResponse(null, { status: 553 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(`https://hosted.mender.io${tenantadmApiUrlv2}/tenants/trial`, signupHandler),\n http.get(`${tenantadmApiUrlv2}/tenants`, () => HttpResponse.json(tenants)),\n http.get(`${tenantadmApiUrlv2}/billing`, () => HttpResponse.json({ card: { last4: '7890', exp_month: 1, exp_year: 2024, brand: 'testCorp' } })),\n http.get(`${tenantadmApiUrlv2}/billing/profile`, () =>\n HttpResponse.json({\n name: 'company',\n email: 'test@test.com',\n address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' },\n shipping: { address: { state: 'OSLO', line1: 'Blindern', country: 'NO', city: 'OSLO', postal_code: '0123' } }\n })\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/card`,\n validated(() => HttpResponse.json({ intent_id: mockApiResponses.organization.intentId, secret: 'testSecret' }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/card/:intentId/confirm`,\n validated(({ params: { intentId } }) => new HttpResponse(null, { status: intentId == mockApiResponses.organization.intentId ? 200 : 540 }))\n ),\n http.post(`${tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {\n if (tenantId != mockApiResponses.organization.organization.id || !['cancel', 'complete', 'start'].includes(status)) {\n return new HttpResponse(null, { status: 541 });\n }\n if (status === 'start') {\n return HttpResponse.json({ secret: 'testSecret' });\n }\n let plan;\n try {\n const body = await request.json();\n plan = body.plan;\n } catch {\n // no completion;\n }\n if (plan && !Object.keys(PLANS).includes(plan)) {\n return new HttpResponse(null, { status: 542 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.post(\n `${tenantadmApiUrlv2}/tenants/:tenantId/plan`,\n validated(async ({ params: { tenantId }, request }) => {\n const body = await request.json();\n const expectedKeys = ['current_plan', 'requested_plan', 'current_addons', 'requested_addons', 'user_message'];\n if (tenantId != mockApiResponses.organization.organization.id || !Object.keys(body).every(key => expectedKeys.includes(key))) {\n return new HttpResponse(null, { status: 544 });\n }\n if (body.requested_plan && !Object.values(PLANS).some(item => item.name === body.requested_plan)) {\n return new HttpResponse(null, { status: 545 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.post(\n `${tenantadmApiUrlv2}/contact/support`,\n validated(async ({ request }) => {\n const { subject, body } = await request.json();\n if (!(subject && body)) {\n return new HttpResponse(null, { status: 543 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.patch(\n `${tenantadmApiUrlv2}/billing/profile`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/profile`,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.post(\n `${tenantadmApiUrlv2}/billing/subscription`,\n validated(() => new HttpResponse(null, { status: 202 }))\n ),\n http.post(`${tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => HttpResponse.json(invoicePreviewBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/subscription`, () => HttpResponse.json(subscriptionBasic)),\n http.get(`${tenantadmApiUrlv2}/billing/products`, () => HttpResponse.json(mockApiResponses.organization.products)),\n http.get(`${auditLogsApiUrl}/logs`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const perPage = Number(searchParams.get('per_page'));\n if (perPage === 500) {\n return HttpResponse.json([\n { meta: mockApiResponses.organization.auditlog.events[2].meta, time: mockApiResponses.organization.auditlog.events[1].time, action: 'close_terminal' }\n ]);\n }\n return new HttpResponse(JSON.stringify(mockApiResponses.organization.auditlog.events), {\n headers: { [headerNames.total]: mockApiResponses.organization.auditlog.events.length }\n });\n }),\n http.get(`${auditLogsApiUrl}/logs/export`, () =>\n HttpResponse.text(`action,actor.id,actor.type,actor.email,actor.identity_data,object.id,object.type,object.user.email,object.deployment.name,object.deployment.artifact_name,change\n update,5c56c2ed-2a9a-5de9-bb86-cf38b3d4a5e1,user,test@example.coim,,067f23a9-76a5-5585-b119-32402a120978,user,test@example.com,,,\"Update user 067f23a9-76a5-5585-b119-32402a120978 (test@example.com).\n Diff:\n --- Original\n +++ Current\n @@ -9 +9,2 @@\n - \"\"RBAC_ROLE_OBSERVER\"\"\n + \"\"RBAC_ROLE_OBSERVER\"\",\n + \"\"RBAC_ROLE_PERMIT_ALL\"\"\n \"\n `)\n ),\n http.get(`${iotManagerBaseURL}/integrations`, () =>\n HttpResponse.json([\n { connection_string: 'something_else', id: 1, provider: 'iot-hub' },\n { id: 2, provider: 'iot-core', something: 'new' }\n ])\n ),\n http.post(\n `${iotManagerBaseURL}/integrations`,\n validated(() => HttpResponse.json([{ connection_string: 'something_else', provider: 'iot-hub' }]))\n ),\n http.put(\n `${iotManagerBaseURL}/integrations/:integrationId`,\n validated(({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 547 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.put(\n `${iotManagerBaseURL}/integrations/:integrationId/credentials`,\n validated(({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 548 });\n }\n return new HttpResponse(null, { status: 200 });\n })\n ),\n http.delete(`${iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {\n if (!integrationId) {\n return new HttpResponse(null, { status: 549 });\n }\n return new HttpResponse(null, { status: 200 });\n }),\n http.get(`${iotManagerBaseURL}/events`, ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n return HttpResponse.json(webhookEvents.slice(page - 1, page * perPage));\n }),\n http.get(ssoIdpApiUrlv1, () =>\n HttpResponse.json([\n { id: '1', issuer: 'https://samltest.id/saml/idp', valid_until: '2038-08-24T21:14:09Z' },\n { id: '2', issuer: 'https://samltest2.id/saml/idp', valid_until: '2030-10-24T21:14:09Z' }\n ])\n ),\n http.post(\n ssoIdpApiUrlv1,\n validated(() => new HttpResponse(null, { status: 200 }))\n ),\n http.get(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {\n if (!configId) {\n return new HttpResponse(null, { status: 550 });\n }\n return HttpResponse.json({ email: 'user@acme.com', password: 'mypass1234', login: { google: 'bob@gmail.com' }, config: '<div>not quite right</div>' });\n }),\n http.put(\n `${ssoIdpApiUrlv1}/:configId`,\n validated(({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 551 }))\n ),\n http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 }))\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 _northern_tech_utils_helpers = require("@northern.tech/utils/helpers");
6
7
  let msw = require("msw");
@@ -103,10 +104,10 @@ const releaseHandlers = [
103
104
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/:id`, () => new msw.HttpResponse(null, { status: 200 })),
104
105
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/:id/download`, () => msw.HttpResponse.json({ uri: "https://testlocation.com/artifact.mender" })),
105
106
  msw.http.delete(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/:id`, ({ params: { id } }) => new msw.HttpResponse(null, { status: id === require_mockData.mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })),
106
- msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {
107
+ msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/:id`, require_validation.validated(async ({ params: { id }, request }) => {
107
108
  const { description } = await request.json();
108
109
  return new msw.HttpResponse(null, { status: id === require_mockData.mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });
109
- }),
110
+ })),
110
111
  msw.http.post(`${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/generate`, () => new msw.HttpResponse(null, { headers: {
111
112
  [_northern_tech_utils_constants.headerNames.location]: `${_northern_tech_utils_constants.deploymentsApiUrl}/artifacts/generate/${require_mockData.mockApiResponses.releases.byId.r1.artifacts[0].id}`,
112
113
  status: 201
@@ -136,15 +137,15 @@ const releaseHandlers = [
136
137
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/:name`, () => msw.HttpResponse.json(require_mockData.mockApiResponses.releases.byId.r1)),
137
138
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/releases/all/tags`, () => msw.HttpResponse.json(["foo", "bar"])),
138
139
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/releases/all/types`, () => msw.HttpResponse.json(["single-file", "not-this"])),
139
- msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {
140
+ msw.http.put(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/:name/tags`, require_validation.validated(async ({ params: { name }, request }) => {
140
141
  const tags = await request.json();
141
142
  if (name && tags.every((i) => i && i.toString() === i)) return new msw.HttpResponse(null, { status: 200 });
142
143
  return new msw.HttpResponse(null, { status: 593 });
143
- }),
144
- msw.http.patch(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {
144
+ })),
145
+ msw.http.patch(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/:name`, require_validation.validated(async ({ params: { name }, request }) => {
145
146
  const { notes } = await request.json();
146
147
  return new msw.HttpResponse(null, { status: name && notes.length ? 200 : 594 });
147
- }),
148
+ })),
148
149
  msw.http.get(`${_northern_tech_utils_constants.deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {
149
150
  const jobs = Object.values(deltaJobs);
150
151
  return new msw.HttpResponse(JSON.stringify(jobs), { headers: { [_northern_tech_utils_constants.headerNames.total]: jobs.length } });
@@ -1 +1 @@
1
- {"version":3,"file":"releaseHandlers.cjs","names":["http","deploymentsApiUrl","HttpResponse","mockApiResponses","headerNames","deploymentsApiUrlV2","releasesList","SORTING_OPTIONS"],"sources":["../../src/requestHandlers/releaseHandlers.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 { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(`${deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n }),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n }),\n http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":";;;;;;;AAoBA,MAAM,YAAY;CAChB,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB,CAAC,aAAa;EACvC,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB;GAAC;GAAiB;GAAqB;GAAgB;GAAe;EAC/F,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB;GAAC;GAAc;GAAoB;GAAmB;EAC/E,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB,CAAC,aAAa;EACvC,SAAS;EACT,QAAQ;EACT;CACF;AAED,MAAM,sBAAsB;CAC1B,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,aAAa;EACxC,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B;GAAC;GAAiB;GAAqB;GAAgB;GAAe;EAChG,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,cAAc,mBAAmB;EAC5D,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,aAAa;EACxC,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACF;AAED,MAAa,kBAAkB;CAC7BA,IAAAA,KAAK,IAAI,GAAGC,+BAAAA,kBAAkB,uBAAuB,IAAIC,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC7FF,IAAAA,KAAK,IAAI,GAAGC,+BAAAA,kBAAkB,gCAAgCC,IAAAA,aAAa,KAAK,EAAE,KAAK,4CAA4C,CAAC,CAAC;CACrIF,IAAAA,KAAK,OACH,GAAGC,+BAAAA,kBAAkB,kBACpB,EAAE,QAAQ,EAAE,WAAW,IAAIC,IAAAA,aAAa,MAAM,EAAE,QAAQ,OAAOC,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG,KAAK,MAAM,KAAK,CAAC,CACjI;CACDH,IAAAA,KAAK,IAAI,GAAGC,+BAAAA,kBAAkB,iBAAiB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc;EACpF,MAAM,EAAE,gBAAgB,MAAM,QAAQ,MAAM;AAC5C,SAAO,IAAIC,IAAAA,aAAa,MAAM,EAAE,QAAQ,OAAOC,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG,MAAM,cAAc,MAAM,KAAK,CAAC;GAC9H;CACFH,IAAAA,KAAK,KACH,GAAGC,+BAAAA,kBAAkB,4BAEnB,IAAIC,IAAAA,aAAa,MAAM,EACrB,SAAS;GAAGE,+BAAAA,YAAY,WAAW,GAAGH,+BAAAA,kBAAkB,sBAAsBE,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG;EAAM,QAAQ;EAAK,EACjJ,CAAC,CACL;CACDH,IAAAA,KAAK,KAAK,GAAGC,+BAAAA,kBAAkB,mBAAmB,IAAIC,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC1FF,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,wBAAwB,OAAO,EAAE,cAAc;EAC7E,MAAM,EAAE,iBAAiB,IAAI,IAAI,QAAQ,IAAI;EAC7C,MAAM,OAAO,OAAO,aAAa,IAAI,OAAO,CAAC;EAC7C,MAAM,UAAU,OAAO,aAAa,IAAI,WAAW,CAAC;AACpD,MAAI,CAAC,QAAQ,CAAC;GAAC;GAAG;GAAI;GAAI;GAAI;GAAK;GAAK;GAAI,CAAC,SAAS,QAAQ,CAC5D,QAAO,IAAIH,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;AAEhD,MAAI,aAAa,IAAI,cAAc,CACjC,QAAOA,IAAAA,aAAa,KAAK,EAAE,CAAC;AAE9B,MAAI,QAAQ,GACV,QAAO,IAAIA,IAAAA,aAAa,KAAK,UAAU,CAACC,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,CAAC,EAAE,EAAE,SAAS,GAAGC,+BAAAA,YAAY,QAAQ,GAAG,EAAE,CAAC;EAEvH,MAAM,OAAO,aAAa,IAAI,OAAO;EACrC,MAAM,qBAAqBE,iBAAAA,aAAa,MAAA,GAAA,6BAAA,YAAgB,KAAK,SAASC,+BAAAA,gBAAgB,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AACjJ,MAAI,SAAS,KAAK,YAAY,KAAK,aAAa,IAAI,OAAO,CACzD,QAAOL,IAAAA,aAAa,KAAK,CAACC,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,CAAC;AAE/D,MAAI,aAAa,IAAI,OAAO,CAC1B,QAAO,IAAID,IAAAA,aAAa,KAAK,UAAU,mBAAmB,EAAE,EAAE,SAAS,GAAGE,+BAAAA,YAAY,QAAQ,MAAM,EAAE,CAAC;AAEzG,SAAO,IAAIF,IAAAA,aAAa,KAAK,UAAU,mBAAmB,EAAE,EAAE,SAAS,GAAGE,+BAAAA,YAAY,QAAQE,iBAAAA,aAAa,QAAQ,EAAE,CAAC;GACtH;CACFN,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,oCAAoCH,IAAAA,aAAa,KAAKC,iBAAAA,iBAAiB,SAAS,KAAK,GAAG,CAAC;CACzHH,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,2BAA2BH,IAAAA,aAAa,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;CAC7FF,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,4BAA4BH,IAAAA,aAAa,KAAK,CAAC,eAAe,WAAW,CAAC,CAAC;CAC3GF,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,mCAAmC,OAAO,EAAE,QAAQ,EAAE,QAAQ,cAAc;EAC1G,MAAM,OAAO,MAAM,QAAQ,MAAM;AACjC,MAAI,QAAQ,KAAK,OAAM,MAAK,KAAK,EAAE,UAAU,KAAK,EAAE,CAClD,QAAO,IAAIH,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;AAEhD,SAAO,IAAIA,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;GAC9C;CACFF,IAAAA,KAAK,MAAM,GAAGK,+BAAAA,oBAAoB,8BAA8B,OAAO,EAAE,QAAQ,EAAE,QAAQ,cAAc;EACvG,MAAM,EAAE,UAAU,MAAM,QAAQ,MAAM;AACtC,SAAO,IAAIH,IAAAA,aAAa,MAAM,EAAE,QAAQ,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC;GAC3E;CACFF,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,yCAAyC;EACvE,MAAM,OAAO,OAAO,OAAO,UAAU;AACrC,SAAO,IAAIH,IAAAA,aAAa,KAAK,UAAU,KAAK,EAAE,EAAE,SAAS,GAAGE,+BAAAA,YAAY,QAAQ,KAAK,QAAQ,EAAE,CAAC;GAChG;CACFJ,IAAAA,KAAK,IAAI,GAAGK,+BAAAA,oBAAoB,2CAA2C,EAAE,QAAQ,EAAE,cAAc;EACnG,MAAM,aAAa,oBAAoB;AACvC,MAAI,WACF,QAAOH,IAAAA,aAAa,KAAK,WAAW;AAEtC,SAAO,IAAIA,IAAAA,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;GAC9C;CACH"}
1
+ {"version":3,"file":"releaseHandlers.cjs","names":["http","deploymentsApiUrl","HttpResponse","mockApiResponses","validated","headerNames","deploymentsApiUrlV2","releasesList","SORTING_OPTIONS"],"sources":["../../src/requestHandlers/releaseHandlers.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 { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\nimport { validated } from './validation';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(\n `${deploymentsApiUrl}/artifacts/:id`,\n validated(async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n })\n ),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(\n `${deploymentsApiUrlV2}/deployments/releases/:name/tags`,\n validated(async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n })\n ),\n http.patch(\n `${deploymentsApiUrlV2}/deployments/releases/:name`,\n validated(async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n })\n ),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { mockApiResponses, releasesList } from "../mockData.js";
2
+ import { n as validated } from "../validation-JDM_vsFz.js";
2
3
  import { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from "@northern.tech/utils/constants";
3
4
  import { customSort } from "@northern.tech/utils/helpers";
4
5
  import { HttpResponse, http } from "msw";
@@ -101,10 +102,10 @@ const releaseHandlers = [
101
102
  http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),
102
103
  http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: "https://testlocation.com/artifact.mender" })),
103
104
  http.delete(`${deploymentsApiUrl}/artifacts/:id`, ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })),
104
- http.put(`${deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {
105
+ http.put(`${deploymentsApiUrl}/artifacts/:id`, validated(async ({ params: { id }, request }) => {
105
106
  const { description } = await request.json();
106
107
  return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });
107
- }),
108
+ })),
108
109
  http.post(`${deploymentsApiUrl}/artifacts/generate`, () => new HttpResponse(null, { headers: {
109
110
  [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`,
110
111
  status: 201
@@ -134,15 +135,15 @@ const releaseHandlers = [
134
135
  http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),
135
136
  http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(["foo", "bar"])),
136
137
  http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(["single-file", "not-this"])),
137
- http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {
138
+ http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, validated(async ({ params: { name }, request }) => {
138
139
  const tags = await request.json();
139
140
  if (name && tags.every((i) => i && i.toString() === i)) return new HttpResponse(null, { status: 200 });
140
141
  return new HttpResponse(null, { status: 593 });
141
- }),
142
- http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {
142
+ })),
143
+ http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, validated(async ({ params: { name }, request }) => {
143
144
  const { notes } = await request.json();
144
145
  return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });
145
- }),
146
+ })),
146
147
  http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {
147
148
  const jobs = Object.values(deltaJobs);
148
149
  return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });
@@ -1 +1 @@
1
- {"version":3,"file":"releaseHandlers.js","names":[],"sources":["../../src/requestHandlers/releaseHandlers.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 { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(`${deploymentsApiUrl}/artifacts/:id`, async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n }),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(`${deploymentsApiUrlV2}/deployments/releases/:name/tags`, async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n }),\n http.patch(`${deploymentsApiUrlV2}/deployments/releases/:name`, async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":"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"}
1
+ {"version":3,"file":"releaseHandlers.js","names":[],"sources":["../../src/requestHandlers/releaseHandlers.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 { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from '@northern.tech/utils/constants';\nimport { customSort } from '@northern.tech/utils/helpers';\nimport { HttpResponse, http } from 'msw';\n\nimport { mockApiResponses, releasesList } from '../mockData';\nimport { validated } from './validation';\n\nconst deltaJobs = {\n 'delta-job-1': {\n id: 'delta-job-1',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.2.1',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.2.1',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'success'\n },\n 'delta-job-2': {\n id: 'delta-job-2',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'failed'\n },\n 'delta-job-3': {\n id: 'delta-job-3',\n to_release: 'mender-demo-artifact-3.3.1',\n from_release: 'mender-demo-artifact-3.3.0',\n to_version: 'mender-demo-artifact-3.3.1',\n from_version: 'mender-demo-artifact-3.3.0',\n device_types_compatible: ['beaglebone', 'beaglebone-yocto', 'beaglebone-yocto'],\n started: '2022-07-11T20:49:00.000Z',\n status: 'pending'\n },\n 'delta-job-4': {\n id: 'delta-job-4',\n to_release: 'mender-demo-artifact-3.2.0',\n from_release: 'mender-demo-artifact-3.1.0',\n to_version: 'mender-demo-artifact-3.2.0',\n from_version: 'mender-demo-artifact-3.1.0',\n device_types_compatible: ['qemux86-64'],\n started: '2022-07-10T15:30:00.000Z',\n status: 'artifact_uploaded'\n }\n};\n\nconst mockDeltaJobDetails = {\n 'delta-job-1': {\n ...deltaJobs['delta-job-1'],\n delta_artifact_size: 1024000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nProcessing artifacts...\\nDelta generation completed successfully at 2022-07-11T20:52:15.000Z',\n to_artifact_size: 2048000\n },\n 'delta-job-2': {\n ...deltaJobs['delta-job-2'],\n delta_artifact_size: null,\n deployment_id: 'd2',\n devices_types_compatible: ['raspberrypi0w', 'raspberrypi0-wifi', 'raspberrypi3', 'raspberrypi4'],\n exit_code: 1,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nError: incompatible artifact types\\nDelta generation failed at 2022-07-11T20:51:30.000Z',\n to_artifact_size: 3072000\n },\n 'delta-job-3': {\n ...deltaJobs['delta-job-3'],\n delta_artifact_size: null,\n deployment_id: 'd3',\n devices_types_compatible: ['beaglebone', 'beaglebone-yocto'],\n exit_code: null,\n log: 'Delta generation started at 2022-07-11T20:49:00.000Z\\nQueued for processing...',\n to_artifact_size: 2560000\n },\n 'delta-job-4': {\n ...deltaJobs['delta-job-4'],\n delta_artifact_size: 512000,\n deployment_id: 'd1',\n devices_types_compatible: ['qemux86-64'],\n exit_code: 0,\n log: 'Delta generation started at 2022-07-10T15:30:00.000Z\\nProcessing artifacts...\\nArtifact uploaded successfully at 2022-07-10T15:45:20.000Z',\n to_artifact_size: 1536000\n }\n};\n\nexport const releaseHandlers = [\n http.get(`${deploymentsApiUrl}/artifacts/:id`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrl}/artifacts/:id/download`, () => HttpResponse.json({ uri: 'https://testlocation.com/artifact.mender' })),\n http.delete(\n `${deploymentsApiUrl}/artifacts/:id`,\n ({ params: { id } }) => new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id ? 200 : 591 })\n ),\n http.put(\n `${deploymentsApiUrl}/artifacts/:id`,\n validated(async ({ params: { id }, request }) => {\n const { description } = await request.json();\n return new HttpResponse(null, { status: id === mockApiResponses.releases.byId.r1.artifacts[0].id && description ? 200 : 592 });\n })\n ),\n http.post(\n `${deploymentsApiUrl}/artifacts/generate`,\n () =>\n new HttpResponse(null, {\n headers: { [headerNames.location]: `${deploymentsApiUrl}/artifacts/generate/${mockApiResponses.releases.byId.r1.artifacts[0].id}`, status: 201 }\n })\n ),\n http.post(`${deploymentsApiUrl}/artifacts`, () => new HttpResponse(null, { status: 200 })),\n http.get(`${deploymentsApiUrlV2}/deployments/releases`, async ({ request }) => {\n const { searchParams } = new URL(request.url);\n const page = Number(searchParams.get('page'));\n const perPage = Number(searchParams.get('per_page'));\n if (!page || ![1, 10, 20, 50, 100, 250, 500].includes(perPage)) {\n return new HttpResponse(null, { status: 593 });\n }\n if (searchParams.get('device_type')) {\n return HttpResponse.json([]);\n }\n if (page == 42) {\n return new HttpResponse(JSON.stringify([mockApiResponses.releases.byId.r1]), { headers: { [headerNames.total]: 1 } });\n }\n const sort = searchParams.get('sort');\n const releaseListSection = releasesList.sort(customSort(sort.includes(SORTING_OPTIONS.desc), 'name')).slice((page - 1) * perPage, page * perPage);\n if (page === 1 && perPage === 1 && searchParams.get('name')) {\n return HttpResponse.json([mockApiResponses.releases.byId.r1]);\n }\n if (searchParams.get('name')) {\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: 1234 } });\n }\n return new HttpResponse(JSON.stringify(releaseListSection), { headers: { [headerNames.total]: releasesList.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/:name`, () => HttpResponse.json(mockApiResponses.releases.byId.r1)),\n http.get(`${deploymentsApiUrlV2}/releases/all/tags`, () => HttpResponse.json(['foo', 'bar'])),\n http.get(`${deploymentsApiUrlV2}/releases/all/types`, () => HttpResponse.json(['single-file', 'not-this'])),\n http.put(\n `${deploymentsApiUrlV2}/deployments/releases/:name/tags`,\n validated(async ({ params: { name }, request }) => {\n const tags = await request.json();\n if (name && tags.every(i => i && i.toString() === i)) {\n return new HttpResponse(null, { status: 200 });\n }\n return new HttpResponse(null, { status: 593 });\n })\n ),\n http.patch(\n `${deploymentsApiUrlV2}/deployments/releases/:name`,\n validated(async ({ params: { name }, request }) => {\n const { notes } = await request.json();\n return new HttpResponse(null, { status: name && notes.length ? 200 : 594 });\n })\n ),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs`, () => {\n const jobs = Object.values(deltaJobs);\n return new HttpResponse(JSON.stringify(jobs), { headers: { [headerNames.total]: jobs.length } });\n }),\n http.get(`${deploymentsApiUrlV2}/deployments/releases/delta/jobs/:jobId`, ({ params: { jobId } }) => {\n const jobDetails = mockDeltaJobDetails[jobId];\n if (jobDetails) {\n return HttpResponse.json(jobDetails);\n }\n return new HttpResponse(null, { status: 404 });\n })\n];\n"],"mappings":";;;;;;AAqBA,MAAM,YAAY;CAChB,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB,CAAC,aAAa;EACvC,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB;GAAC;GAAiB;GAAqB;GAAgB;GAAe;EAC/F,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB;GAAC;GAAc;GAAoB;GAAmB;EAC/E,SAAS;EACT,QAAQ;EACT;CACD,eAAe;EACb,IAAI;EACJ,YAAY;EACZ,cAAc;EACd,YAAY;EACZ,cAAc;EACd,yBAAyB,CAAC,aAAa;EACvC,SAAS;EACT,QAAQ;EACT;CACF;AAED,MAAM,sBAAsB;CAC1B,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,aAAa;EACxC,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B;GAAC;GAAiB;GAAqB;GAAgB;GAAe;EAChG,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,cAAc,mBAAmB;EAC5D,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACD,eAAe;EACb,GAAG,UAAU;EACb,qBAAqB;EACrB,eAAe;EACf,0BAA0B,CAAC,aAAa;EACxC,WAAW;EACX,KAAK;EACL,kBAAkB;EACnB;CACF;AAED,MAAa,kBAAkB;CAC7B,KAAK,IAAI,GAAG,kBAAkB,uBAAuB,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC7F,KAAK,IAAI,GAAG,kBAAkB,gCAAgC,aAAa,KAAK,EAAE,KAAK,4CAA4C,CAAC,CAAC;CACrI,KAAK,OACH,GAAG,kBAAkB,kBACpB,EAAE,QAAQ,EAAE,WAAW,IAAI,aAAa,MAAM,EAAE,QAAQ,OAAO,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG,KAAK,MAAM,KAAK,CAAC,CACjI;CACD,KAAK,IACH,GAAG,kBAAkB,iBACrB,UAAU,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc;EAC/C,MAAM,EAAE,gBAAgB,MAAM,QAAQ,MAAM;AAC5C,SAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,OAAO,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG,MAAM,cAAc,MAAM,KAAK,CAAC;GAC9H,CACH;CACD,KAAK,KACH,GAAG,kBAAkB,4BAEnB,IAAI,aAAa,MAAM,EACrB,SAAS;GAAG,YAAY,WAAW,GAAG,kBAAkB,sBAAsB,iBAAiB,SAAS,KAAK,GAAG,UAAU,GAAG;EAAM,QAAQ;EAAK,EACjJ,CAAC,CACL;CACD,KAAK,KAAK,GAAG,kBAAkB,mBAAmB,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC,CAAC;CAC1F,KAAK,IAAI,GAAG,oBAAoB,wBAAwB,OAAO,EAAE,cAAc;EAC7E,MAAM,EAAE,iBAAiB,IAAI,IAAI,QAAQ,IAAI;EAC7C,MAAM,OAAO,OAAO,aAAa,IAAI,OAAO,CAAC;EAC7C,MAAM,UAAU,OAAO,aAAa,IAAI,WAAW,CAAC;AACpD,MAAI,CAAC,QAAQ,CAAC;GAAC;GAAG;GAAI;GAAI;GAAI;GAAK;GAAK;GAAI,CAAC,SAAS,QAAQ,CAC5D,QAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;AAEhD,MAAI,aAAa,IAAI,cAAc,CACjC,QAAO,aAAa,KAAK,EAAE,CAAC;AAE9B,MAAI,QAAQ,GACV,QAAO,IAAI,aAAa,KAAK,UAAU,CAAC,iBAAiB,SAAS,KAAK,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,YAAY,QAAQ,GAAG,EAAE,CAAC;EAEvH,MAAM,OAAO,aAAa,IAAI,OAAO;EACrC,MAAM,qBAAqB,aAAa,KAAK,WAAW,KAAK,SAAS,gBAAgB,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AACjJ,MAAI,SAAS,KAAK,YAAY,KAAK,aAAa,IAAI,OAAO,CACzD,QAAO,aAAa,KAAK,CAAC,iBAAiB,SAAS,KAAK,GAAG,CAAC;AAE/D,MAAI,aAAa,IAAI,OAAO,CAC1B,QAAO,IAAI,aAAa,KAAK,UAAU,mBAAmB,EAAE,EAAE,SAAS,GAAG,YAAY,QAAQ,MAAM,EAAE,CAAC;AAEzG,SAAO,IAAI,aAAa,KAAK,UAAU,mBAAmB,EAAE,EAAE,SAAS,GAAG,YAAY,QAAQ,aAAa,QAAQ,EAAE,CAAC;GACtH;CACF,KAAK,IAAI,GAAG,oBAAoB,oCAAoC,aAAa,KAAK,iBAAiB,SAAS,KAAK,GAAG,CAAC;CACzH,KAAK,IAAI,GAAG,oBAAoB,2BAA2B,aAAa,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;CAC7F,KAAK,IAAI,GAAG,oBAAoB,4BAA4B,aAAa,KAAK,CAAC,eAAe,WAAW,CAAC,CAAC;CAC3G,KAAK,IACH,GAAG,oBAAoB,mCACvB,UAAU,OAAO,EAAE,QAAQ,EAAE,QAAQ,cAAc;EACjD,MAAM,OAAO,MAAM,QAAQ,MAAM;AACjC,MAAI,QAAQ,KAAK,OAAM,MAAK,KAAK,EAAE,UAAU,KAAK,EAAE,CAClD,QAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;AAEhD,SAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;GAC9C,CACH;CACD,KAAK,MACH,GAAG,oBAAoB,8BACvB,UAAU,OAAO,EAAE,QAAQ,EAAE,QAAQ,cAAc;EACjD,MAAM,EAAE,UAAU,MAAM,QAAQ,MAAM;AACtC,SAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,QAAQ,MAAM,SAAS,MAAM,KAAK,CAAC;GAC3E,CACH;CACD,KAAK,IAAI,GAAG,oBAAoB,yCAAyC;EACvE,MAAM,OAAO,OAAO,OAAO,UAAU;AACrC,SAAO,IAAI,aAAa,KAAK,UAAU,KAAK,EAAE,EAAE,SAAS,GAAG,YAAY,QAAQ,KAAK,QAAQ,EAAE,CAAC;GAChG;CACF,KAAK,IAAI,GAAG,oBAAoB,2CAA2C,EAAE,QAAQ,EAAE,cAAc;EACnG,MAAM,aAAa,oBAAoB;AACvC,MAAI,WACF,QAAO,aAAa,KAAK,WAAW;AAEtC,SAAO,IAAI,aAAa,MAAM,EAAE,QAAQ,KAAK,CAAC;GAC9C;CACH"}
@@ -1,4 +1,4 @@
1
- require("../setupTests.cjs");
1
+ require("../chunk-CKQMccvm.cjs");
2
2
  const require_requestHandlers_deploymentHandlers = require("./deploymentHandlers.cjs");
3
3
  const require_requestHandlers_deviceHandlers = require("./deviceHandlers.cjs");
4
4
  const require_requestHandlers_monitorHandlers = require("./monitorHandlers.cjs");