@northern.tech/testing 0.8.1 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mockData.cjs +1302 -0
- package/dist/mockData.cjs.map +1 -0
- package/dist/mockData.d.cts +662 -0
- package/dist/mockData.d.ts +662 -0
- package/dist/mockData.js +1280 -0
- package/dist/mockData.js.map +1 -0
- package/dist/public/baseTestConfig.json +17 -0
- package/dist/requestHandlers/deploymentHandlers.cjs +193 -0
- package/dist/requestHandlers/deploymentHandlers.cjs.map +1 -0
- package/dist/requestHandlers/deploymentHandlers.d.cts +7 -0
- package/dist/requestHandlers/deploymentHandlers.d.ts +7 -0
- package/dist/requestHandlers/deploymentHandlers.js +191 -0
- package/dist/requestHandlers/deploymentHandlers.js.map +1 -0
- package/dist/requestHandlers/deviceHandlers.cjs +432 -0
- package/dist/requestHandlers/deviceHandlers.cjs.map +1 -0
- package/dist/requestHandlers/deviceHandlers.d.cts +22 -0
- package/dist/requestHandlers/deviceHandlers.d.ts +22 -0
- package/dist/requestHandlers/deviceHandlers.js +428 -0
- package/dist/requestHandlers/deviceHandlers.js.map +1 -0
- package/dist/requestHandlers/monitorHandlers.cjs +23 -0
- package/dist/requestHandlers/monitorHandlers.cjs.map +1 -0
- package/dist/requestHandlers/monitorHandlers.d.cts +7 -0
- package/dist/requestHandlers/monitorHandlers.d.ts +7 -0
- package/dist/requestHandlers/monitorHandlers.js +21 -0
- package/dist/requestHandlers/monitorHandlers.js.map +1 -0
- package/dist/requestHandlers/organizationHandlers.cjs +312 -0
- package/dist/requestHandlers/organizationHandlers.cjs.map +1 -0
- package/dist/requestHandlers/organizationHandlers.d.cts +7 -0
- package/dist/requestHandlers/organizationHandlers.d.ts +7 -0
- package/dist/requestHandlers/organizationHandlers.js +310 -0
- package/dist/requestHandlers/organizationHandlers.js.map +1 -0
- package/dist/requestHandlers/releaseHandlers.cjs +161 -0
- package/dist/requestHandlers/releaseHandlers.cjs.map +1 -0
- package/dist/requestHandlers/releaseHandlers.d.cts +7 -0
- package/dist/requestHandlers/releaseHandlers.d.ts +7 -0
- package/dist/requestHandlers/releaseHandlers.js +159 -0
- package/dist/requestHandlers/releaseHandlers.js.map +1 -0
- package/dist/requestHandlers/requestHandlers.cjs +28 -0
- package/dist/requestHandlers/requestHandlers.cjs.map +1 -0
- package/dist/requestHandlers/requestHandlers.d.cts +6 -0
- package/dist/requestHandlers/requestHandlers.d.ts +7 -0
- package/dist/requestHandlers/requestHandlers.js +27 -0
- package/dist/requestHandlers/requestHandlers.js.map +1 -0
- package/dist/requestHandlers/userHandlers.cjs +141 -0
- package/dist/requestHandlers/userHandlers.cjs.map +1 -0
- package/dist/requestHandlers/userHandlers.d.cts +7 -0
- package/dist/requestHandlers/userHandlers.d.ts +7 -0
- package/dist/requestHandlers/userHandlers.js +139 -0
- package/dist/requestHandlers/userHandlers.js.map +1 -0
- package/dist/setupTests.cjs +173 -0
- package/dist/setupTests.cjs.map +1 -0
- package/dist/setupTests.d.cts +79 -0
- package/dist/setupTests.d.ts +79 -0
- package/dist/setupTests.js +135 -0
- package/dist/setupTests.js.map +1 -0
- package/dist/theme/light.cjs +9 -0
- package/dist/theme/light.cjs.map +1 -0
- package/dist/theme/light.d.cts +7 -0
- package/dist/theme/light.d.ts +7 -0
- package/dist/theme/light.js +8 -0
- package/dist/theme/light.js.map +1 -0
- package/dist/theme/mui.d.cjs +0 -0
- package/dist/theme/mui.d.cts +11 -0
- package/dist/theme/mui.d.ts +11 -0
- package/dist/utils.cjs +21 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +8 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.js +18 -0
- package/dist/utils.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_mockData = require("../mockData.cjs");
|
|
3
|
+
require("../setupTests.cjs");
|
|
4
|
+
let _northern_tech_utils_constants = require("@northern.tech/utils/constants");
|
|
5
|
+
let msw = require("msw");
|
|
6
|
+
//#region src/requestHandlers/organizationHandlers.ts
|
|
7
|
+
const PLANS = {
|
|
8
|
+
os: {
|
|
9
|
+
id: "os",
|
|
10
|
+
name: "Basic"
|
|
11
|
+
},
|
|
12
|
+
professional: {
|
|
13
|
+
id: "professional",
|
|
14
|
+
name: "Professional"
|
|
15
|
+
},
|
|
16
|
+
enterprise: {
|
|
17
|
+
id: "enterprise",
|
|
18
|
+
name: "Enterprise"
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const releasesSample = {
|
|
22
|
+
lts: ["3.3"],
|
|
23
|
+
releases: {
|
|
24
|
+
"3.2": {
|
|
25
|
+
"3.2.1": {
|
|
26
|
+
release_date: "2022-02-02",
|
|
27
|
+
release: "3.2.1",
|
|
28
|
+
repos: [
|
|
29
|
+
{
|
|
30
|
+
name: "integration",
|
|
31
|
+
version: "1.2.3"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "mender",
|
|
35
|
+
version: "3.2.1"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "mender-artifact",
|
|
39
|
+
version: "1.3.7"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "service",
|
|
43
|
+
version: "3.0.0"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "other-service",
|
|
47
|
+
version: "1.1.0"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"3.2.0": {
|
|
52
|
+
release_date: "2022-01-24",
|
|
53
|
+
release: "3.2.0",
|
|
54
|
+
repos: [{
|
|
55
|
+
name: "service",
|
|
56
|
+
version: "3.0.0"
|
|
57
|
+
}, {
|
|
58
|
+
name: "another-service",
|
|
59
|
+
version: "4.1.0"
|
|
60
|
+
}]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"2.7": { "2.7.2": {
|
|
64
|
+
release_date: "2021-11-04",
|
|
65
|
+
release: "2.7.2",
|
|
66
|
+
repos: [{
|
|
67
|
+
name: "service",
|
|
68
|
+
version: "1.1.0"
|
|
69
|
+
}, {
|
|
70
|
+
name: "more-service",
|
|
71
|
+
version: "1.0.2"
|
|
72
|
+
}]
|
|
73
|
+
} },
|
|
74
|
+
"1.0": {
|
|
75
|
+
supported_until: "2018-02",
|
|
76
|
+
"1.0.1": {
|
|
77
|
+
release_date: "2017-04-03",
|
|
78
|
+
release: "1.0.1",
|
|
79
|
+
repos: [{
|
|
80
|
+
name: "service",
|
|
81
|
+
version: "1.0.1"
|
|
82
|
+
}]
|
|
83
|
+
},
|
|
84
|
+
"1.0.0": {
|
|
85
|
+
release_date: "2017-02-16",
|
|
86
|
+
release: "1.0.0",
|
|
87
|
+
repos: [{
|
|
88
|
+
name: "mono-service",
|
|
89
|
+
version: "1.0.0"
|
|
90
|
+
}]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
saas: [
|
|
95
|
+
{
|
|
96
|
+
tag: "saas-v2022.03.10",
|
|
97
|
+
date: "2022-03-09"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
tag: "saas-v2020.09.25",
|
|
101
|
+
date: "2020-09-24"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
tag: "saas-v2020.07.09",
|
|
105
|
+
date: "2020-07-09"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
};
|
|
109
|
+
const tagsSample = [{
|
|
110
|
+
name: "saas-v2023.05.02",
|
|
111
|
+
more: "here"
|
|
112
|
+
}];
|
|
113
|
+
const signupHandler = async ({ request }) => {
|
|
114
|
+
const signup = await request.json();
|
|
115
|
+
if ([
|
|
116
|
+
"email",
|
|
117
|
+
"organization",
|
|
118
|
+
"plan",
|
|
119
|
+
"tos"
|
|
120
|
+
].every((item) => !!signup[item])) return msw.HttpResponse.text("test");
|
|
121
|
+
return new msw.HttpResponse(null, { status: 400 });
|
|
122
|
+
};
|
|
123
|
+
const invoicePreviewBasic = {
|
|
124
|
+
id: "upcoming_in_1RlAkbFlFfXikjZVOHK5VQx0",
|
|
125
|
+
period_start: "2025-07-15T15:25:22Z",
|
|
126
|
+
period_end: "2025-08-15T15:25:22Z",
|
|
127
|
+
total: 3200,
|
|
128
|
+
currency: "usd",
|
|
129
|
+
lines: [{
|
|
130
|
+
description: "50 device × Mender Basic (Tier 1 at $0.00 / month)",
|
|
131
|
+
amount: 0,
|
|
132
|
+
currency: "usd",
|
|
133
|
+
product: "mender_standard",
|
|
134
|
+
quantity: 50,
|
|
135
|
+
price_id: "price_1PYktlFlFfXikjZVh2aNHp7i"
|
|
136
|
+
}, {
|
|
137
|
+
description: "Mender Basic (Tier 1 at $32.00 / month)",
|
|
138
|
+
amount: 3200,
|
|
139
|
+
currency: "usd",
|
|
140
|
+
product: "mender_standard",
|
|
141
|
+
quantity: 0,
|
|
142
|
+
price_id: "price_1PYktlFlFfXikjZVh2aNHp7i"
|
|
143
|
+
}]
|
|
144
|
+
};
|
|
145
|
+
const subscriptionBasic = {
|
|
146
|
+
id: "sub_1RlAjOFlFfXikjZVj5BvpJE4",
|
|
147
|
+
status: "active",
|
|
148
|
+
plan: "os",
|
|
149
|
+
products: [{
|
|
150
|
+
name: "mender_standard",
|
|
151
|
+
quantity: 50
|
|
152
|
+
}]
|
|
153
|
+
};
|
|
154
|
+
const organizationHandlers = [
|
|
155
|
+
msw.http.get("/tags.json", () => msw.HttpResponse.json(tagsSample)),
|
|
156
|
+
msw.http.get("/versions.json", () => msw.HttpResponse.json(releasesSample)),
|
|
157
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv1}/user/tenant`, () => msw.HttpResponse.json(require_mockData.mockApiResponses.organization.organization)),
|
|
158
|
+
msw.http.put(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/:tenantId/child`, () => new msw.HttpResponse(null, { status: 200 })),
|
|
159
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/:tenantId/cancel`, () => new msw.HttpResponse(null, { status: 200 })),
|
|
160
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/trial`, signupHandler),
|
|
161
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants`, async ({ request }) => {
|
|
162
|
+
const { users } = await request.json();
|
|
163
|
+
const { email } = users[0];
|
|
164
|
+
if (email.includes("bad")) return new msw.HttpResponse(null, { status: 553 });
|
|
165
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
166
|
+
}),
|
|
167
|
+
msw.http.post(`https://hosted.mender.io${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/trial`, signupHandler),
|
|
168
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants`, () => msw.HttpResponse.json(require_mockData.tenants)),
|
|
169
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing`, () => msw.HttpResponse.json({ card: {
|
|
170
|
+
last4: "7890",
|
|
171
|
+
exp_month: 1,
|
|
172
|
+
exp_year: 2024,
|
|
173
|
+
brand: "testCorp"
|
|
174
|
+
} })),
|
|
175
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/profile`, () => msw.HttpResponse.json({
|
|
176
|
+
name: "company",
|
|
177
|
+
email: "test@test.com",
|
|
178
|
+
address: {
|
|
179
|
+
state: "OSLO",
|
|
180
|
+
line1: "Blindern",
|
|
181
|
+
country: "NO",
|
|
182
|
+
city: "OSLO",
|
|
183
|
+
postal_code: "0123"
|
|
184
|
+
},
|
|
185
|
+
shipping: { address: {
|
|
186
|
+
state: "OSLO",
|
|
187
|
+
line1: "Blindern",
|
|
188
|
+
country: "NO",
|
|
189
|
+
city: "OSLO",
|
|
190
|
+
postal_code: "0123"
|
|
191
|
+
} }
|
|
192
|
+
})),
|
|
193
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/card`, () => msw.HttpResponse.json({
|
|
194
|
+
intent_id: require_mockData.mockApiResponses.organization.intentId,
|
|
195
|
+
secret: "testSecret"
|
|
196
|
+
})),
|
|
197
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/card/:intentId/confirm`, ({ params: { intentId } }) => new msw.HttpResponse(null, { status: intentId == require_mockData.mockApiResponses.organization.intentId ? 200 : 540 })),
|
|
198
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/:tenantId/upgrade/:status`, async ({ params: { status, tenantId }, request }) => {
|
|
199
|
+
if (tenantId != require_mockData.mockApiResponses.organization.organization.id || ![
|
|
200
|
+
"cancel",
|
|
201
|
+
"complete",
|
|
202
|
+
"start"
|
|
203
|
+
].includes(status)) return new msw.HttpResponse(null, { status: 541 });
|
|
204
|
+
if (status === "start") return msw.HttpResponse.json({ secret: "testSecret" });
|
|
205
|
+
let plan;
|
|
206
|
+
try {
|
|
207
|
+
plan = (await request.json()).plan;
|
|
208
|
+
} catch {}
|
|
209
|
+
if (plan && !Object.keys(PLANS).includes(plan)) return new msw.HttpResponse(null, { status: 542 });
|
|
210
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
211
|
+
}),
|
|
212
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/tenants/:tenantId/plan`, async ({ params: { tenantId }, request }) => {
|
|
213
|
+
const body = await request.json();
|
|
214
|
+
const expectedKeys = [
|
|
215
|
+
"current_plan",
|
|
216
|
+
"requested_plan",
|
|
217
|
+
"current_addons",
|
|
218
|
+
"requested_addons",
|
|
219
|
+
"user_message"
|
|
220
|
+
];
|
|
221
|
+
if (tenantId != require_mockData.mockApiResponses.organization.organization.id || !Object.keys(body).every((key) => expectedKeys.includes(key))) return new msw.HttpResponse(null, { status: 544 });
|
|
222
|
+
if (body.requested_plan && !Object.values(PLANS).some((item) => item.name === body.requested_plan)) return new msw.HttpResponse(null, { status: 545 });
|
|
223
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
224
|
+
}),
|
|
225
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/contact/support`, async ({ request }) => {
|
|
226
|
+
const { subject, body } = await request.json();
|
|
227
|
+
if (!(subject && body)) return new msw.HttpResponse(null, { status: 543 });
|
|
228
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
229
|
+
}),
|
|
230
|
+
msw.http.patch(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/profile`, () => new msw.HttpResponse(null, { status: 200 })),
|
|
231
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/profile`, () => new msw.HttpResponse(null, { status: 200 })),
|
|
232
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/subscription`, () => new msw.HttpResponse(null, { status: 202 })),
|
|
233
|
+
msw.http.post(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/subscription/invoices/preview`, () => msw.HttpResponse.json(invoicePreviewBasic)),
|
|
234
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/subscription`, () => msw.HttpResponse.json(subscriptionBasic)),
|
|
235
|
+
msw.http.get(`${_northern_tech_utils_constants.tenantadmApiUrlv2}/billing/products`, () => msw.HttpResponse.json(require_mockData.mockApiResponses.organization.products)),
|
|
236
|
+
msw.http.get(`${_northern_tech_utils_constants.auditLogsApiUrl}/logs`, ({ request }) => {
|
|
237
|
+
const { searchParams } = new URL(request.url);
|
|
238
|
+
if (Number(searchParams.get("per_page")) === 500) return msw.HttpResponse.json([{
|
|
239
|
+
meta: require_mockData.mockApiResponses.organization.auditlog.events[2].meta,
|
|
240
|
+
time: require_mockData.mockApiResponses.organization.auditlog.events[1].time,
|
|
241
|
+
action: "close_terminal"
|
|
242
|
+
}]);
|
|
243
|
+
return new msw.HttpResponse(JSON.stringify(require_mockData.mockApiResponses.organization.auditlog.events), { headers: { [_northern_tech_utils_constants.headerNames.total]: require_mockData.mockApiResponses.organization.auditlog.events.length } });
|
|
244
|
+
}),
|
|
245
|
+
msw.http.get(`${_northern_tech_utils_constants.auditLogsApiUrl}/logs/export`, () => msw.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
|
|
246
|
+
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).
|
|
247
|
+
Diff:
|
|
248
|
+
--- Original
|
|
249
|
+
+++ Current
|
|
250
|
+
@@ -9 +9,2 @@
|
|
251
|
+
- ""RBAC_ROLE_OBSERVER""
|
|
252
|
+
+ ""RBAC_ROLE_OBSERVER"",
|
|
253
|
+
+ ""RBAC_ROLE_PERMIT_ALL""
|
|
254
|
+
"
|
|
255
|
+
`)),
|
|
256
|
+
msw.http.get(`${_northern_tech_utils_constants.iotManagerBaseURL}/integrations`, () => msw.HttpResponse.json([{
|
|
257
|
+
connection_string: "something_else",
|
|
258
|
+
id: 1,
|
|
259
|
+
provider: "iot-hub"
|
|
260
|
+
}, {
|
|
261
|
+
id: 2,
|
|
262
|
+
provider: "iot-core",
|
|
263
|
+
something: "new"
|
|
264
|
+
}])),
|
|
265
|
+
msw.http.post(`${_northern_tech_utils_constants.iotManagerBaseURL}/integrations`, () => msw.HttpResponse.json([{
|
|
266
|
+
connection_string: "something_else",
|
|
267
|
+
provider: "iot-hub"
|
|
268
|
+
}])),
|
|
269
|
+
msw.http.put(`${_northern_tech_utils_constants.iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {
|
|
270
|
+
if (!integrationId) return new msw.HttpResponse(null, { status: 547 });
|
|
271
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
272
|
+
}),
|
|
273
|
+
msw.http.put(`${_northern_tech_utils_constants.iotManagerBaseURL}/integrations/:integrationId/credentials`, ({ params: { integrationId } }) => {
|
|
274
|
+
if (!integrationId) return new msw.HttpResponse(null, { status: 548 });
|
|
275
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
276
|
+
}),
|
|
277
|
+
msw.http.delete(`${_northern_tech_utils_constants.iotManagerBaseURL}/integrations/:integrationId`, ({ params: { integrationId } }) => {
|
|
278
|
+
if (!integrationId) return new msw.HttpResponse(null, { status: 549 });
|
|
279
|
+
return new msw.HttpResponse(null, { status: 200 });
|
|
280
|
+
}),
|
|
281
|
+
msw.http.get(`${_northern_tech_utils_constants.iotManagerBaseURL}/events`, ({ request }) => {
|
|
282
|
+
const { searchParams } = new URL(request.url);
|
|
283
|
+
const page = Number(searchParams.get("page"));
|
|
284
|
+
const perPage = Number(searchParams.get("per_page"));
|
|
285
|
+
return msw.HttpResponse.json(require_mockData.webhookEvents.slice(page - 1, page * perPage));
|
|
286
|
+
}),
|
|
287
|
+
msw.http.get(_northern_tech_utils_constants.ssoIdpApiUrlv1, () => msw.HttpResponse.json([{
|
|
288
|
+
id: "1",
|
|
289
|
+
issuer: "https://samltest.id/saml/idp",
|
|
290
|
+
valid_until: "2038-08-24T21:14:09Z"
|
|
291
|
+
}, {
|
|
292
|
+
id: "2",
|
|
293
|
+
issuer: "https://samltest2.id/saml/idp",
|
|
294
|
+
valid_until: "2030-10-24T21:14:09Z"
|
|
295
|
+
}])),
|
|
296
|
+
msw.http.post(_northern_tech_utils_constants.ssoIdpApiUrlv1, () => new msw.HttpResponse(null, { status: 200 })),
|
|
297
|
+
msw.http.get(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => {
|
|
298
|
+
if (!configId) return new msw.HttpResponse(null, { status: 550 });
|
|
299
|
+
return msw.HttpResponse.json({
|
|
300
|
+
email: "user@acme.com",
|
|
301
|
+
password: "mypass1234",
|
|
302
|
+
login: { google: "bob@gmail.com" },
|
|
303
|
+
config: "<div>not quite right</div>"
|
|
304
|
+
});
|
|
305
|
+
}),
|
|
306
|
+
msw.http.put(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new msw.HttpResponse(null, { status: configId ? 200 : 551 })),
|
|
307
|
+
msw.http.delete(`${_northern_tech_utils_constants.ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new msw.HttpResponse(null, { status: configId ? 200 : 552 }))
|
|
308
|
+
];
|
|
309
|
+
//#endregion
|
|
310
|
+
exports.organizationHandlers = organizationHandlers;
|
|
311
|
+
|
|
312
|
+
//# sourceMappingURL=organizationHandlers.cjs.map
|
|
@@ -0,0 +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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"}
|