@budibase/worker 2.2.26 → 2.2.27-alpha.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 (172) hide show
  1. package/Dockerfile +1 -1
  2. package/__mocks__/node-fetch.ts +23 -0
  3. package/coverage/clover.xml +1423 -1379
  4. package/coverage/coverage-final.json +83 -77
  5. package/coverage/lcov-report/index.html +140 -140
  6. package/coverage/lcov-report/src/api/controllers/global/auth.ts.html +52 -52
  7. package/coverage/lcov-report/src/api/controllers/global/configs.ts.html +167 -224
  8. package/coverage/lcov-report/src/api/controllers/global/email.ts.html +4 -4
  9. package/coverage/lcov-report/src/api/controllers/global/events.ts.html +136 -0
  10. package/coverage/lcov-report/src/api/controllers/global/index.html +83 -68
  11. package/coverage/lcov-report/src/api/controllers/global/license.ts.html +16 -16
  12. package/coverage/lcov-report/src/api/controllers/global/roles.ts.html +69 -69
  13. package/coverage/lcov-report/src/api/controllers/global/self.ts.html +20 -20
  14. package/coverage/lcov-report/src/api/controllers/global/templates.ts.html +54 -54
  15. package/coverage/lcov-report/src/api/controllers/global/users.ts.html +83 -44
  16. package/coverage/lcov-report/src/api/controllers/global/workspaces.ts.html +9 -9
  17. package/coverage/lcov-report/src/api/controllers/system/accounts.ts.html +5 -5
  18. package/coverage/lcov-report/src/api/controllers/system/environment.ts.html +4 -4
  19. package/coverage/lcov-report/src/api/controllers/system/index.html +11 -11
  20. package/coverage/lcov-report/src/api/controllers/system/migrations.ts.html +5 -5
  21. package/coverage/lcov-report/src/api/controllers/system/restore.ts.html +4 -4
  22. package/coverage/lcov-report/src/api/controllers/system/status.ts.html +5 -5
  23. package/coverage/lcov-report/src/api/controllers/system/tenants.ts.html +7 -7
  24. package/coverage/lcov-report/src/api/index.html +1 -1
  25. package/coverage/lcov-report/src/api/index.ts.html +42 -30
  26. package/coverage/lcov-report/src/api/routes/global/auth.ts.html +14 -14
  27. package/coverage/lcov-report/src/api/routes/global/configs.ts.html +25 -25
  28. package/coverage/lcov-report/src/api/routes/global/email.ts.html +13 -13
  29. package/coverage/lcov-report/src/api/routes/global/events.ts.html +109 -0
  30. package/coverage/lcov-report/src/api/routes/global/index.html +37 -22
  31. package/coverage/lcov-report/src/api/routes/global/license.ts.html +9 -9
  32. package/coverage/lcov-report/src/api/routes/global/roles.ts.html +10 -10
  33. package/coverage/lcov-report/src/api/routes/global/self.ts.html +11 -11
  34. package/coverage/lcov-report/src/api/routes/global/templates.ts.html +14 -14
  35. package/coverage/lcov-report/src/api/routes/global/users.ts.html +62 -20
  36. package/coverage/lcov-report/src/api/routes/global/workspaces.ts.html +12 -12
  37. package/coverage/lcov-report/src/api/routes/index.html +7 -7
  38. package/coverage/lcov-report/src/api/routes/index.ts.html +29 -23
  39. package/coverage/lcov-report/src/api/routes/system/accounts.ts.html +10 -10
  40. package/coverage/lcov-report/src/api/routes/system/environment.ts.html +9 -9
  41. package/coverage/lcov-report/src/api/routes/system/index.html +15 -15
  42. package/coverage/lcov-report/src/api/routes/system/migrations.ts.html +10 -10
  43. package/coverage/lcov-report/src/api/routes/system/restore.ts.html +9 -9
  44. package/coverage/lcov-report/src/api/routes/system/status.ts.html +9 -9
  45. package/coverage/lcov-report/src/api/routes/system/tenants.ts.html +10 -10
  46. package/coverage/lcov-report/src/api/routes/validation/index.html +3 -3
  47. package/coverage/lcov-report/src/api/routes/validation/index.ts.html +2 -2
  48. package/coverage/lcov-report/src/api/routes/validation/users.ts.html +14 -14
  49. package/coverage/lcov-report/src/constants/index.html +17 -17
  50. package/coverage/lcov-report/src/constants/index.ts.html +77 -53
  51. package/coverage/lcov-report/src/constants/templates/index.html +18 -18
  52. package/coverage/lcov-report/src/constants/templates/index.ts.html +42 -42
  53. package/coverage/lcov-report/src/db/index.html +17 -17
  54. package/coverage/lcov-report/src/db/index.ts.html +18 -18
  55. package/coverage/lcov-report/src/environment.ts.html +45 -30
  56. package/coverage/lcov-report/src/index.html +27 -27
  57. package/coverage/lcov-report/src/index.ts.html +55 -55
  58. package/coverage/lcov-report/src/middleware/cloudRestricted.ts.html +5 -5
  59. package/coverage/lcov-report/src/middleware/index.html +1 -1
  60. package/coverage/lcov-report/src/migrations/functions/globalInfoSyncUsers.ts.html +9 -9
  61. package/coverage/lcov-report/src/migrations/functions/index.html +11 -11
  62. package/coverage/lcov-report/src/migrations/index.html +15 -15
  63. package/coverage/lcov-report/src/migrations/index.ts.html +27 -27
  64. package/coverage/lcov-report/src/sdk/accounts/accounts.ts.html +13 -13
  65. package/coverage/lcov-report/src/sdk/accounts/index.html +13 -13
  66. package/coverage/lcov-report/src/sdk/accounts/index.ts.html +2 -2
  67. package/coverage/lcov-report/src/sdk/index.html +5 -5
  68. package/coverage/lcov-report/src/sdk/index.ts.html +6 -6
  69. package/coverage/lcov-report/src/sdk/users/events.ts.html +82 -58
  70. package/coverage/lcov-report/src/sdk/users/index.html +28 -28
  71. package/coverage/lcov-report/src/sdk/users/index.ts.html +2 -2
  72. package/coverage/lcov-report/src/sdk/users/users.ts.html +174 -120
  73. package/coverage/lcov-report/src/tests/TestConfiguration.ts.html +221 -107
  74. package/coverage/lcov-report/src/tests/api/accounts.ts.html +7 -7
  75. package/coverage/lcov-report/src/tests/api/auth.ts.html +25 -13
  76. package/coverage/lcov-report/src/tests/api/base.ts.html +5 -5
  77. package/coverage/lcov-report/src/tests/api/configs.ts.html +11 -11
  78. package/coverage/lcov-report/src/tests/api/email.ts.html +6 -6
  79. package/coverage/lcov-report/src/tests/api/environment.ts.html +6 -6
  80. package/coverage/lcov-report/src/tests/api/groups.ts.html +163 -0
  81. package/coverage/lcov-report/src/tests/api/index.html +91 -31
  82. package/coverage/lcov-report/src/tests/api/index.ts.html +62 -29
  83. package/coverage/lcov-report/src/tests/api/license.ts.html +136 -0
  84. package/coverage/lcov-report/src/tests/api/migrations.ts.html +8 -8
  85. package/coverage/lcov-report/src/tests/api/restore.ts.html +7 -7
  86. package/coverage/lcov-report/src/tests/api/roles.ts.html +181 -0
  87. package/coverage/lcov-report/src/tests/api/self.ts.html +7 -7
  88. package/coverage/lcov-report/src/tests/api/status.ts.html +6 -6
  89. package/coverage/lcov-report/src/tests/api/templates.ts.html +175 -0
  90. package/coverage/lcov-report/src/tests/api/tenants.ts.html +10 -10
  91. package/coverage/lcov-report/src/tests/api/users.ts.html +30 -27
  92. package/coverage/lcov-report/src/tests/controllers.ts.html +14 -14
  93. package/coverage/lcov-report/src/tests/index.html +34 -34
  94. package/coverage/lcov-report/src/tests/index.ts.html +19 -55
  95. package/coverage/lcov-report/src/tests/mocks/{email.js.html → email.ts.html} +5 -5
  96. package/coverage/lcov-report/src/tests/mocks/index.html +6 -6
  97. package/coverage/lcov-report/src/tests/mocks/index.ts.html +10 -10
  98. package/coverage/lcov-report/src/tests/structures/configs.ts.html +11 -11
  99. package/coverage/lcov-report/src/tests/structures/groups.ts.html +15 -15
  100. package/coverage/lcov-report/src/tests/structures/index.html +26 -26
  101. package/coverage/lcov-report/src/tests/structures/index.ts.html +16 -22
  102. package/coverage/lcov-report/src/tests/structures/users.ts.html +16 -16
  103. package/coverage/lcov-report/src/utilities/appService.ts.html +45 -18
  104. package/coverage/lcov-report/src/utilities/email.ts.html +28 -28
  105. package/coverage/lcov-report/src/utilities/fileSystem.ts.html +4 -4
  106. package/coverage/lcov-report/src/utilities/index.html +27 -27
  107. package/coverage/lcov-report/src/utilities/index.ts.html +2 -2
  108. package/coverage/lcov-report/src/utilities/redis.ts.html +20 -20
  109. package/coverage/lcov-report/src/utilities/templates.ts.html +6 -6
  110. package/coverage/lcov-report/src/utilities/users.ts.html +7 -7
  111. package/coverage/lcov.info +2826 -2609
  112. package/jest-testcontainers-config.js +8 -0
  113. package/jest.config.ts +10 -4
  114. package/package.json +11 -7
  115. package/scripts/dev/manage.js +2 -2
  116. package/src/api/controllers/global/auth.ts +1 -1
  117. package/src/api/controllers/global/configs.ts +112 -131
  118. package/src/api/controllers/global/events.ts +17 -0
  119. package/src/api/controllers/global/users.ts +14 -1
  120. package/src/api/index.ts +4 -0
  121. package/src/api/routes/global/auth.ts +1 -1
  122. package/src/api/routes/global/configs.ts +7 -7
  123. package/src/api/routes/global/email.ts +1 -1
  124. package/src/api/routes/global/events.ts +8 -0
  125. package/src/api/routes/global/license.ts +1 -1
  126. package/src/api/routes/global/roles.ts +1 -1
  127. package/src/api/routes/global/self.ts +1 -1
  128. package/src/api/routes/global/templates.ts +1 -1
  129. package/src/api/routes/global/tests/auth.spec.ts +30 -22
  130. package/src/api/routes/global/tests/configs.spec.ts +114 -94
  131. package/src/api/routes/global/tests/groups.spec.ts +58 -0
  132. package/src/api/routes/global/tests/license.spec.ts +0 -2
  133. package/src/api/routes/global/tests/roles.spec.ts +71 -5
  134. package/src/api/routes/global/tests/templates.spec.ts +81 -9
  135. package/src/api/routes/global/tests/users.spec.ts +35 -36
  136. package/src/api/routes/global/users.ts +15 -1
  137. package/src/api/routes/global/workspaces.ts +1 -1
  138. package/src/api/routes/index.ts +2 -0
  139. package/src/api/routes/system/accounts.ts +1 -1
  140. package/src/api/routes/system/environment.ts +1 -1
  141. package/src/api/routes/system/migrations.ts +1 -1
  142. package/src/api/routes/system/restore.ts +1 -1
  143. package/src/api/routes/system/status.ts +1 -1
  144. package/src/api/routes/system/tenants.ts +1 -1
  145. package/src/api/routes/system/tests/environment.spec.ts +1 -1
  146. package/src/constants/index.ts +13 -5
  147. package/src/db/index.ts +1 -1
  148. package/src/environment.ts +6 -1
  149. package/src/index.ts +5 -5
  150. package/src/middleware/cloudRestricted.ts +1 -1
  151. package/src/sdk/users/events.ts +8 -0
  152. package/src/sdk/users/users.ts +23 -5
  153. package/src/tests/TestConfiguration.ts +52 -14
  154. package/src/tests/api/auth.ts +7 -3
  155. package/src/tests/api/configs.ts +2 -2
  156. package/src/tests/api/groups.ts +26 -0
  157. package/src/tests/api/index.ts +12 -1
  158. package/src/tests/api/license.ts +17 -0
  159. package/src/tests/api/roles.ts +32 -0
  160. package/src/tests/api/templates.ts +30 -0
  161. package/src/tests/api/users.ts +4 -3
  162. package/src/tests/index.ts +6 -18
  163. package/src/tests/jestEnv.ts +11 -0
  164. package/src/tests/jestSetup.ts +8 -15
  165. package/src/tests/mocks/{email.js → email.ts} +1 -1
  166. package/src/tests/mocks/index.ts +4 -4
  167. package/src/tests/structures/configs.ts +2 -2
  168. package/src/tests/structures/groups.ts +1 -1
  169. package/src/tests/structures/index.ts +3 -5
  170. package/src/tests/structures/users.ts +1 -1
  171. package/src/utilities/appService.ts +12 -3
  172. package/tsconfig.json +2 -2
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">92.03% </span>
26
+ <span class="strong">90.07% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>104/113</span>
28
+ <span class='fraction'>118/131</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">75% </span>
33
+ <span class="strong">71.42% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>12/16</span>
35
+ <span class='fraction'>15/21</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">86.84% </span>
40
+ <span class="strong">87.17% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>33/38</span>
42
+ <span class='fraction'>34/39</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">91.89% </span>
47
+ <span class="strong">89.76% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>102/111</span>
49
+ <span class='fraction'>114/127</span>
50
50
  </div>
