@budibase/worker 2.1.22-alpha.5 → 2.1.22-alpha.7

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 (171) hide show
  1. package/__mocks__/oauth.ts +57 -0
  2. package/coverage/clover.xml +1255 -1174
  3. package/coverage/coverage-final.json +77 -72
  4. package/coverage/lcov-report/index.html +96 -96
  5. package/coverage/lcov-report/src/api/controllers/global/auth.ts.html +110 -98
  6. package/coverage/lcov-report/src/api/controllers/global/configs.js.html +52 -52
  7. package/coverage/lcov-report/src/api/controllers/global/email.js.html +4 -4
  8. package/coverage/lcov-report/src/api/controllers/global/index.html +38 -38
  9. package/coverage/lcov-report/src/api/controllers/global/license.ts.html +7 -7
  10. package/coverage/lcov-report/src/api/controllers/global/roles.js.html +10 -10
  11. package/coverage/lcov-report/src/api/controllers/global/self.ts.html +59 -59
  12. package/coverage/lcov-report/src/api/controllers/global/templates.ts.html +11 -11
  13. package/coverage/lcov-report/src/api/controllers/global/users.ts.html +75 -69
  14. package/coverage/lcov-report/src/api/controllers/global/workspaces.js.html +7 -7
  15. package/coverage/lcov-report/src/api/controllers/system/accounts.ts.html +4 -4
  16. package/coverage/lcov-report/src/api/controllers/system/{environment.js.html → environment.ts.html} +21 -18
  17. package/coverage/lcov-report/src/api/controllers/system/index.html +63 -63
  18. package/coverage/lcov-report/src/api/controllers/system/migrations.ts.html +23 -23
  19. package/coverage/lcov-report/src/api/controllers/system/restore.ts.html +22 -22
  20. package/coverage/lcov-report/src/api/controllers/system/{status.js.html → status.ts.html} +29 -26
  21. package/coverage/lcov-report/src/api/controllers/system/tenants.ts.html +34 -163
  22. package/coverage/lcov-report/src/api/index.html +11 -11
  23. package/coverage/lcov-report/src/api/index.ts.html +113 -44
  24. package/coverage/lcov-report/src/api/routes/global/auth.js.html +38 -89
  25. package/coverage/lcov-report/src/api/routes/global/configs.js.html +26 -26
  26. package/coverage/lcov-report/src/api/routes/global/email.js.html +11 -11
  27. package/coverage/lcov-report/src/api/routes/global/index.html +11 -11
  28. package/coverage/lcov-report/src/api/routes/global/license.ts.html +6 -6
  29. package/coverage/lcov-report/src/api/routes/global/roles.js.html +7 -7
  30. package/coverage/lcov-report/src/api/routes/global/self.ts.html +8 -8
  31. package/coverage/lcov-report/src/api/routes/global/templates.ts.html +13 -13
  32. package/coverage/lcov-report/src/api/routes/global/users.js.html +17 -17
  33. package/coverage/lcov-report/src/api/routes/global/workspaces.js.html +10 -10
  34. package/coverage/lcov-report/src/api/routes/index.html +1 -1
  35. package/coverage/lcov-report/src/api/routes/index.ts.html +19 -19
  36. package/coverage/lcov-report/src/api/routes/system/accounts.ts.html +7 -7
  37. package/coverage/lcov-report/src/api/routes/system/{environment.js.html → environment.ts.html} +11 -11
  38. package/coverage/lcov-report/src/api/routes/system/index.html +4 -4
  39. package/coverage/lcov-report/src/api/routes/system/migrations.ts.html +7 -7
  40. package/coverage/lcov-report/src/api/routes/system/restore.ts.html +6 -6
  41. package/coverage/lcov-report/src/api/routes/system/{status.js.html → status.ts.html} +11 -11
  42. package/coverage/lcov-report/src/api/routes/system/{tenants.js.html → tenants.ts.html} +20 -17
  43. package/coverage/lcov-report/src/api/routes/validation/index.html +1 -1
  44. package/coverage/lcov-report/src/api/routes/validation/index.ts.html +2 -2
  45. package/coverage/lcov-report/src/api/routes/validation/users.ts.html +13 -13
  46. package/coverage/lcov-report/src/constants/index.html +10 -10
  47. package/coverage/lcov-report/src/constants/{index.js.html → index.ts.html} +103 -124
  48. package/coverage/lcov-report/src/constants/templates/index.html +1 -1
  49. package/coverage/lcov-report/src/constants/templates/index.js.html +12 -12
  50. package/coverage/lcov-report/src/db/index.html +1 -1
  51. package/coverage/lcov-report/src/db/index.ts.html +8 -8
  52. package/coverage/lcov-report/src/environment.ts.html +15 -15
  53. package/coverage/lcov-report/src/index.html +1 -1
  54. package/coverage/lcov-report/src/index.ts.html +40 -40
  55. package/coverage/lcov-report/src/middleware/cloudRestricted.js.html +23 -23
  56. package/coverage/lcov-report/src/middleware/index.html +21 -21
  57. package/coverage/lcov-report/src/migrations/functions/globalInfoSyncUsers.ts.html +3 -3
  58. package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
  59. package/coverage/lcov-report/src/migrations/index.html +1 -1
  60. package/coverage/lcov-report/src/migrations/index.ts.html +17 -17
  61. package/coverage/lcov-report/src/sdk/accounts/accounts.ts.html +6 -6
  62. package/coverage/lcov-report/src/sdk/accounts/index.html +1 -1
  63. package/coverage/lcov-report/src/sdk/accounts/index.ts.html +2 -2
  64. package/coverage/lcov-report/src/sdk/index.html +1 -1
  65. package/coverage/lcov-report/src/sdk/index.ts.html +4 -4
  66. package/coverage/lcov-report/src/sdk/users/events.ts.html +43 -43
  67. package/coverage/lcov-report/src/sdk/users/index.html +19 -19
  68. package/coverage/lcov-report/src/sdk/users/index.ts.html +2 -2
  69. package/coverage/lcov-report/src/sdk/users/users.ts.html +99 -99
  70. package/coverage/lcov-report/src/tests/TestConfiguration.ts.html +275 -128
  71. package/coverage/lcov-report/src/tests/api/accounts.ts.html +12 -21
  72. package/coverage/lcov-report/src/tests/api/auth.ts.html +11 -20
  73. package/coverage/lcov-report/src/tests/api/base.ts.html +133 -0
  74. package/coverage/lcov-report/src/tests/api/configs.ts.html +44 -23
  75. package/coverage/lcov-report/src/tests/api/email.ts.html +9 -18
  76. package/coverage/lcov-report/src/tests/api/environment.ts.html +130 -0
  77. package/coverage/lcov-report/src/tests/api/index.html +106 -16
  78. package/coverage/lcov-report/src/tests/api/index.ts.html +62 -17
  79. package/coverage/lcov-report/src/tests/{structures/accounts.ts.html → api/migrations.ts.html} +31 -37
  80. package/coverage/lcov-report/src/tests/api/restore.ts.html +127 -0
  81. package/coverage/lcov-report/src/tests/api/self.ts.html +31 -16
  82. package/coverage/lcov-report/src/tests/api/status.ts.html +121 -0
  83. package/coverage/lcov-report/src/tests/api/tenants.ts.html +130 -0
  84. package/coverage/lcov-report/src/tests/api/users.ts.html +121 -25
  85. package/coverage/lcov-report/src/tests/controllers.js.html +2 -2
  86. package/coverage/lcov-report/src/tests/index.html +21 -21
  87. package/coverage/lcov-report/src/tests/index.ts.html +21 -9
  88. package/coverage/lcov-report/src/tests/mocks/email.js.html +2 -2
  89. package/coverage/lcov-report/src/tests/mocks/index.html +1 -1
  90. package/coverage/lcov-report/src/tests/mocks/index.ts.html +4 -4
  91. package/coverage/lcov-report/src/tests/structures/configs.js.html +14 -14
  92. package/coverage/lcov-report/src/tests/structures/groups.ts.html +2 -2
  93. package/coverage/lcov-report/src/tests/structures/index.html +9 -24
  94. package/coverage/lcov-report/src/tests/structures/index.ts.html +21 -15
  95. package/coverage/lcov-report/src/tests/structures/users.ts.html +13 -10
  96. package/coverage/lcov-report/src/utilities/appService.js.html +14 -14
  97. package/coverage/lcov-report/src/utilities/{email.js.html → email.ts.html} +172 -73
  98. package/coverage/lcov-report/src/utilities/fileSystem.js.html +4 -4
  99. package/coverage/lcov-report/src/utilities/index.html +23 -23
  100. package/coverage/lcov-report/src/utilities/index.js.html +2 -2
  101. package/coverage/lcov-report/src/utilities/{redis.js.html → redis.ts.html} +63 -48
  102. package/coverage/lcov-report/src/utilities/{templates.js.html → templates.ts.html} +41 -41
  103. package/coverage/lcov-report/src/utilities/users.js.html +8 -8
  104. package/coverage/lcov.info +2058 -1820
  105. package/jest.config.ts +1 -0
  106. package/package.json +8 -6
  107. package/scripts/localdomain.js +33 -7
  108. package/src/api/controllers/global/auth.ts +35 -31
  109. package/src/api/controllers/global/configs.js +17 -17
  110. package/src/api/controllers/global/self.ts +2 -2
  111. package/src/api/controllers/global/users.ts +3 -1
  112. package/src/api/controllers/system/{environment.js → environment.ts} +3 -2
  113. package/src/api/controllers/system/{status.js → status.ts} +4 -3
  114. package/src/api/controllers/system/tenants.ts +8 -51
  115. package/src/api/index.ts +29 -6
  116. package/src/api/routes/global/auth.js +22 -39
  117. package/src/api/routes/global/configs.js +9 -9
  118. package/src/api/routes/global/templates.ts +2 -2
  119. package/src/api/routes/global/tests/auth.spec.ts +134 -64
  120. package/src/api/routes/global/tests/configs.spec.ts +34 -35
  121. package/src/api/routes/global/tests/email.spec.ts +4 -3
  122. package/src/api/routes/global/tests/license.spec.ts +31 -0
  123. package/src/api/routes/global/tests/realEmail.spec.ts +2 -3
  124. package/src/api/routes/global/tests/roles.spec.ts +27 -0
  125. package/src/api/routes/global/tests/self.spec.ts +3 -4
  126. package/src/api/routes/global/tests/templates.spec.ts +35 -0
  127. package/src/api/routes/global/tests/users.spec.ts +51 -43
  128. package/src/api/routes/global/tests/workspaces.spec.ts +29 -0
  129. package/src/api/routes/system/environment.ts +8 -0
  130. package/src/api/routes/system/status.ts +8 -0
  131. package/src/api/routes/system/tenants.ts +13 -0
  132. package/src/api/routes/system/tests/accounts.spec.ts +5 -6
  133. package/src/api/routes/system/tests/environment.spec.ts +29 -0
  134. package/src/api/routes/system/tests/migrations.spec.ts +63 -0
  135. package/src/api/routes/system/tests/restore.spec.ts +36 -0
  136. package/src/api/routes/system/tests/status.spec.ts +48 -0
  137. package/src/api/routes/system/tests/tenants.spec.ts +61 -0
  138. package/src/constants/{index.js → index.ts} +57 -64
  139. package/src/constants/templates/index.js +2 -2
  140. package/src/middleware/cloudRestricted.js +2 -2
  141. package/src/middleware/tests/tenancy.spec.ts +73 -0
  142. package/src/tests/TestConfiguration.ts +97 -48
  143. package/src/tests/api/accounts.ts +5 -8
  144. package/src/tests/api/auth.ts +3 -6
  145. package/src/tests/api/base.ts +16 -0
  146. package/src/tests/api/configs.ts +15 -8
  147. package/src/tests/api/email.ts +3 -6
  148. package/src/tests/api/environment.ts +15 -0
  149. package/src/tests/api/index.ts +15 -0
  150. package/src/tests/api/migrations.ts +22 -0
  151. package/src/tests/api/restore.ts +14 -0
  152. package/src/tests/api/self.ts +11 -6
  153. package/src/tests/api/status.ts +12 -0
  154. package/src/tests/api/tenants.ts +15 -0
  155. package/src/tests/api/users.ts +38 -6
  156. package/src/tests/index.ts +4 -0
  157. package/src/tests/jestSetup.ts +7 -1
  158. package/src/tests/structures/configs.js +6 -6
  159. package/src/tests/structures/index.ts +4 -2
  160. package/src/tests/structures/users.ts +1 -0
  161. package/src/utilities/appService.js +3 -3
  162. package/src/utilities/{email.js → email.ts} +78 -45
  163. package/src/utilities/{redis.js → redis.ts} +29 -24
  164. package/src/utilities/templates.ts +49 -0
  165. package/tsconfig.build.json +3 -3
  166. package/__mocks__/node-fetch.ts +0 -1
  167. package/src/api/routes/system/environment.js +0 -8
  168. package/src/api/routes/system/status.js +0 -8
  169. package/src/api/routes/system/tenants.js +0 -12
  170. package/src/tests/structures/accounts.ts +0 -24
  171. package/src/utilities/templates.js +0 -49
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">25.64% </span>
26
+ <span class="strong">86.66% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>10/39</span>
28
+ <span class='fraction'>13/15</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/3</span>
35
+ <span class='fraction'>1/1</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/10</span>
42
+ <span class='fraction'>2/2</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">23.52% </span>
47
+ <span class="strong">85.71% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>8/34</span>
49
+ <span class='fraction'>12/14</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -86,174 +86,45 @@
86
86
  <a name='L21'></a><a href='#L21'>21</a>
