@northern.tech/testing 0.7.1 → 0.8.1

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 (86) hide show
  1. package/package.json +3 -4
  2. package/dist/baseTestConfig.json +0 -17
  3. package/dist/chunk-4UV4MWUU.js +0 -188
  4. package/dist/chunk-4UV4MWUU.js.map +0 -1
  5. package/dist/chunk-5GIOT4M6.js +0 -161
  6. package/dist/chunk-5GIOT4M6.js.map +0 -1
  7. package/dist/chunk-AQYKNNMJ.js +0 -239
  8. package/dist/chunk-AQYKNNMJ.js.map +0 -1
  9. package/dist/chunk-CT35JRBC.js +0 -893
  10. package/dist/chunk-CT35JRBC.js.map +0 -1
  11. package/dist/chunk-HRGVXWMH.js +0 -17
  12. package/dist/chunk-HRGVXWMH.js.map +0 -1
  13. package/dist/chunk-RG3ICJW5.js +0 -34
  14. package/dist/chunk-RG3ICJW5.js.map +0 -1
  15. package/dist/chunk-ROSMRKMF.js +0 -265
  16. package/dist/chunk-ROSMRKMF.js.map +0 -1
  17. package/dist/chunk-TVJ6K2KG.js +0 -318
  18. package/dist/chunk-TVJ6K2KG.js.map +0 -1
  19. package/dist/chunk-WFNPT672.js +0 -29
  20. package/dist/chunk-WFNPT672.js.map +0 -1
  21. package/dist/mockData.cjs +0 -926
  22. package/dist/mockData.cjs.map +0 -1
  23. package/dist/mockData.d.cts +0 -596
  24. package/dist/mockData.d.ts +0 -596
  25. package/dist/mockData.js +0 -45
  26. package/dist/mockData.js.map +0 -1
  27. package/dist/requestHandlers/deploymentHandlers.cjs +0 -1045
  28. package/dist/requestHandlers/deploymentHandlers.cjs.map +0 -1
  29. package/dist/requestHandlers/deploymentHandlers.d.cts +0 -5
  30. package/dist/requestHandlers/deploymentHandlers.d.ts +0 -5
  31. package/dist/requestHandlers/deploymentHandlers.js +0 -8
  32. package/dist/requestHandlers/deploymentHandlers.js.map +0 -1
  33. package/dist/requestHandlers/deviceHandlers.cjs +0 -1113
  34. package/dist/requestHandlers/deviceHandlers.cjs.map +0 -1
  35. package/dist/requestHandlers/deviceHandlers.d.cts +0 -20
  36. package/dist/requestHandlers/deviceHandlers.d.ts +0 -20
  37. package/dist/requestHandlers/deviceHandlers.js +0 -12
  38. package/dist/requestHandlers/deviceHandlers.js.map +0 -1
  39. package/dist/requestHandlers/monitorHandlers.cjs +0 -835
  40. package/dist/requestHandlers/monitorHandlers.cjs.map +0 -1
  41. package/dist/requestHandlers/monitorHandlers.d.cts +0 -5
  42. package/dist/requestHandlers/monitorHandlers.d.ts +0 -5
  43. package/dist/requestHandlers/monitorHandlers.js +0 -8
  44. package/dist/requestHandlers/monitorHandlers.js.map +0 -1
  45. package/dist/requestHandlers/organizationHandlers.cjs +0 -1086
  46. package/dist/requestHandlers/organizationHandlers.cjs.map +0 -1
  47. package/dist/requestHandlers/organizationHandlers.d.cts +0 -5
  48. package/dist/requestHandlers/organizationHandlers.d.ts +0 -5
  49. package/dist/requestHandlers/organizationHandlers.js +0 -8
  50. package/dist/requestHandlers/organizationHandlers.js.map +0 -1
  51. package/dist/requestHandlers/releaseHandlers.cjs +0 -966
  52. package/dist/requestHandlers/releaseHandlers.cjs.map +0 -1
  53. package/dist/requestHandlers/releaseHandlers.d.cts +0 -5
  54. package/dist/requestHandlers/releaseHandlers.d.ts +0 -5
  55. package/dist/requestHandlers/releaseHandlers.js +0 -8
  56. package/dist/requestHandlers/releaseHandlers.js.map +0 -1
  57. package/dist/requestHandlers/requestHandlers.cjs +0 -1975
  58. package/dist/requestHandlers/requestHandlers.cjs.map +0 -1
  59. package/dist/requestHandlers/requestHandlers.d.cts +0 -5
  60. package/dist/requestHandlers/requestHandlers.d.ts +0 -5
  61. package/dist/requestHandlers/requestHandlers.js +0 -35
  62. package/dist/requestHandlers/requestHandlers.js.map +0 -1
  63. package/dist/requestHandlers/userHandlers.cjs +0 -994
  64. package/dist/requestHandlers/userHandlers.cjs.map +0 -1
  65. package/dist/requestHandlers/userHandlers.d.cts +0 -5
  66. package/dist/requestHandlers/userHandlers.d.ts +0 -5
  67. package/dist/requestHandlers/userHandlers.js +0 -8
  68. package/dist/requestHandlers/userHandlers.js.map +0 -1
  69. package/dist/setupTests.cjs +0 -996
  70. package/dist/setupTests.cjs.map +0 -1
  71. package/dist/setupTests.d.cts +0 -77
  72. package/dist/setupTests.d.ts +0 -77
  73. package/dist/setupTests.js +0 -138
  74. package/dist/setupTests.js.map +0 -1
  75. package/dist/theme/light.cjs +0 -41
  76. package/dist/theme/light.cjs.map +0 -1
  77. package/dist/theme/light.d.cts +0 -12
  78. package/dist/theme/light.d.ts +0 -12
  79. package/dist/theme/light.js +0 -7
  80. package/dist/theme/light.js.map +0 -1
  81. package/dist/utils.cjs +0 -71
  82. package/dist/utils.cjs.map +0 -1
  83. package/dist/utils.d.cts +0 -69
  84. package/dist/utils.d.ts +0 -69
  85. package/dist/utils.js +0 -12
  86. package/dist/utils.js.map +0 -1