51
51
 
52
52
 
@@ -385,34 +385,74 @@
385
385
  <a name='L320'></a><a href='#L320'>320</a>
386
386
  <a name='L321'></a><a href='#L321'>321</a>
387
387
  <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
389
- <span class="cline-any cline-yes">17x</span>
390
- <span class="cline-any cline-yes">17x</span>
391
- <span class="cline-any cline-yes">17x</span>
392
- <span class="cline-any cline-yes">17x</span>
393
- <span class="cline-any cline-yes">17x</span>
394
- <span class="cline-any cline-yes">17x</span>
395
- <span class="cline-any cline-yes">17x</span>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">18x</span>
396
427
  <span class="cline-any cline-neutral">&nbsp;</span>
397
428
  <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-yes">18x</span>
430
+ <span class="cline-any cline-yes">18x</span>
398
431
  <span class="cline-any cline-neutral">&nbsp;</span>
399
432
  <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-yes">18x</span>
400
434
  <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-yes">18x</span>
436
+ <span class="cline-any cline-yes">18x</span>
437
+ <span class="cline-any cline-yes">18x</span>
438
+ <span class="cline-any cline-yes">18x</span>
439
+ <span class="cline-any cline-yes">18x</span>
440
+ <span class="cline-any cline-yes">18x</span>
401
441
  <span class="cline-any cline-neutral">&nbsp;</span>