87
87
  <a name='L22'></a><a href='#L22'>22</a>
88
88
  <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">7x</span>
133
- <span class="cline-any cline-yes">7x</span>
134
- <span class="cline-any cline-yes">7x</span>
135
- <span class="cline-any cline-yes">7x</span>
136
- <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-yes">7x</span>
138
- <span class="cline-any cline-no">&nbsp;</span>
139
- <span class="cline-any cline-no">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-no">&nbsp;</span>
143
- <span class="cline-any cline-no">&nbsp;</span>
144
- <span class="cline-any cline-no">&nbsp;</span>
145
- <span class="cline-any cline-no">&nbsp;</span>
146
- <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-no">&nbsp;</span>
149
- <span class="cline-any cline-no">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
89
+ <a name='L24'></a><a href='#L24'>24</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
90
+ <span class="cline-any cline-yes">17x</span>
91
+ <span class="cline-any cline-yes">17x</span>
151
92
  <span class="cline-any cline-neutral">&nbsp;</span>
93
+ <span class="cline-any cline-yes">17x</span>
94
+ <span class="cline-any cline-yes">2x</span>
95
+ <span class="cline-any cline-yes">2x</span>
152
96
  <span class="cline-any cline-neutral">&nbsp;</span>
97
+ <span class="cline-any cline-yes">2x</span>
98
+ <span class="cline-any cline-yes">1x</span>
153
99
  <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-no">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-yes">7x</span>