@@ -1,996 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
-
31
- // src/setupTests.tsx
32
- var setupTests_exports = {};
33
- __export(setupTests_exports, {
34
- TEST_LOCATION: () => TEST_LOCATION,
35
- afterAll: () => afterAll,
36
- afterEach: () => afterEach,
37
- beforeAll: () => beforeAll,
38
- beforeEach: () => beforeEach,
39
- mockAbortController: () => mockAbortController,
40
- render: () => customRender
41
- });
42
- module.exports = __toCommonJS(setupTests_exports);
43
- var import_react3 = __toESM(require("react"), 1);
44
- var import_react_redux2 = require("react-redux");
45
- var import_react_router_dom2 = require("react-router-dom");
46
- var import_jest = require("@emotion/jest");
47
- var import_styles2 = require("@mui/material/styles");
48
- var import_helpers = require("@northern.tech/utils/helpers");
49
- var import_toolkit = require("@reduxjs/toolkit");
50
- var import_react4 = require("@testing-library/react");
51
- var import_vitest2 = require("vitest");
52
- var import_worker_threads = require("worker_threads");
53
-
54
- // src/mockData.ts
55
- var import_constants = require("@northern.tech/utils/constants");
56
- var menderEnvironment = {
57
- features: {
58
- hasMultitenancy: true
59
- },
60
- integrationVersion: "saas-123.34",
61
- menderVersion: "next",
62
- metaMenderVersion: "saas-123.34",
63
- services: {
64
- deploymentsVersion: "1.2.3",
65
- deviceauthVersion: null,
66
- inventoryVersion: null
67
- }
68
- };
69
- var TEST_SESSION_DATETIME = "2019-01-13T13:00:00.000Z";
70
- var testDate = new Date(TEST_SESSION_DATETIME);
71
- var mockDate = new Date(testDate.setMilliseconds(testDate.getMilliseconds() + import_constants.maxSessionAge));
72
- var defaultCreationDate = "2019-01-13T06:25:00.000Z";
73
- var defaultMacAddress = "dc:a6:32:12:ad:bf";
74
- var permissionSetObjectTypes = {
75
- any: "Any",
76
- artifacts: "Artifacts",
77
- empty: "",
78
- groups: "Device groups",
79
- releases: "Releases",
80
- tenantManagement: "Tenant management",
81
- userManagement: "User management"
82
- };
83
- var commonEndpoints = {
84
- artifacts: "^/api/management/v1/deployments/artifacts",
85
- artifactDetails: "^/api/management/v1/deployments/artifacts/[^/]+",
86
- deviceManagement: "^/api/management/(v[1-9])/(devauth|inventory)/"
87
- };
88
- var token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjZTNkMGY4Yy1hZWRlLTQwMzAtYjM5MS03ZDUwMjBlYjg3M2UiLCJzdWIiOiJhMzBhNzgwYi1iODQzLTUzNDQtODBlMy0wZmQ5NWE0ZjZmYzMiLCJleHAiOjE2MDY4MTUzNjksImlhdCI6MTYwNjIxMDU2OSwibWVuZGVyLnRlbmFudCI6IjVmODVjMTdiY2U2MmI3ZmE3ZjVmNzA0MCIsIm1lbmRlci51c2VyIjp0cnVlLCJpc3MiOiJNZW5kZXIgVXNlcnMiLCJzY3AiOiJtZW5kZXIuKiIsIm1lbmRlci5wbGFuIjoicHJvZmVzc2lvbmFsIiwibmJmIjoxNjA2MjEwNTY5fQ.qVgYdCzLTf8OdK9uUctqqaY_HWkIiwpekuGvuGQAXCEgOv4bRNDlZRN_ZRSbxQoARG3pquhScbQrjBV9tcF4irTUPlTn3yrsXNO17DpcbTVeKRkb88RDtIKiRw3orVZ_GlIb-ckTQ5dS-Nqlyyf3Fmrhca-gwt6m_xv2UrmJK6eYYTMfggdRRWb-4u7mEkBI_pHPMTQrT8kJ2BeX-vHgazH9AoH0k85LHtFZQXD7pXHlDZRnLxJXukncwMGDmF17374gavYAIyDIzcC8sEBMDnVXgpikeA1sauzirqix6mAVs6XmxdQO7aF0wfXO1_PTYUA3Nk1oQfMYNlEI3U9uLRJRZIq2L8fmrrBryhstKd4y0KlBbGAQrx8NtRkgajjd1ljMfPBUEZrb7uSerVjneiO-aIBO76CuH0zdklphIjpGJeogkBhe8pAYNggp1XsZHgpZfl7IE5faKaDkMGnutaea--Czor6bhqUNCuY4tR0cpQJbNwy6LS9o1CFy4Log";
89
- var userId = "a30a780b-b843-5344-80e3-0fd95a4f6fc3";
90
- var defaultUser = {
91
- created_ts: "2019-01-01T10:30:00.000Z",
92
- email: "a@b.com",
93
- id: "a1",
94
- roles: ["RBAC_ROLE_PERMIT_ALL"],
95
- tfa_status: "enabled",
96
- verified: true
97
- };
98
- var deviceTypes = { qemu: "qemux86-64" };
99
- var checkInTimeRounded = "2019-01-01T00:00:00.000Z";
100
- var checkInTimeExact = "2019-01-01T10:25:00.000Z";
101
- var mockApiResponses = {
102
- deployments: {
103
- byId: {
104
- d1: {
105
- id: "d1",
106
- name: "test deployment",
107
- created: "2019-01-01T12:30:00.000Z",
108
- devices: {
109
- a1: {
110
- id: "a1",
111
- status: "installing",
112
- attributes: {},
113
- image: { size: 123 }
114
- }
115
- },
116
- statistics: {
117
- status: {
118
- "already-installed": 0,
119
- decommissioned: 0,
120
- downloading: 0,
121
- failure: 0,
122
- installing: 1,
123
- noartifact: 0,
124
- pending: 0,
125
- rebooting: 0,
126
- success: 0
127
- },
128
- total_size: 1234
129
- }
130
- },
131
- d2: {
132
- id: "d2",
133
- name: "test deployment 2",
134
- artifact_name: "r1",
135
- artifacts: ["123"],
136
- created: "2019-01-01T12:25:00.000Z",
137
- device_count: 1,
138
- devices: {
139
- b1: {
140
- attributes: {},
141
- id: "b1",
142
- status: "pending"
143
- }
144
- },
145
- filter: void 0,
146
- group: void 0,
147
- statistics: {
148
- status: {
149
- downloading: 0,
150
- decommissioned: 0,
151
- failure: 0,
152
- installing: 0,
153
- noartifact: 0,
154
- pending: 1,
155
- rebooting: 0,
156
- success: 0,
157
- "already-installed": 0
158
- }
159
- }
160
- },
161
- d3: {
162
- id: "d3",
163
- name: "Test",
164
- phases: [
165
- { id: "0", batch_size: 2, device_count: 2 },
166
- { id: "1", start_ts: "2019-02-04T11:45:10.002Z", batch_size: 3, device_count: 3 },
167
- { id: "2", start_ts: "2019-02-05T11:45:10.002Z", batch_size: 5, device_count: 5 },
168
- { id: "3", start_ts: "2019-02-06T11:45:10.002Z", batch_size: 5, device_count: 5 },
169
- { id: "4", start_ts: "2019-02-21T11:45:10.002Z", batch_size: 5, device_count: 0 }
170
- ],
171
- max_devices: 0,
172
- created: "2019-01-31T12:59:30.020Z",
173
- devices: {},
174
- filter: void 0,
175
- group: void 0,
176
- stats: {
177
- pending: 3,
178
- decommissioned: 0,
179
- failure: 23,
180
- pause_before_committing: 0,
181
- pause_before_rebooting: 0,
182
- installing: 0,
183
- rebooting: 0,
184
- "already-installed": 0,
185
- pause_before_installing: 0,
186
- downloading: 0,
187
- success: 6,
188
- aborted: 0,
189
- noartifact: 0
190
- },
191
- statistics: { total_size: "1234" },
192
- status: "inprogress",
193
- active: true,
194
- device_count: 100,
195
- retries: "0",
196
- type: "software"
197
- }
198
- },
199
- byStatus: {
200
- pending: { deploymentIds: ["d2"] },
201
- inprogress: { deploymentIds: ["d3"] }
202
- }
203
- },
204
- devices: {
205
- byId: {
206
- a1: {
207
- id: "a1",
208
- auth_sets: [
209
- {
210
- id: "auth1",
211
- identity_data: { mac: defaultMacAddress },
212
- pubkey: "-----BEGIN PUBLIC KEY-----\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\n-----END PUBLIC KEY-----\n",
213
- status: "accepted",
214
- ts: defaultCreationDate
215
- }
216
- ],
217
- updated_ts: "2019-01-01T09:25:00.000Z"
218
- },
219
- b1: {
220
- id: "b1",
221
- attributes: {
222
- ipv4_wlan0: "192.168.10.141/24",
223
- device_type: [deviceTypes.qemu]
224
- },
225
- system: {
226
- check_in_time: checkInTimeRounded
227
- },
228
- check_in_time: checkInTimeExact,
229
- check_in_time_exact: checkInTimeExact,
230
- check_in_time_rounded: checkInTimeRounded,
231
- identity_data: { mac: defaultMacAddress },
232
- status: "accepted",
233
- decommissioning: false,
234
- created_ts: defaultCreationDate,
235
- updated_ts: "2019-01-01T09:25:00.000Z",
236
- auth_sets: [
237
- {
238
- id: "auth1",
239
- identity_data: { mac: defaultMacAddress },
240
- pubkey: "-----BEGIN PUBLIC KEY-----\nMIIBojWELzgJ62hcXIhAfqfoNiaB1326XZByZwcnHr5BuSPAgMBAAE=\n-----END PUBLIC KEY-----\n",
241
- ts: defaultCreationDate,
242
- status: "accepted"
243
- }
244
- ]
245
- }
246
- },
247
- groups: {
248
- byId: {
249
- testGroup: {
250
- deviceIds: ["a1", "b1"],
251
- filters: [],
252
- total: 2
253
- },
254
- testGroupDynamic: {
255
- id: "filter1",
256
- name: "filter1",
257
- filters: [{ scope: "system", key: "group", operator: "$eq", value: "things" }]
258
- }
259
- }
260
- },
261
- limits: { standard: 500, micro: 0, system: 0 },
262
- byStatus: {
263
- accepted: { deviceIds: ["a1", "b1"], total: 2 },
264
- active: { deviceIds: [], total: 0 },
265
- inactive: { deviceIds: [], total: 0 },
266
- pending: { deviceIds: ["c1"], total: 1 },
267
- preauthorized: { deviceIds: [], total: 0 },
268
- rejected: { deviceIds: [], total: 0 }
269
- }
270
- },
271
- organization: {
272
- organization: {
273
- id: "1",
274
- addons: [],
275
- name: "test",
276
- plan: "os",
277
- trial: false
278
- },
279
- products: [
280
- {
281
- name: "mender_standard",
282
- billing_unit: "devices",
283
- prices: [
284
- {
285
- plan: "os",
286
- constraints: {
287
- min: 50,
288
- max: 1e3,
289
- div: 50
290
- }
291
- },
292
- {
293
- plan: "professional",
294
- constraints: {
295
- min: 250,
296
- max: 1e4,
297
- div: 50
298
- }
299
- }
300
- ],
301
- addons: [
302
- {
303
- name: "troubleshoot",
304
- prices: [{ plan: "os" }, { plan: "professional" }]
305
- },
306
- {
307
- name: "configure",
308
- prices: [{ plan: "os" }, { plan: "professional" }]
309
- },
310
- {
311
- name: "monitor",
312
- prices: [{ plan: "professional" }]
313
- }
314
- ]
315
- },
316
- {
317
- name: "mender_micro",
318
- billing_unit: "devices",
319
- prices: [
320
- {
321
- plan: "os",
322
- constraints: {
323
- min: 50,
324
- max: 5e3,
325
- div: 50
326
- }
327
- },
328
- {
329
- plan: "professional",
330
- constraints: {
331
- min: 500,
332
- max: 1e5,
333
- div: 50
334
- }
335
- }
336
- ]
337
- }
338
- ],
339
- intentId: "testIntent",
340
- auditlog: {
341
- events: [
342
- {
343
- actor: {
344
- id: "string",
345
- type: "user",
346
- email: "string@example.com"
347
- },
348
- time: "2019-01-01T12:10:22.667Z",
349
- action: "create",
350
- object: {
351
- id: "string",
352
- type: "user",
353
- user: {
354
- email: "user@acme.com"
355
- }
356
- },
357
- change: "change1"
358
- },
359
- {
360
- actor: {
361
- id: "string",
362
- type: "user",
363
- email: "string",
364
- identity_data: "string"
365
- },
366
- time: "2019-01-01T12:16:22.667Z",
367
- action: "create",
368
- object: {
369
- id: "string",
370
- type: "deployment",
371
- deployment: {
372
- name: "production",
373
- artifact_name: "Application 0.0.1"
374
- }
375
- },
376
- change: "change2"
377
- },
378
- {
379
- actor: {
380
- id: "string",
381
- type: "user",
382
- email: "string@example.com"
383
- },
384
- time: "2019-01-01T12:10:22.669Z",
385
- action: "open_terminal",
386
- meta: {
387
- session_id: ["abd313a8-ee88-48ab-9c99-fbcd80048e6e"]
388
- },
389
- object: {
390
- id: "a1",
391
- type: "device"
392
- },
393
- change: "change3"
394
- }
395
- ]
396
- }
397
- },
398
- releases: {
399
- byId: {
400
- r1: {
401
- name: "r1",
402
- artifacts: [
403
- {
404
- id: "art1",
405
- description: "test description",
406
- device_types_compatible: [deviceTypes.qemu],
407
- modified: "2020-09-10T12:16:22.667Z",
408
- updates: [{ type_info: { type: "testtype" } }],
409
- artifact_depends: {
410
- device_type: [deviceTypes.qemu]
411
- },
412
- artifact_provides: {
413
- artifact_name: "myapp",
414
- "data-partition.myapp.version": "v2020.10",
415
- list_of_fancy: [deviceTypes.qemu, "x172"]
416
- },
417
- clears_artifact_provides: ["data-partition.myapp.*"]
418
- }
419
- ],
420
- device_types_compatible: [deviceTypes.qemu],
421
- modified: "2020-09-10T12:16:22.667Z",
422
- metaData: {}
423
- }
424
- }
425
- },
426
- users: {
427
- byId: {
428
- a1: defaultUser,
429
- [userId]: { ...defaultUser, id: userId, email: "a2@b.com", created_ts: "2019-01-01T12:30:00.000Z" }
430
- },
431
- rolesById: {
432
- admin: {
433
- name: "admin",
434
- description: "Administrator role",
435
- permissions: []
436
- },
437
- test: { name: "test", description: "test description", permissions: [] }
438
- },
439
- globalSettings: {
440
- "2fa": "enabled",
441
- id_attribute: void 0,
442
- previousFilters: []
443
- },
444
- userSettings: {
445
- "2fa": "disabled",
446
- columnSelection: [],
447
- onboarding: { something: "here" },
448
- tooltips: {},
449
- previousFilters: []
450
- }
451
- }
452
- };
453
- var releasesList = Array.from({ length: 5e3 }, (x, i) => ({
454
- artifacts: [
455
- {
456
- id: "art1",
457
- description: "test description",
458
- device_types_compatible: [deviceTypes.qemu],
459
- modified: "2020-09-10T12:16:22.667Z",
460
- updates: [{ type_info: { type: "testtype" } }],
461
- artifact_depends: {
462
- device_type: [deviceTypes.qemu]
463
- },
464
- artifact_provides: {
465
- artifact_name: "myapp",
466
- "data-partition.myapp.version": "v2020.10",
467
- list_of_fancy: [deviceTypes.qemu, "x172"]
468
- },
469
- clears_artifact_provides: ["data-partition.myapp.*"]
470
- }
471
- ],
472
- device_types_compatible: [deviceTypes.qemu],
473
- metaData: {},
474
- name: `release-${i + 1}`,
475
- modified: i
476
- }));
477
- var permissionSets = [
478
- {
479
- ...import_constants.defaultPermissionSets.Basic,
480
- object: permissionSetObjectTypes.empty,
481
- description: "Set containing basic permissions.",
482
- permissions: [
483
- { action: "http", object: { type: "any", value: "^/api/management/v1/useradm/settings$" } },
484
- { action: "http", object: { type: "any", value: "^/api/management/v1/useradm/users/me$" } },
485
- { action: "http", object: { type: "any", value: "^/api/management/1.0/auth/verify$" } },
486
- { action: "http", object: { type: "PUT", value: "^/api/management/v1/useradm/2faverify$" } },
487
- { action: "http", object: { type: "POST", value: "^/api/management/v1/useradm/users/me/2fa/(enable|disable)$" } },
488
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/useradm/roles" } },
489
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/tenantadm/user/tenant" } }
490
- ]
491
- },
492
- {
493
- ...import_constants.defaultPermissionSets.ManageReleases,
494
- action: import_constants.uiPermissionsById.manage.title,
495
- object: permissionSetObjectTypes.releases,
496
- description: "Set of permissions which allows user to manage releases",
497
- permissions: [
498
- { action: "http", object: { type: "GET", value: commonEndpoints.artifacts } },
499
- { action: "http", object: { type: "GET", value: commonEndpoints.artifactDetails } },
500
- { action: "http", object: { type: "PUT", value: commonEndpoints.artifactDetails } },
501
- { action: "http", object: { type: "DELETE", value: commonEndpoints.artifactDetails } },
502
- { action: "http", object: { type: "GET", value: "^/api/management/v1/deployments/artifacts/[^/]+/download" } }
503
- ]
504
- },
505
- {
506
- ...import_constants.defaultPermissionSets.ReadUsers,
507
- action: import_constants.uiPermissionsById.read.title,
508
- object: permissionSetObjectTypes.userManagement,
509
- description: "Set of permissions which allows user to view other users",
510
- permissions: [{ action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/useradm/" } }]
511
- },
512
- {
513
- ...import_constants.defaultPermissionSets.ManageUsers,
514
- action: import_constants.uiPermissionsById.manage.title,
515
- object: permissionSetObjectTypes.userManagement,
516
- description: "Set of permissions which allows user manage other user accounts",
517
- permissions: [{ action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/useradm/" } }]
518
- },
519
- {
520
- ...import_constants.defaultPermissionSets.ReadTenants,
521
- action: import_constants.uiPermissionsById.read.title,
522
- object: permissionSetObjectTypes.tenantManagement,
523
- description: "Set of permissions which allows user to list other tenants and their config",
524
- permissions: [
525
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/tenantadm/" } },
526
- { action: "http", object: { type: "POST", value: "^/api/management/(v[1-9])/tenantadm/" } }
527
- ]
528
- },
529
- {
530
- ...import_constants.defaultPermissionSets.ManageTenants,
531
- action: import_constants.uiPermissionsById.manage.title,
532
- object: permissionSetObjectTypes.tenantManagement,
533
- description: "Set of permissions which allows user to manage other tenants and their config",
534
- permissions: [
535
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/tenantadm/" } },
536
- { action: "http", object: { type: "POST", value: "^/api/management/(v[1-9])/tenantadm/" } },
537
- { action: "http", object: { type: "PUT", value: "^/api/management/(v[1-9])/tenantadm/" } }
538
- ]
539
- },
540
- {
541
- ...import_constants.defaultPermissionSets.ReadAuditLogs,
542
- action: import_constants.uiPermissionsById.read.title,
543
- object: "System Audit Log",
544
- description: "Set of permissions which allows user to view system audit log",
545
- permissions: [{ action: "http", object: { type: "GET", value: "^/api/management/(v[1-9]|0.1.0)/auditlogs/logs" } }]
546
- },
547
- {
548
- ...import_constants.defaultPermissionSets.DeployToDevices,
549
- action: "Deploy",
550
- object: permissionSetObjectTypes.groups,
551
- description: "Set of permissions which allows user to deploy to devices",
552
- permissions: [{ action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/(deployments|deviceconfig)/" } }],
553
- supported_scope_types: [import_constants.scopedPermissionAreas.groups.scopeType]
554
- },
555
- {
556
- ...import_constants.defaultPermissionSets.ConfigureDevices,
557
- action: "Configure",
558
- object: permissionSetObjectTypes.groups,
559
- description: "Set of permissions which allows user to manage configuration of the devices",
560
- permissions: [{ action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deviceconfig/" } }],
561
- supported_scope_types: [import_constants.scopedPermissionAreas.groups.scopeType]
562
- },
563
- {
564
- ...import_constants.defaultPermissionSets.ConnectToDevices,
565
- action: "Connect",
566
- object: permissionSetObjectTypes.groups,
567
- description: "Set of permissions which allows user to use remote terminal and file transfer",
568
- permissions: [
569
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/connect$" } },
570
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/download\\?path=[^&]+$" } },
571
- { action: "http", object: { type: "PUT", value: "^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+/upload$" } }
572
- ],
573
- supported_scope_types: [import_constants.scopedPermissionAreas.groups.scopeType]
574
- },
575
- {
576
- ...import_constants.defaultPermissionSets.SuperUser,
577
- action: "Any",
578
- object: permissionSetObjectTypes.any,
579
- description: "Set of permissions which allows user to do anything",
580
- permissions: [{ action: "any", object: { type: "any", value: "any" } }]
581
- },
582
- {
583
- ...import_constants.defaultPermissionSets.UploadArtifacts,
584
- action: "Upload",
585
- object: permissionSetObjectTypes.artifacts,
586
- description: "Set of permissions which allows user to upload artifacts",
587
- permissions: [
588
- { action: "http", object: { type: "POST", value: commonEndpoints.artifacts } },
589
- { action: "http", object: { type: "POST", value: "^/api/management/v1/deployments/artifacts/generate" } }
590
- ]
591
- },
592
- {
593
- ...import_constants.defaultPermissionSets.ReadDevices,
594
- action: import_constants.uiPermissionsById.read.title,
595
- object: permissionSetObjectTypes.groups,
596
- description: "Set of permissions which allows user to view devices",
597
- permissions: [
598
- { action: "http", object: { type: "POST", value: "^/api/management/v2/inventory/filters/search" } },
599
- { action: "http", object: { type: "POST", value: "^/api/management/v1/reporting/devices/search" } },
600
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9])/(deployments|devauth|inventory|deviceconfig|devicemonitor)/" } },
601
- { action: "http", object: { type: "GET", value: "^/api/management/(v[1-9]|0.1.0)/deviceconnect/devices/[^/]+$" } }
602
- ],
603
- supported_scope_types: [import_constants.scopedPermissionAreas.groups.scopeType]
604
- },
605
- {
606
- ...import_constants.defaultPermissionSets.ManageDevices,
607
- action: import_constants.uiPermissionsById.manage.title,
608
- object: permissionSetObjectTypes.groups,
609
- description: "Set of permissions which allows user to manage devices",
610
- permissions: [
611
- { action: "http", object: { type: "POST", value: commonEndpoints.deviceManagement } },
612
- { action: "http", object: { type: "PUT", value: commonEndpoints.deviceManagement } },
613
- { action: "http", object: { type: "DELETE", value: commonEndpoints.deviceManagement } }
614
- ],
615
- supported_scope_types: [import_constants.scopedPermissionAreas.groups.scopeType]
616
- },
617
- {
618
- ...import_constants.defaultPermissionSets.ReadReleases,
619
- action: import_constants.uiPermissionsById.read.title,
620
- object: permissionSetObjectTypes.releases,
621
- description: "Set of permissions which allows user to view releases",
622
- permissions: [
623
- { action: "http", object: { type: "GET", value: commonEndpoints.artifacts } },
624
- { action: "http", object: { type: "GET", value: commonEndpoints.artifactDetails } },
625
- { action: "http", object: { type: "GET", value: "^/api/management/v1/deployments/artifacts/[^/]+/download" } }
626
- ]
627
- },
628
- {
629
- name: "almostAdmin",
630
- object: permissionSetObjectTypes.empty,
631
- description: "Set containing all the permissions.",
632
- permissions: [
633
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/auditlogs/.*" } },
634
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deployments/.*" } },
635
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deployments/config/.*" } },
636
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deployments/deployments/.*" } },
637
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deployments/deployments/releases/.*" } },
638
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/devauth/.*" } },
639
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deviceconfig/.*" } },
640
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deviceconnect/.*" } },
641
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/deviceconnect/devices" } },
642
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/inventory/.*" } },
643
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/iot-manager/.*" } },
644
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/monitor/.*" } },
645
- { action: "http", object: { type: "any", value: "^/api/management/(v[1-9])/useradm/.*" } }
646
- ]
647
- }
648
- ];
649
- var rbacRoles = [
650
- {
651
- name: "dyn",
652
- description: "",
653
- permissions: [
654
- { action: "CREATE_DEPLOYMENT", object: { type: "DEVICE_GROUP", value: "dyn" } },
655
- { action: "VIEW_DEVICE", object: { type: "DEVICE_GROUP", value: "dyn" } }
656
- ]
657
- },
658
- { name: "asdasd", description: "123", permissions: [{ action: "http", object: { type: "any", value: "/api/management/v1/useradm/.*" } }] },
659
- {
660
- name: "141sasd",
661
- description: "1313adg",
662
- permission_sets_with_scope: [
663
- { ...import_constants.defaultPermissionSets.ReadDevices, scope: { type: import_constants.scopedPermissionAreas.groups.scopeType, value: ["bestgroup"] } },
664
- { ...import_constants.defaultPermissionSets.ConnectToDevices, scope: { type: import_constants.scopedPermissionAreas.groups.scopeType, value: ["bestgroup"] } },
665
- { ...import_constants.defaultPermissionSets.ManageUsers }
666
- ]
667
- },
668
- {
669
- name: "kljlkk",
670
- description: "lkl",
671
- permission_sets_with_scope: [{ ...import_constants.defaultPermissionSets.ConnectToDevices, scope: { type: import_constants.scopedPermissionAreas.groups.scopeType, value: ["bestgroup"] } }]
672
- },
673
- {
674
- name: "yyyyy",
675
- description: "asd",
676
- permission_sets_with_scope: [
677
- { ...import_constants.defaultPermissionSets.ManageDevices, scope: { type: import_constants.scopedPermissionAreas.groups.scopeType, value: ["dockerclient"] } },
678
- { ...import_constants.defaultPermissionSets.ManageReleases }
679
- ]
680
- },
681
- {
682
- name: "RBAC_ROLE_DEPLOYMENTS_MANAGER",
683
- description: "Intended for users responsible for managing deployments, this role can create and abort deployments",
684
- permission_sets_with_scope: [{ ...import_constants.defaultPermissionSets.DeployToDevices }]
685
- },
686
- {
687
- name: "RBAC_ROLE_REMOTE_TERMINAL",
688
- description: `Intended for tech support accounts, this role can access the devices' Remote Terminal.`,
689
- permission_sets_with_scope: [{ ...import_constants.defaultPermissionSets.ConnectToDevices }]
690
- },
691
- { name: "RBAC_ROLE_PERMIT_ALL", description: "", permission_sets_with_scope: [{ ...import_constants.defaultPermissionSets.SuperUser }] },
692
- {
693
- name: "RBAC_ROLE_OBSERVER",
694
- description: "Intended for team leaders or limited tech support accounts, this role can see all Devices, Artifacts and Deployment reports but not make any changes.",
695
- permission_sets_with_scope: [{ ...import_constants.defaultPermissionSets.ReadReleases }, { ...import_constants.defaultPermissionSets.ReadDevices }]
696
- },
697
- {
698
- name: "RBAC_ROLE_CI",
699
- description: "Intended for automation accounts building software (e.g. CI/CD systems), this role can only manage Artifacts, including upload new Artifacts and delete Artifacts. It does not have access to Devices or Deployments.",
700
- permission_sets_with_scope: [
701
- { ...import_constants.defaultPermissionSets.ReadReleases },
702
- { ...import_constants.defaultPermissionSets.ManageReleases },
703
- { ...import_constants.defaultPermissionSets.UploadArtifacts }
704
- ]
705
- },
706
- {
707
- name: "almostAdmin",
708
- description: "almost admin rights",
709
- permissions: permissionSets.find((item) => item.name === "almostAdmin")?.permissions
710
- },
711
- {
712
- name: "almostAdminNew",
713
- description: "almost admin rights",
714
- permission_sets_with_scope: Object.values(import_constants.defaultPermissionSets)
715
- }
716
- ];
717
- var expectedParsedRoles = {
718
- "141sasd": {
719
- editable: true,
720
- isCustom: void 0,
721
- uiPermissions: {
722
- ...import_constants.emptyUiPermissions,
723
- groups: { bestgroup: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.connect.value] },
724
- userManagement: [import_constants.uiPermissionsById.manage.value]
725
- }
726
- },
727
- asdasd: {
728
- editable: false,
729
- isCustom: true,
730
- uiPermissions: { ...import_constants.emptyUiPermissions, userManagement: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.manage.value] }
731
- },
732
- dyn: {
733
- editable: false,
734
- isCustom: true,
735
- uiPermissions: {
736
- ...import_constants.emptyUiPermissions,
737
- deployments: [import_constants.uiPermissionsById.deploy.value],
738
- groups: { dyn: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.deploy.value] }
739
- }
740
- },
741
- kljlkk: {
742
- editable: true,
743
- isCustom: false,
744
- uiPermissions: { ...import_constants.emptyUiPermissions, groups: { bestgroup: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.connect.value] } }
745
- },
746
- yyyyy: {
747
- editable: true,
748
- isCustom: void 0,
749
- uiPermissions: {
750
- ...import_constants.emptyUiPermissions,
751
- groups: { dockerclient: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.manage.value] },
752
- releases: { [import_constants.ALL_RELEASES]: [import_constants.uiPermissionsById.manage.value] }
753
- }
754
- },
755
- almostAdmin: {
756
- editable: false,
757
- isCustom: true,
758
- uiPermissions: {
759
- ...import_constants.emptyUiPermissions,
760
- auditlog: [import_constants.uiPermissionsById.read.value],
761
- deployments: [import_constants.uiPermissionsById.manage.value, import_constants.uiPermissionsById.deploy.value, import_constants.uiPermissionsById.read.value],
762
- groups: {
763
- [import_constants.ALL_DEVICES]: [
764
- import_constants.uiPermissionsById.read.value,
765
- // we can't assign deployment permissions to devices here, since the old path based rbac controls don't allow the scoped permissions
766
- // uiPermissionsById.deploy.value,
767
- import_constants.uiPermissionsById.manage.value,
768
- import_constants.uiPermissionsById.connect.value,
769
- import_constants.uiPermissionsById.configure.value
770
- ]
771
- },
772
- releases: {
773
- [import_constants.ALL_RELEASES]: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.upload.value, import_constants.uiPermissionsById.manage.value]
774
- },
775
- userManagement: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.manage.value]
776
- }
777
- },
778
- almostAdminNew: {
779
- editable: true,
780
- isCustom: void 0,
781
- uiPermissions: {
782
- ...import_constants.emptyUiPermissions,
783
- auditlog: [import_constants.uiPermissionsById.read.value],
784
- deployments: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.deploy.value, import_constants.uiPermissionsById.manage.value],
785
- groups: {
786
- [import_constants.ALL_DEVICES]: [
787
- import_constants.uiPermissionsById.read.value,
788
- import_constants.uiPermissionsById.manage.value,
789
- import_constants.uiPermissionsById.deploy.value,
790
- import_constants.uiPermissionsById.connect.value,
791
- import_constants.uiPermissionsById.configure.value
792
- ]
793
- },
794
- releases: {
795
- [import_constants.ALL_RELEASES]: [import_constants.uiPermissionsById.manage.value, import_constants.uiPermissionsById.upload.value, import_constants.uiPermissionsById.read.value]
796
- },
797
- tenantManagement: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.manage.value],
798
- userManagement: [import_constants.uiPermissionsById.read.value, import_constants.uiPermissionsById.manage.value]
799
- }
800
- }
801
- };
802
- var defaultRolesById = {
803
- ...import_constants.rolesById,
804
- test: {
805
- ...import_constants.emptyRole,
806
- name: "test",
807
- description: "test description",
808
- editable: true,
809
- uiPermissions: {
810
- ...import_constants.emptyUiPermissions,
811
- groups: { testGroup: [import_constants.uiPermissionsById.read.value] },
812
- releases: { bar: [import_constants.uiPermissionsById.read.value] }
813
- }
814
- }
815
- };
816
- var receivedRoles = rbacRoles.reduce(
817
- (accu, role) => {
818
- const { name, description, ...roleRemainder } = role;
819
- if (name.startsWith("RBAC")) {
820
- accu[name] = {
821
- ...defaultRolesById[name],
822
- ...roleRemainder,
823
- editable: false,
824
- isCustom: false,
825
- description: defaultRolesById[name].description ? defaultRolesById[name].description : description
826
- };
827
- } else {
828
- const result = expectedParsedRoles[name] ?? {};
829
- accu[name] = {
830
- ...import_constants.emptyRole,
831
- ...role,
832
- ...result,
833
- name
834
- };
835
- }
836
- return accu;
837
- },
838
- { ...defaultRolesById }
839
- );
840
- var receivedPermissionSets = permissionSets.reduce((accu, set) => {
841
- const result = import_constants.defaultPermissionSets[set.name]?.result ?? {};
842
- accu[set.name] = {
843
- ...set,
844
- result: {
845
- ...import_constants.emptyUiPermissions,
846
- ...result
847
- }
848
- };
849
- return accu;
850
- }, {});
851
-
852
- // src/utils.tsx
853
- var import_react_redux = require("react-redux");
854
- var import_react_router_dom = require("react-router-dom");
855
- var import_styles = require("@mui/material/styles");
856
- var import_react = require("@testing-library/react");
857
- var import_react2 = require("@testing-library/react");
858
- var import_vitest = require("vitest");
859
-
860
- // src/theme/light.ts
861
- var palette = {
862
- border: {
863
- main: "#e3e3e3"
864
- },
865
- tooltip: {
866
- tierTipBackground: "#f7fafb"
867
- }
868
- };
869
- var light = {
870
- palette
871
- };
872
-
873
- // src/utils.tsx
874
- var import_jsx_runtime = require("react/jsx-runtime");
875
- var theme = (0, import_styles.createTheme)(light);
876
-
877
- // src/setupTests.tsx
878
- __reExport(setupTests_exports, require("@testing-library/react"), module.exports);
879
- var import_jsx_runtime2 = require("react/jsx-runtime");
880
- import_vitest2.expect.addSnapshotSerializer((0, import_jest.createSerializer)({ includeStyles: true }));
881
- var TEST_LOCATION = "localhost";
882
- var mockAbortController = {
883
- abort: import_vitest2.vi.fn(),
884
- signal: { addEventListener: () => {
885
- }, removeEventListener: () => {
886
- } }
887
- };
888
- var oldWindowLocalStorage = window.localStorage;
889
- var oldWindowLocation = window.location;
890
- var oldWindowSessionStorage = window.sessionStorage;
891
- import_vitest2.vi.mock("uuid", () => ({ v4: () => "mock-uuid" }));
892
- var storage = {};
893
- global.HTMLCanvasElement.prototype.getContext = import_vitest2.vi.fn();
894
- var beforeAll = async () => {
895
- delete window.location;
896
- window.location = {
897
- ...oldWindowLocation,
898
- hostname: TEST_LOCATION,
899
- origin: "http://localhost",
900
- assign: import_vitest2.vi.fn(),
901
- replace: import_vitest2.vi.fn(),
902
- reload: import_vitest2.vi.fn()
903
- };
904
- delete window.sessionStorage;
905
- window.sessionStorage = {
906
- ...oldWindowSessionStorage,
907
- getItem: import_vitest2.vi.fn(import_helpers.yes),
908
- setItem: import_vitest2.vi.fn(),
909
- removeItem: import_vitest2.vi.fn()
910
- };
911
- delete window.localStorage;
912
- window.localStorage = {
913
- ...oldWindowLocalStorage,
914
- getItem: import_vitest2.vi.fn((name) => {
915
- if (name === "JWT") {
916
- return JSON.stringify({ token });
917
- }
918
- return storage[name];
919
- }),
920
- setItem: import_vitest2.vi.fn((name) => storage[name]),
921
- removeItem: import_vitest2.vi.fn()
922
- };
923
- window.mender_environment = menderEnvironment;
924
- window.ENV = "test";
925
- global.AbortController = import_vitest2.vi.fn().mockImplementation(function() {
926
- return mockAbortController;
927
- });
928
- global.MessageChannel = import_worker_threads.MessageChannel;
929
- global.ResizeObserver = import_vitest2.vi.fn().mockImplementation(function() {
930
- return {
931
- observe: import_vitest2.vi.fn(),
932
- unobserve: import_vitest2.vi.fn(),
933
- disconnect: import_vitest2.vi.fn()
934
- };
935
- });
936
- window.RTCPeerConnection = () => ({
937
- createOffer: () => {
938
- },
939
- setLocalDescription: () => {
940
- },
941
- createDataChannel: () => {
942
- }
943
- });
944
- Object.defineProperty(navigator, "appVersion", { value: "Test", writable: true });
945
- const intersectionObserverMock = function() {
946
- return {
947
- observe: import_vitest2.vi.fn(),
948
- disconnect: import_vitest2.vi.fn()
949
- };
950
- };
951
- window.prompt = import_vitest2.vi.fn();
952
- window.IntersectionObserver = import_vitest2.vi.fn().mockImplementation(intersectionObserverMock);
953
- import_vitest2.vi.spyOn(import_react3.default, "useEffect").mockImplementation(import_react3.default.useLayoutEffect);
954
- const _jest = globalThis.jest;
955
- globalThis.jest = {
956
- ...globalThis.jest
957
- };
958
- import_vitest2.vi.stubGlobal("jest", {
959
- advanceTimersByTime: import_vitest2.vi.advanceTimersByTime.bind(import_vitest2.vi)
960
- });
961
- return () => void (globalThis.jest = _jest);
962
- };
963
- var beforeEach = () => {
964
- import_vitest2.vi.useFakeTimers({ now: mockDate });
965
- import_vitest2.vi.setSystemTime(mockDate);
966
- };
967
- var afterEach = async () => {
968
- (0, import_react4.cleanup)();
969
- import_vitest2.vi.runOnlyPendingTimers();
970
- import_vitest2.vi.useRealTimers();
971
- };
972
- var afterAll = async () => {
973
- window.localStorage = oldWindowLocalStorage;
974
- window.location = oldWindowLocation;
975
- window.sessionStorage = oldWindowSessionStorage;
976
- import_react3.default.useEffect.mockRestore();
977
- import_vitest2.vi.unstubAllGlobals();
978
- };
979
- var customRender = (ui, options = {}) => {
980
- const { preloadedState = { users: { currentSession: { token, expiresAt: void 0 } } }, ...remainder } = options;
981
- const store = options.store ?? (0, import_toolkit.configureStore)({ preloadedState });
982
- const AllTheProviders = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_styles2.ThemeProvider, { theme, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_router_dom2.MemoryRouter, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_redux2.Provider, { store, children }) }) });
983
- return { store, ...(0, import_react4.render)(ui, { wrapper: AllTheProviders, ...remainder }) };
984
- };
985
- // Annotate the CommonJS export names for ESM import in node:
986
- 0 && (module.exports = {
987
- TEST_LOCATION,
988
- afterAll,
989
- afterEach,
990
- beforeAll,
991
- beforeEach,
992
- mockAbortController,
993
- render,
994
- ...require("@testing-library/react")
995
- });
996
- //# sourceMappingURL=setupTests.cjs.map