402
442
  <span class="cline-any cline-neutral">&nbsp;</span>
403
- <span class="cline-any cline-yes">17x</span>
404
443
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-yes">17x</span>
406
444
  <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-yes">17x</span>
408
- <span class="cline-any cline-yes">17x</span>
409
- <span class="cline-any cline-yes">17x</span>
410
445
  <span class="cline-any cline-neutral">&nbsp;</span>
411
446
  <span class="cline-any cline-neutral">&nbsp;</span>
412
447
  <span class="cline-any cline-neutral">&nbsp;</span>
413
448
  <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-yes">18x</span>
450
+ <span class="cline-any cline-yes">18x</span>
414
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-yes">18x</span>
453
+ <span class="cline-any cline-yes">18x</span>
415
454
  <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-yes">18x</span>
416
456
  <span class="cline-any cline-neutral">&nbsp;</span>
417
457
  <span class="cline-any cline-neutral">&nbsp;</span>
418
458
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -422,20 +462,48 @@
422
462
  <span class="cline-any cline-neutral">&nbsp;</span>
423
463
  <span class="cline-any cline-neutral">&nbsp;</span>
424
464
  <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-yes">17x</span>
426
- <span class="cline-any cline-yes">17x</span>
465
+ <span class="cline-any cline-yes">33x</span>
466
+ <span class="cline-any cline-yes">33x</span>
467
+ <span class="cline-any cline-yes">33x</span>
468
+ <span class="cline-any cline-yes">31x</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-yes">2x</span>
471
+ <span class="cline-any cline-yes">2x</span>
472
+ <span class="cline-any cline-no">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-yes">2x</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-yes">18x</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-yes">18x</span>
494
+ <span class="cline-any cline-yes">18x</span>
427
495
  <span class="cline-any cline-no">&nbsp;</span>