161
- <span class="cline-any cline-no">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-no">&nbsp;</span>
164
- <span class="cline-any cline-no">&nbsp;</span>
165
- <span class="cline-any cline-no">&nbsp;</span>
166
- <span class="cline-any cline-no">&nbsp;</span>
167
100
  <span class="cline-any cline-neutral">&nbsp;</span>
101
+ <span class="cline-any cline-yes">1x</span>
102
+ <span class="cline-any cline-yes">1x</span>
103
+ <span class="cline-any cline-yes">1x</span>
104
+ <span class="cline-any cline-yes">1x</span>
168
105
  <span class="cline-any cline-neutral">&nbsp;</span>
169
106
  <span class="cline-any cline-no">&nbsp;</span>
170
107
  <span class="cline-any cline-no">&nbsp;</span>
171
108
  <span class="cline-any cline-neutral">&nbsp;</span>
172
109
  <span class="cline-any cline-neutral">&nbsp;</span>
173
110
  <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-no">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-yes">7x</span>
181
- <span class="cline-any cline-no">&nbsp;</span>
182
- <span class="cline-any cline-neutral">&nbsp;</span>
183
- <span class="cline-any cline-no">&nbsp;</span>
184
- <span class="cline-any cline-no">&nbsp;</span>
185
- <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
189
- <span class="cline-any cline-no">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
191
- <span class="cline-any cline-neutral">&nbsp;</span>
192
- <span class="cline-any cline-no">&nbsp;</span>
193
- <span class="cline-any cline-no">&nbsp;</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-neutral">&nbsp;</span>
196
- <span class="cline-any cline-neutral">&nbsp;</span>
197
- <span class="cline-any cline-yes">7x</span>
198
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const { StaticDatabases, doWithDB } = require("@budibase/backend-core/db")
199
- const { getTenantId } = require("@budibase/backend-core/tenancy")
200
- const { deleteTenant } = require("@budibase/backend-core/deprovision")
111
+ <span class="cline-any cline-yes">17x</span>
112
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { BBContext } from "@budibase/types"
113
+ import { deprovisioning } from "@budibase/backend-core"
201
114
  import { quotas } from "@budibase/pro"