428
496
  <span class="cline-any cline-no">&nbsp;</span>
429
497
  <span class="cline-any cline-neutral">&nbsp;</span>
430
498
  <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-yes">17x</span>
432
- <span class="cline-any cline-yes">17x</span>
433
- <span class="cline-any cline-yes">17x</span>
499
+ <span class="cline-any cline-yes">18x</span>
434
500
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">17x</span>
501
+ <span class="cline-any cline-yes">18x</span>
436
502
  <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-yes">18x</span>
437
504
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-yes">17x</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-yes">18x</span>
439
507
  <span class="cline-any cline-neutral">&nbsp;</span>
440
508
  <span class="cline-any cline-neutral">&nbsp;</span>
441
509
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -444,22 +512,22 @@
444
512
  <span class="cline-any cline-neutral">&nbsp;</span>
445
513
  <span class="cline-any cline-neutral">&nbsp;</span>
446
514
  <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">17x</span>
448
- <span class="cline-any cline-yes">25x</span>
449
- <span class="cline-any cline-yes">25x</span>
515
+ <span class="cline-any cline-yes">18x</span>
516
+ <span class="cline-any cline-yes">26x</span>
517
+ <span class="cline-any cline-yes">26x</span>
450
518
  <span class="cline-any cline-neutral">&nbsp;</span>
451
519
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">17x</span>
453
- <span class="cline-any cline-yes">25x</span>
454
- <span class="cline-any cline-yes">25x</span>
520
+ <span class="cline-any cline-yes">18x</span>
521
+ <span class="cline-any cline-yes">26x</span>
522
+ <span class="cline-any cline-yes">26x</span>
455
523
  <span class="cline-any cline-neutral">&nbsp;</span>
456
524
  <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-yes">17x</span>
458
- <span class="cline-any cline-yes">21x</span>
459
- <span class="cline-any cline-yes">21x</span>
525
+ <span class="cline-any cline-yes">18x</span>
526
+ <span class="cline-any cline-yes">22x</span>
527
+ <span class="cline-any cline-yes">22x</span>
460
528
  <span class="cline-any cline-neutral">&nbsp;</span>
461
529
  <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">17x</span>
530
+ <span class="cline-any cline-yes">18x</span>
463
531
  <span class="cline-any cline-yes">4x</span>
464
532
  <span class="cline-any cline-yes">4x</span>
465
533
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -467,48 +535,58 @@
467
535
  <span class="cline-any cline-neutral">&nbsp;</span>
468
536
  <span class="cline-any cline-neutral">&nbsp;</span>
469
537
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">155x</span>
538
+ <span class="cline-any cline-yes">186x</span>
471
539
  <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-yes">155x</span>
473
- <span class="cline-any cline-yes">155x</span>
474
- <span class="cline-any cline-yes">155x</span>
475
- <span class="cline-any cline-yes">155x</span>
476
- <span class="cline-any cline-yes">155x</span>
540
+ <span class="cline-any cline-yes">186x</span>
541
+ <span class="cline-any cline-yes">186x</span>
542
+ <span class="cline-any cline-yes">186x</span>
543
+ <span class="cline-any cline-yes">186x</span>
544
+ <span class="cline-any cline-yes">186x</span>
477
545
  <span class="cline-any cline-neutral">&nbsp;</span>
478
546
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">155x</span>
480
- <span class="cline-any cline-yes">16x</span>
547
+ <span class="cline-any cline-yes">186x</span>
548
+ <span class="cline-any cline-yes">18x</span>
481
549
  <span class="cline-any cline-neutral">&nbsp;</span>
482
- <span class="cline-any cline-yes">155x</span>
550
+ <span class="cline-any cline-yes">186x</span>
483
551
  <span class="cline-any cline-yes">72x</span>
484
552
  <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-yes">155x</span>
486
- <span class="cline-any cline-yes">155x</span>
553
+ <span class="cline-any cline-yes">186x</span>
554
+ <span class="cline-any cline-yes">186x</span>
555
+ <span class="cline-any cline-neutral">&nbsp;</span>
556
+ <span class="cline-any cline-yes">168x</span>
557
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
558
  <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-yes">139x</span>
489
559
  <span class="cline-any cline-neutral">&nbsp;</span>
490
560
  <span class="cline-any cline-neutral">&nbsp;</span>
491
561
  <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-yes">31x</span>
563
+ <span class="cline-any cline-yes">31x</span>
492
564
  <span class="cline-any cline-neutral">&nbsp;</span>
493
565
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">17x</span>
495
- <span class="cline-any cline-yes">17x</span>
566
+ <span class="cline-any cline-yes">33x</span>
567
+ <span class="cline-any cline-yes">31x</span>
496
568
  <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">17x</span>
498
- <span class="cline-any cline-yes">17x</span>
499
- <span class="cline-any cline-yes">17x</span>
569
+ <span class="cline-any cline-yes">31x</span>
570
+ <span class="cline-any cline-yes">31x</span>
571
+ <span class="cline-any cline-yes">31x</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-no">&nbsp;</span>
575
+ <span class="cline-any cline-no">&nbsp;</span>
500
576
  <span class="cline-any cline-neutral">&nbsp;</span>
501
577
  <span class="cline-any cline-neutral">&nbsp;</span>
502
578
  <span class="cline-any cline-neutral">&nbsp;</span>
503
579
  <span class="cline-any cline-neutral">&nbsp;</span>
504
- <span class="cline-any cline-yes">17x</span>
505
- <span class="cline-any cline-yes">17x</span>
580
+ <span class="cline-any cline-yes">18x</span>
581
+ <span class="cline-any cline-yes">18x</span>
506
582
  <span class="cline-any cline-neutral">&nbsp;</span>
507
583
  <span class="cline-any cline-neutral">&nbsp;</span>
508
584
  <span class="cline-any cline-neutral">&nbsp;</span>
509
585
  <span class="cline-any cline-neutral">&nbsp;</span>
510
586
  <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-yes">17x</span>
587
+ <span class="cline-any cline-yes">18x</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-yes">6x</span>
512
590
  <span class="cline-any cline-neutral">&nbsp;</span>
513
591
  <span class="cline-any cline-yes">6x</span>
514
592
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -528,10 +606,10 @@
528
606
  <span class="cline-any cline-neutral">&nbsp;</span>
529
607
  <span class="cline-any cline-neutral">&nbsp;</span>
530
608
  <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-yes">452x</span>
532
- <span class="cline-any cline-yes">452x</span>
609
+ <span class="cline-any cline-yes">572x</span>
610
+ <span class="cline-any cline-yes">572x</span>
533
611
  <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-yes">385x</span>
612
+ <span class="cline-any cline-yes">339x</span>
535
613
  <span class="cline-any cline-neutral">&nbsp;</span>
536
614
  <span class="cline-any cline-neutral">&nbsp;</span>
537
615
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -544,7 +622,7 @@
544
622
  <span class="cline-any cline-neutral">&nbsp;</span>
545
623
  <span class="cline-any cline-neutral">&nbsp;</span>
546
624
  <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-yes">46x</span>
625
+ <span class="cline-any cline-yes">74x</span>
548
626
  <span class="cline-any cline-neutral">&nbsp;</span>
549
627
  <span class="cline-any cline-neutral">&nbsp;</span>
550
628
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -552,26 +630,26 @@
552
630
  <span class="cline-any cline-neutral">&nbsp;</span>
553
631
  <span class="cline-any cline-neutral">&nbsp;</span>
554
632
  <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-yes">46x</span>
633
+ <span class="cline-any cline-yes">74x</span>
556
634
  <span class="cline-any cline-neutral">&nbsp;</span>