202
115
  &nbsp;
203
- export const exists = <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
204
- const tenantId = <span class="cstat-no" title="statement not covered" >ctx.request.params</span>
205
- <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
206
- exists: await doWithDB(
207
- StaticDatabases.PLATFORM_INFO.name,
208
- <span class="fstat-no" title="function not covered" > async (d</span>b: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
209
- let exists = <span class="cstat-no" title="statement not covered" >false</span>
210
- <span class="cstat-no" title="statement not covered" > try {</span>
211
- const tenantsDoc = <span class="cstat-no" title="statement not covered" >await db.get(</span>
212
- StaticDatabases.PLATFORM_INFO.docs.tenants
213
- )
214
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (tenantsDoc) {</span>
215
- <span class="cstat-no" title="statement not covered" > exists = tenantsDoc.tenantIds.indexOf(tenantId) !== -1</span>
216
- }
217
- } catch (err) {
218
- // if error it doesn't exist
219
- }
220
- <span class="cstat-no" title="statement not covered" > return exists</span>
221
- }
222
- ),
223
- }
224
- }
225
- &nbsp;
226
- export const fetch = <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
227
- <span class="cstat-no" title="statement not covered" > ctx.body = await doWithDB(</span>
228
- StaticDatabases.PLATFORM_INFO.name,
229
- <span class="fstat-no" title="function not covered" > async (d</span>b: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
230
- let tenants = <span class="cstat-no" title="statement not covered" >[]</span>
231
- <span class="cstat-no" title="statement not covered" > try {</span>
232
- const tenantsDoc = <span class="cstat-no" title="statement not covered" >await db.get(</span>
233
- StaticDatabases.PLATFORM_INFO.docs.tenants
234
- )
235
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (tenantsDoc) {</span>
236
- <span class="cstat-no" title="statement not covered" > tenants = tenantsDoc.tenantIds</span>
237
- }
238
- } catch (err) {
239
- // if error it doesn't exist
240
- }
241
- <span class="cstat-no" title="statement not covered" > return tenants</span>
242
- }
243
- )
244
- }
245
- &nbsp;
246
- const _delete = <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =&gt;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
247
- const tenantId = <span class="cstat-no" title="statement not covered" >getTenantId()</span>
116
+ const _delete = async (ctx: BBContext) =&gt; {
117
+ const user = ctx.user!
118
+ const tenantId = ctx.params.tenantId
248
119
  &nbsp;
249
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.params.tenantId !== tenantId) {</span>
250
- <span class="cstat-no" title="statement not covered" > ctx.throw(403, "Unauthorized")</span>
120
+ if (tenantId !== user.tenantId) {
121
+ ctx.throw(403, "Tenant ID does not match current user")
251
122
  }
252
123
  &nbsp;
253
- <span class="cstat-no" title="statement not covered" > try {</span>
254
- <span class="cstat-no" title="statement not covered" > await deleteTenant(tenantId)</span>
255
- <span class="cstat-no" title="statement not covered" > await quotas.bustCache()</span>
256
- <span class="cstat-no" title="statement not covered" > ctx.status = 204</span>
124
+ try {
125
+ await quotas.bustCache()
126
+ await deprovisioning.deleteTenant(tenantId)
127
+ ctx.status = 204
257
128
  } catch (err) {
258
129
  <span class="cstat-no" title="statement not covered" > ctx.log.error(err)</span>
259
130
  <span class="cstat-no" title="statement not covered" > throw err</span>
@@ -268,7 +139,7 @@ export { _delete as delete }
268
139
  <div class='footer quiet pad2 space-top1 center small'>
269
140
  Code coverage generated by
270
141
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
271
- at Wed Nov 16 2022 12:02:15 GMT+0000 (Coordinated Universal Time)
142
+ at Thu Nov 17 2022 16:59:05 GMT+0000 (Coordinated Universal Time)
272
143
  </div>
273
144
  <script src="../../../../prettify.js"></script>
274
145
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">90.62% </span>
26
+ <span class="strong">93.75% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>29/32</span>
28
+ <span class='fraction'>30/32</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">93.33% </span>
47
+ <span class="strong">96.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>28/30</span>
49
+ <span class='fraction'>29/30</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
83
- <td data-value="90.62" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
83
+ <td data-value="93.75" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
85
85
  </td>
86
- <td data-value="90.62" class="pct high">90.62%</td>
87
- <td data-value="32" class="abs high">29/32</td>
86
+ <td data-value="93.75" class="pct high">93.75%</td>
87
+ <td data-value="32" class="abs high">30/32</td>
88
88
  <td data-value="77.77" class="pct medium">77.77%</td>
89
89
  <td data-value="9" class="abs medium">7/9</td>
90
90
  <td data-value="60" class="pct medium">60%</td>
91
91
  <td data-value="5" class="abs medium">3/5</td>
92
- <td data-value="93.33" class="pct high">93.33%</td>
93
- <td data-value="30" class="abs high">28/30</td>
92
+ <td data-value="96.66" class="pct high">96.66%</td>
93
+ <td data-value="30" class="abs high">29/30</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at Wed Nov 16 2022 12:02:15 GMT+0000 (Coordinated Universal Time)
104
+ at Thu Nov 17 2022 16:59:05 GMT+0000 (Coordinated Universal Time)
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -23,9 +23,9 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">90.62% </span>
26
+ <span class="strong">93.75% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>29/32</span>
28
+ <span class='fraction'>30/32</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">93.33% </span>
47
+ <span class="strong">96.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>28/30</span>
49
+ <span class='fraction'>29/30</span>
50
50
  </div>
51
51
 
52
52
 
@@ -206,15 +206,38 @@
206
206
  <a name='L141'></a><a href='#L141'>141</a>
207
207
  <a name='L142'></a><a href='#L142'>142</a>
208
208
  <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">7x</span>
210
- <span class="cline-any cline-yes">7x</span>
211
- <span class="cline-any cline-yes">7x</span>
212
- <span class="cline-any cline-yes">7x</span>
213
- <span class="cline-any cline-yes">7x</span>
214
- <span class="cline-any cline-yes">7x</span>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
233
+ <span class="cline-any cline-yes">17x</span>
234
+ <span class="cline-any cline-yes">17x</span>
235
+ <span class="cline-any cline-yes">17x</span>
236
+ <span class="cline-any cline-yes">17x</span>
237
+ <span class="cline-any cline-yes">17x</span>
215
238
  <span class="cline-any cline-neutral">&nbsp;</span>
216
239
  <span class="cline-any cline-neutral">&nbsp;</span>
217
- <span class="cline-any cline-yes">7x</span>
240
+ <span class="cline-any cline-yes">17x</span>
218
241
  <span class="cline-any cline-neutral">&nbsp;</span>
219
242
  <span class="cline-any cline-neutral">&nbsp;</span>
220
243
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -269,7 +292,16 @@
269
292
  <span class="cline-any cline-neutral">&nbsp;</span>
270
293
  <span class="cline-any cline-neutral">&nbsp;</span>
271
294
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">7x</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-yes">17x</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
305
  <span class="cline-any cline-neutral">&nbsp;</span>
274
306
  <span class="cline-any cline-neutral">&nbsp;</span>
275
307
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,10 +319,7 @@
287
319
  <span class="cline-any cline-neutral">&nbsp;</span>
288
320
  <span class="cline-any cline-neutral">&nbsp;</span>
289
321
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">7x</span>
291
322
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-yes">7x</span>
293
- <span class="cline-any cline-yes">7x</span>
294
323
  <span class="cline-any cline-neutral">&nbsp;</span>
295
324
  <span class="cline-any cline-neutral">&nbsp;</span>
296
325
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -303,52 +332,69 @@
303
332
  <span class="cline-any cline-neutral">&nbsp;</span>
304
333
  <span class="cline-any cline-neutral">&nbsp;</span>
305
334
  <span class="cline-any cline-neutral">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-yes">17x</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-yes">17x</span>
339
+ <span class="cline-any cline-yes">17x</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
342
  <span class="cline-any cline-neutral">&nbsp;</span>
308
343
  <span class="cline-any cline-neutral">&nbsp;</span>
309
344
  <span class="cline-any cline-neutral">&nbsp;</span>
310
345
  <span class="cline-any cline-neutral">&nbsp;</span>
311
346
  <span class="cline-any cline-neutral">&nbsp;</span>
312
347
  <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-yes">74x</span>
314
- <span class="cline-any cline-yes">8x</span>
315
348
  <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-yes">66x</span>
317
349
  <span class="cline-any cline-neutral">&nbsp;</span>
318
350
  <span class="cline-any cline-neutral">&nbsp;</span>
319
351
  <span class="cline-any cline-neutral">&nbsp;</span>
320
352
  <span class="cline-any cline-no">&nbsp;</span>
321
353
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-yes">66x</span>
323
354
  <span class="cline-any cline-neutral">&nbsp;</span>
324
355
  <span class="cline-any cline-neutral">&nbsp;</span>
325
356
  <span class="cline-any cline-neutral">&nbsp;</span>
326
357
  <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-yes">74x</span>
328
- <span class="cline-any cline-yes">74x</span>
329
- <span class="cline-any cline-yes">74x</span>
330
358
  <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">11x</span>
332
- <span class="cline-any cline-yes">11x</span>
333
- <span class="cline-any cline-yes">11x</span>
334
- <span class="cline-any cline-yes">11x</span>
359
+ <span class="cline-any cline-yes">104x</span>
360
+ <span class="cline-any cline-yes">24x</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-yes">80x</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-yes">2x</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-yes">78x</span>
335
369
  <span class="cline-any cline-neutral">&nbsp;</span>
336
370
  <span class="cline-any cline-neutral">&nbsp;</span>
337
371
  <span class="cline-any cline-neutral">&nbsp;</span>
338
372
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">11x</span>
373
+ <span class="cline-any cline-yes">102x</span>
374
+ <span class="cline-any cline-yes">102x</span>
375
+ <span class="cline-any cline-yes">102x</span>
340
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-yes">13x</span>
378
+ <span class="cline-any cline-yes">13x</span>
379
+ <span class="cline-any cline-yes">13x</span>
380
+ <span class="cline-any cline-yes">13x</span>
341
381
  <span class="cline-any cline-neutral">&nbsp;</span>
342
382
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-yes">7x</span>
344
383
  <span class="cline-any cline-neutral">&nbsp;</span>
345
384
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">7x</span>
347
- <span class="cline-any cline-yes">112x</span>
348
- <span class="cline-any cline-yes">112x</span>
385
+ <span class="cline-any cline-yes">13x</span>
349
386
  <span class="cline-any cline-neutral">&nbsp;</span>
350
387
  <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-yes">7x</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-yes">17x</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-yes">17x</span>
393
+ <span class="cline-any cline-yes">272x</span>
394
+ <span class="cline-any cline-yes">272x</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-yes">17x</span>
352
398
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import Router from "@koa/router"
353
399
  const compress = require("koa-compress")
354
400
  const zlib = require("zlib")
@@ -358,11 +404,12 @@ import { errors, auth, middleware } from "@budibase/backend-core"
358
404
  import { APIError } from "@budibase/types"
359
405
  &nbsp;
360
406
  const PUBLIC_ENDPOINTS = [
361
- // old deprecated endpoints kept for backwards compat
407
+ // deprecated single tenant sso callback
362
408
  {
363
409
  route: "/api/admin/auth/google/callback",
364
410
  method: "GET",
365
411
  },
412
+ // deprecated single tenant sso callback
366
413
  {
367
414
  route: "/api/admin/auth/oidc/callback",
368
415
  method: "GET",
@@ -395,17 +442,19 @@ const PUBLIC_ENDPOINTS = [
395
442
  method: "POST",
396
443
  },
397
444
  {
398
- route: "api/system/environment",
445
+ route: "/api/system/environment",
399
446
  method: "GET",
400
447
  },
401
448
  {
402
- route: "api/system/status",
449
+ route: "/api/system/status",
403
450
  method: "GET",
404
451
  },
452
+ // TODO: This should be an internal api
405
453
  {
406
454
  route: "/api/global/users/tenant/:id",
407
455
  method: "GET",
408
456
  },
457
+ // TODO: This should be an internal api
409
458
  {
410
459
  route: "/api/system/restored",
411
460
  method: "POST",
@@ -413,17 +462,37 @@ const PUBLIC_ENDPOINTS = [
413
462
  ]
414
463
  &nbsp;
415
464
  const NO_TENANCY_ENDPOINTS = [
416
- ...PUBLIC_ENDPOINTS,
465
+ // system endpoints are not specific to any tenant
417
466
  {
418
467
  route: "/api/system",
419
468
  method: "ALL",
420
469
  },
470
+ // tenant is determined in request body
471
+ // used for creating the tenant
421
472
  {
422
- route: "/api/global/users/self",
473
+ route: "/api/global/users/init",
474
+ method: "POST",
475
+ },
476
+ // deprecated single tenant sso callback
477
+ {
478
+ route: "/api/admin/auth/google/callback",
423
479
  method: "GET",
424
480
  },
481
+ // deprecated single tenant sso callback
425
482
  {
426
- route: "/api/global/self",
483
+ route: "/api/admin/auth/oidc/callback",
484
+ method: "GET",
485
+ },
486
+ // tenant is determined from code in redis
487
+ {
488
+ route: "/api/global/users/invite/accept",
489
+ method: "POST",
490
+ },
491
+ // global user search - no tenancy
492
+ // :id is user id
493
+ // TODO: this should really be `/api/system/users/:id`
494
+ {
495
+ route: "/api/global/users/tenant/:id",
427
496
  method: "GET",
428
497
  },
429
498
  ]
@@ -456,11 +525,11 @@ router
456
525
  if (ctx.publicEndpoint) {
457
526
  return next()
458
527
  }
459
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
528
+ if (
460
529
  (!ctx.isAuthenticated || (ctx.user &amp;&amp; !ctx.user.budibaseAccess)) &amp;&amp;
461
- <span class="branch-3 cbranch-no" title="branch not covered" > !ctx.internal</span>
530
+ !ctx.internal
462
531
  ) {
463
- <span class="cstat-no" title="statement not covered" > ctx.throw(403, "Unauthorized - no public worker access")</span>
532
+ ctx.throw(403, "Unauthorized - no public worker access")
464
533
  }
465
534
  return next()
466
535
  })
@@ -472,7 +541,7 @@ router.use(async (ctx, next) =&gt; {
472
541
  await next()
473
542
  } catch (err: any) {
474
543
  ctx.log.error(err)
475
- ctx.status = err.status || err.statusCode || 500
544
+ ctx.status = err.status || <span class="branch-1 cbranch-no" title="branch not covered" >err.statusCode </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >500</span>
476
545
  const error = errors.getPublicError(err)
477
546
  const body: APIError = {
478
547
  message: err.message,
@@ -499,7 +568,7 @@ module.exports = router
499
568
  <div class='footer quiet pad2 space-top1 center small'>
500
569
  Code coverage generated by
501
570
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
502
- at Wed Nov 16 2022 12:02:15 GMT+0000 (Coordinated Universal Time)
571
+ at Thu Nov 17 2022 16:59:05 GMT+0000 (Coordinated Universal Time)
503
572
  </div>
504
573
  <script src="../../prettify.js"></script>
505
574
  <script>