557
635
  <span class="cline-any cline-neutral">&nbsp;</span>
558
636
  <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-yes">73x</span>
637
+ <span class="cline-any cline-yes">87x</span>
560
638
  <span class="cline-any cline-no">&nbsp;</span>
561
639
  <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-yes">73x</span>
640
+ <span class="cline-any cline-yes">87x</span>
563
641
  <span class="cline-any cline-neutral">&nbsp;</span>
564
642
  <span class="cline-any cline-neutral">&nbsp;</span>
565
643
  <span class="cline-any cline-neutral">&nbsp;</span>
566
644
  <span class="cline-any cline-neutral">&nbsp;</span>
567
645
  <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">72x</span>
646
+ <span class="cline-any cline-yes">86x</span>
569
647
  <span class="cline-any cline-neutral">&nbsp;</span>
570
648
  <span class="cline-any cline-neutral">&nbsp;</span>
571
649
  <span class="cline-any cline-neutral">&nbsp;</span>
572
650
  <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-yes">72x</span>
574
- <span class="cline-any cline-yes">72x</span>
651
+ <span class="cline-any cline-yes">86x</span>
652
+ <span class="cline-any cline-yes">86x</span>
575
653
  <span class="cline-any cline-neutral">&nbsp;</span>
576
654
  <span class="cline-any cline-neutral">&nbsp;</span>
577
655
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -579,11 +657,11 @@
579
657
  <span class="cline-any cline-neutral">&nbsp;</span>
580
658
  <span class="cline-any cline-neutral">&nbsp;</span>
581
659
  <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-yes">64x</span>
583
- <span class="cline-any cline-yes">64x</span>
584
- <span class="cline-any cline-yes">62x</span>
585
- <span class="cline-any cline-yes">2x</span>
586
- <span class="cline-any cline-yes">2x</span>
660
+ <span class="cline-any cline-yes">78x</span>
661
+ <span class="cline-any cline-yes">78x</span>
662
+ <span class="cline-any cline-yes">65x</span>
663
+ <span class="cline-any cline-yes">13x</span>
664
+ <span class="cline-any cline-yes">13x</span>
587
665
  <span class="cline-any cline-neutral">&nbsp;</span>
588
666
  <span class="cline-any cline-no">&nbsp;</span>
589
667
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -593,41 +671,39 @@
593
671
  <span class="cline-any cline-yes">19x</span>
594
672
  <span class="cline-any cline-neutral">&nbsp;</span>
595
673
  <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-yes">17x</span>
674
+ <span class="cline-any cline-yes">18x</span>
597
675
  <span class="cline-any cline-yes">1x</span>
598
676
  <span class="cline-any cline-neutral">&nbsp;</span>
599
677
  <span class="cline-any cline-neutral">&nbsp;</span>
600
678
  <span class="cline-any cline-neutral">&nbsp;</span>
601
679
  <span class="cline-any cline-neutral">&nbsp;</span>
602
680
  <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-yes">17x</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-yes">33x</span>
606
682
  <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">17x</span>
608
683
  <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-yes">33x</span>
609
685
  <span class="cline-any cline-neutral">&nbsp;</span>
610
686
  <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-yes">17x</span>
612
687
  <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-yes">31x</span>
613
689
  <span class="cline-any cline-neutral">&nbsp;</span>
614
690
  <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-yes">17x</span>
691
+ <span class="cline-any cline-yes">31x</span>
616
692
  <span class="cline-any cline-neutral">&nbsp;</span>
617
693
  <span class="cline-any cline-neutral">&nbsp;</span>
618
694
  <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-yes">71x</span>
620
- <span class="cline-any cline-yes">71x</span>
695
+ <span class="cline-any cline-yes">100x</span>
696
+ <span class="cline-any cline-yes">100x</span>
621
697
  <span class="cline-any cline-neutral">&nbsp;</span>
622
698
  <span class="cline-any cline-neutral">&nbsp;</span>
623
699
  <span class="cline-any cline-neutral">&nbsp;</span>
624
700
  <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-yes">61x</span>
626
- <span class="cline-any cline-yes">17x</span>
701
+ <span class="cline-any cline-yes">92x</span>
702
+ <span class="cline-any cline-yes">15x</span>
627
703
  <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-yes">61x</span>
629
- <span class="cline-any cline-yes">61x</span>
630
- <span class="cline-any cline-yes">61x</span>
704
+ <span class="cline-any cline-yes">92x</span>
705
+ <span class="cline-any cline-yes">90x</span>
706
+ <span class="cline-any cline-yes">90x</span>
631
707
  <span class="cline-any cline-neutral">&nbsp;</span>
632
708
  <span class="cline-any cline-neutral">&nbsp;</span>
633
709
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -706,8 +782,16 @@
706
782
  <span class="cline-any cline-neutral">&nbsp;</span>
707
783
  <span class="cline-any cline-neutral">&nbsp;</span>
708
784
  <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">17x</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import "./mocks"
785
+ <span class="cline-any cline-yes">18x</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import mocks from "./mocks"
787
+ &nbsp;
788
+ // init the licensing mock
789
+ import * as pro from "@budibase/pro"
790
+ mocks.licenses.init(pro)
791
+ &nbsp;
792
+ // use unlimited license by default
793
+ mocks.licenses.useUnlimited()
794
+ &nbsp;
711
795
  import * as dbConfig from "../db"
712
796
  dbConfig.init()
713
797
  import env from "../environment"
@@ -721,22 +805,44 @@ import {
721
805
  auth,
722
806
  constants,
723
807
  env as coreEnv,
808
+ DEFAULT_TENANT_ID,
724
809
  } from "@budibase/backend-core"
725
- import structures, { TENANT_ID, TENANT_1, CSRF_TOKEN } from "./structures"
810
+ import structures, { TENANT_ID, CSRF_TOKEN } from "./structures"
726
811
  import { CreateUserResponse, User, AuthToken } from "@budibase/types"
727
812
  import API from "./api"
813
+ import sdk from "../sdk"
728
814
  &nbsp;
729
815
  enum Mode {
730
816
  CLOUD = "cloud",
731
817
  SELF = "self",
732
818
  }
733
819
  &nbsp;
820
+ async function retry&lt;T extends (...arg0: any[]) =&gt; any&gt;(
821
+ fn: T,
822
+ maxTry: number = 5,
823
+ retryCount = 1
824
+ ): Promise&lt;Awaited&lt;ReturnType&lt;T&gt;&gt;&gt; {
825
+ const currRetry = typeof retryCount === "number" ? retryCount : <span class="branch-1 cbranch-no" title="branch not covered" >1</span>
826
+ try {
827
+ const result = await fn()
828
+ return result
829
+ } catch (e) {
830
+ console.log(`Retry ${currRetry} failed.`)
831
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (currRetry &gt; maxTry) {
832
+ <span class="cstat-no" title="statement not covered" > console.log(`All ${maxTry} retry attempts exhausted`)</span>
833
+ <span class="cstat-no" title="statement not covered" > throw e</span>
834
+ }
835
+ return retry(fn, maxTry, currRetry + 1)
836
+ }
837
+ }
838
+ &nbsp;
734
839
  class TestConfiguration {
735
840
  server: any
736
841
  request: any
737
842
  api: API
738
843
  defaultUser?: User
739
844
  tenant1User?: User
845
+ #tenantId?: string
740
846
  &nbsp;
741
847
  constructor(
742
848
  opts: { openServer: boolean; mode: Mode } = {
@@ -752,7 +858,7 @@ class TestConfiguration {
752
858
  &nbsp;
753
859
  if (opts.openServer) {
754
860
  env.PORT = "0" // random port
755
- this.server = require("../index")
861
+ this.server = require("../index").default
756
862
  // we need the request for logging in, involves cookies, hard to fake
757
863
  this.request = supertest(this.server)
758
864
  }
@@ -760,7 +866,7 @@ class TestConfiguration {
760
866
  this.api = new API(this)
761
867
  }
762
868
  &nbsp;
763
- <span class="fstat-no" title="function not covered" > getRequest(</span>) {
869
+ <span class="fstat-no" title="function not covered" > getRequest() {</span>
764
870
  <span class="cstat-no" title="statement not covered" > return this.request</span>
765
871
  }
766
872
  &nbsp;
@@ -791,7 +897,7 @@ class TestConfiguration {
791
897
  async _req(config: any, params: any, controlFunc: any) {
792
898
  const request: any = {}
793
899
  // fake cookies, we don't need them
794
- request.cookies = { set: <span class="fstat-no" title="function not covered" >() =</span>&gt; {}, get: <span class="fstat-no" title="function not covered" >() =</span>&gt; {} }
900
+ request.cookies = { set: <span class="fstat-no" title="function not covered" >() =&gt; {</span>}, get: <span class="fstat-no" title="function not covered" >() =&gt; {</span>} }
795
901
  request.config = { jwtSecret: env.JWT_SECRET }
796
902
  request.user = { tenantId: this.getTenantId() }
797
903
  request.query = {}
@@ -813,13 +919,21 @@ class TestConfiguration {
813
919
  // SETUP / TEARDOWN
814
920
  &nbsp;
815
921
  async beforeAll() {
816
- await this.createDefaultUser()
817
- await this.createSession(this.defaultUser!)
922
+ try {
923
+ this.#tenantId = structures.tenant.id()
818
924
  &nbsp;
819
- await tenancy.doInTenant(TENANT_1, async () =&gt; {
820
- await this.createTenant1User()
821
- await this.createSession(this.tenant1User!)
822
- })
925
+ // Running tests in parallel causes issues creating the globaldb twice. This ensures the db is properly created before starting
926
+ await retry(async () =&gt; await this.createDefaultUser())
927
+ await this.createSession(this.defaultUser!)
928
+ &nbsp;
929
+ await tenancy.doInTenant(this.#tenantId, async () =&gt; {
930
+ await this.createTenant1User()
931
+ await this.createSession(this.tenant1User!)
932
+ })
933
+ } catch (e: any) {
934
+ <span class="cstat-no" title="statement not covered" > console.log(e)</span>
935
+ <span class="cstat-no" title="statement not covered" > throw new Error(e.message)</span>
936
+ }
823
937
  }
824
938
  &nbsp;
825
939
  async afterAll() {
@@ -833,6 +947,8 @@ class TestConfiguration {
833
947
  createTenant = async (): Promise&lt;User&gt; =&gt; {
834
948
  // create user / new tenant
835
949
  const res = await this.api.users.createAdminUser()
950
+ &nbsp;
951
+ await sdk.users.addTenant(res.tenantId, res.userId, res.email)
836
952
  &nbsp;
837
953
  // return the created user
838
954
  const userRes = await this.api.users.getUser(res.userId, {
@@ -853,7 +969,7 @@ class TestConfiguration {
853
969
  try {
854
970
  return tenancy.getTenantId()
855
971
  } catch (e: any) {
856
- return TENANT_ID
972
+ return DEFAULT_TENANT_ID
857
973
  }
858
974
  }
859
975
  &nbsp;
@@ -904,7 +1020,7 @@ class TestConfiguration {
904
1020
  const tenantId = this.getTenantId()
905
1021
  if (tenantId === TENANT_ID) {
906
1022
  return this.authHeaders(this.defaultUser!)
907
- } else if (tenantId === TENANT_1) {
1023
+ } else if (tenantId === this.getTenantId()) {
908
1024
  return this.authHeaders(this.tenant1User!)
909
1025
  } else <span class="missing-if-branch" title="else path not taken" >E</span>{
910
1026
  <span class="cstat-no" title="statement not covered" > throw new Error("could not determine auth headers to use")</span>
@@ -923,7 +1039,6 @@ class TestConfiguration {
923
1039
  &nbsp;
924
1040
  async createDefaultUser() {
925
1041
  const user = structures.users.adminUser({
926
- email: "test@test.com",
927
1042
  password: "test",
928
1043
  })
929
1044
  this.defaultUser = await this.createUser(user)
@@ -931,7 +1046,6 @@ class TestConfiguration {
931
1046
  &nbsp;
932
1047
  async createTenant1User() {
933
1048
  const user = structures.users.adminUser({
934
- email: "tenant1@test.com",
935
1049
  password: "test",
936
1050
  })
937
1051
  this.tenant1User = await this.createUser(user)
@@ -991,14 +1105,14 @@ class TestConfiguration {
991
1105
  &nbsp;
992
1106
  // CONFIGS - GOOGLE
993
1107
  &nbsp;
994
- async <span class="fstat-no" title="function not covered" >saveGoogleConfig(</span>) {
1108
+ <span class="fstat-no" title="function not covered" > async s</span>aveGoogleConfig() {
995
1109
  <span class="cstat-no" title="statement not covered" > await this.deleteConfig(Config.GOOGLE)</span>
996
1110
  <span class="cstat-no" title="statement not covered" > await this._req(structures.configs.google(), null, controllers.config.save)</span>
997
1111
  }
998
1112
  &nbsp;
999
1113
  // CONFIGS - OIDC
1000
1114
  &nbsp;
1001
- <span class="fstat-no" title="function not covered" > getOIDConfigCookie(</span>configId: string) {
1115
+ <span class="fstat-no" title="function not covered" > getOIDConfigCookie(c</span>onfigId: string) {
1002
1116
  const token = <span class="cstat-no" title="statement not covered" >auth.jwt.sign(configId, env.JWT_SECRET)</span>
1003
1117
  <span class="cstat-no" title="statement not covered" > return this.cookieHeader([[`${constants.Cookie.OIDC_CONFIG}=${token}`]])</span>
1004
1118
  }
@@ -1028,7 +1142,7 @@ class TestConfiguration {
1028
1142
  }
1029
1143
  }
1030
1144
  &nbsp;
1031
- export = TestConfiguration
1145
+ export default TestConfiguration
1032
1146
  &nbsp;</pre></td></tr></table></pre>
1033
1147
 
1034
1148
  <div class='push'></div><!-- for sticky footer -->
@@ -1036,7 +1150,7 @@ export = TestConfiguration
1036
1150
  <div class='footer quiet pad2 space-top1 center small'>
1037
1151
  Code coverage generated by
1038
1152
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1039
- at Thu Feb 02 2023 11:54:57 GMT+0000 (Coordinated Universal Time)
1153
+ at Mon Feb 06 2023 09:20:59 GMT+0000 (Coordinated Universal Time)
1040
1154
  </div>
1041
1155
  <script src="../../prettify.js"></script>
1042
1156
  <script>