@budibase/server 2.3.17 → 2.3.18-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 (467) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.06e34d35.js → index.7089444f.js} +361 -361
  3. package/builder/assets/{index.4488f38d.css → index.7e76c039.css} +1 -1
  4. package/builder/index.html +2 -2
  5. package/dist/api/controllers/query/index.js +2 -0
  6. package/dist/api/controllers/row/ExternalRequest.js +4 -2
  7. package/dist/api/controllers/row/external.js +12 -1
  8. package/dist/api/controllers/row/staticFormula.js +5 -1
  9. package/dist/api/controllers/table/external.js +8 -8
  10. package/dist/api/index.js +1 -21
  11. package/dist/app.js +7 -1
  12. package/dist/constants/index.js +4 -24
  13. package/dist/db/defaultData/datasource_bb_default.js +6 -5
  14. package/dist/db/linkedRows/LinkController.js +9 -8
  15. package/dist/ddApm.js +11 -0
  16. package/dist/elasticApm.js +14 -0
  17. package/dist/integrations/base/sql.js +10 -3
  18. package/dist/package.json +12 -8
  19. package/dist/sdk/app/backups/exports.js +8 -2
  20. package/dist/sdk/app/datasources/datasources.js +3 -0
  21. package/dist/tsconfig.build.tsbuildinfo +1 -1
  22. package/dist/utilities/redis.js +2 -0
  23. package/dist/utilities/retry.js +30 -0
  24. package/jest-testcontainers-config.js +8 -0
  25. package/jest.config.ts +34 -22
  26. package/package.json +13 -9
  27. package/scripts/load/create-many-apps.js +24 -0
  28. package/scripts/load/create-many-rows.js +30 -0
  29. package/scripts/load/utils.js +66 -0
  30. package/specs/openapi.json +6 -6
  31. package/specs/openapi.yaml +3 -3
  32. package/specs/resources/query.js +1 -1
  33. package/specs/resources/table.js +1 -1
  34. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  35. package/src/api/controllers/query/index.ts +2 -0
  36. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  37. package/src/api/controllers/row/external.ts +13 -1
  38. package/src/api/controllers/row/staticFormula.ts +7 -1
  39. package/src/api/controllers/table/external.ts +3 -2
  40. package/src/api/index.ts +3 -22
  41. package/src/api/routes/public/applications.ts +0 -1
  42. package/src/api/routes/public/tests/compare.spec.js +1 -1
  43. package/src/api/routes/public/tests/users.spec.js +1 -1
  44. package/src/api/routes/public/tests/utils.ts +25 -8
  45. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  46. package/src/api/routes/tests/analytics.spec.js +4 -1
  47. package/src/api/routes/tests/apikeys.spec.js +1 -1
  48. package/src/api/routes/tests/application.spec.ts +20 -6
  49. package/src/api/routes/tests/auth.spec.js +2 -2
  50. package/src/api/routes/tests/automation.spec.js +6 -2
  51. package/src/api/routes/tests/backup.spec.ts +4 -14
  52. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  53. package/src/api/routes/tests/component.spec.js +1 -1
  54. package/src/api/routes/tests/datasource.spec.ts +20 -3
  55. package/src/api/routes/tests/dev.spec.js +1 -1
  56. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  57. package/src/api/routes/tests/integration.spec.js +1 -1
  58. package/src/api/routes/tests/layout.spec.js +1 -1
  59. package/src/api/routes/tests/metadata.spec.js +1 -1
  60. package/src/api/routes/tests/misc.spec.js +1 -1
  61. package/src/api/routes/tests/permissions.spec.js +4 -1
  62. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  63. package/src/api/routes/tests/role.spec.js +6 -1
  64. package/src/api/routes/tests/routing.spec.js +1 -1
  65. package/src/api/routes/tests/row.spec.js +11 -3
  66. package/src/api/routes/tests/screen.spec.js +1 -1
  67. package/src/api/routes/tests/static.spec.js +2 -13
  68. package/src/api/routes/tests/table.spec.js +1 -1
  69. package/src/api/routes/tests/templates.spec.js +1 -1
  70. package/src/api/routes/tests/user.spec.js +11 -12
  71. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  72. package/src/api/routes/tests/utilities/index.ts +5 -3
  73. package/src/api/routes/tests/view.spec.js +4 -1
  74. package/src/api/routes/tests/webhook.spec.js +11 -2
  75. package/src/app.ts +10 -1
  76. package/src/automations/tests/automation.spec.js +4 -4
  77. package/src/automations/tests/bash.spec.js +1 -1
  78. package/src/automations/tests/discord.spec.js +1 -1
  79. package/src/automations/tests/executeQuery.spec.js +2 -3
  80. package/src/automations/tests/executeScript.spec.js +1 -1
  81. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  82. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  83. package/src/automations/tests/serverLog.spec.js +1 -1
  84. package/src/automations/tests/updateRow.spec.js +1 -1
  85. package/src/automations/tests/zapier.spec.js +1 -1
  86. package/src/constants/index.ts +1 -23
  87. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  88. package/src/db/linkedRows/LinkController.ts +2 -1
  89. package/src/db/tests/linkController.spec.js +4 -1
  90. package/src/db/tests/linkTests.spec.js +1 -1
  91. package/src/ddApm.ts +7 -0
  92. package/src/elasticApm.ts +10 -0
  93. package/src/integration-test/postgres.spec.ts +762 -0
  94. package/src/integrations/base/sql.ts +15 -5
  95. package/src/integrations/oracle.ts +1 -1
  96. package/src/integrations/tests/couchdb.spec.ts +0 -2
  97. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  98. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  99. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  100. package/src/migrations/tests/index.spec.ts +13 -20
  101. package/src/sdk/app/backups/exports.ts +8 -2
  102. package/src/sdk/app/datasources/datasources.ts +3 -0
  103. package/src/tests/jestEnv.ts +8 -11
  104. package/src/tests/jestSetup.ts +9 -7
  105. package/src/tests/logging.ts +34 -0
  106. package/src/tests/utilities/TestConfiguration.ts +166 -92
  107. package/src/tests/utilities/structures.ts +16 -2
  108. package/src/utilities/redis.ts +2 -0
  109. package/src/utilities/retry.ts +18 -0
  110. package/tsconfig.build.json +1 -0
  111. package/coverage/clover.xml +0 -11771
  112. package/coverage/coverage-final.json +0 -284
  113. package/coverage/lcov-report/base.css +0 -224
  114. package/coverage/lcov-report/block-navigation.js +0 -87
  115. package/coverage/lcov-report/favicon.png +0 -0
  116. package/coverage/lcov-report/index.html +0 -1031
  117. package/coverage/lcov-report/prettify.css +0 -1
  118. package/coverage/lcov-report/prettify.js +0 -2
  119. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  120. package/coverage/lcov-report/sorter.js +0 -196
  121. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  122. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
  123. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
  124. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  125. package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
  126. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  127. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
  128. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  129. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
  130. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
  131. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  132. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
  133. package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
  134. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  135. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  136. package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
  137. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
  138. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
  139. package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
  140. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  141. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  142. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  143. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
  144. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  145. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  146. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  147. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  148. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
  149. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  150. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  151. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  152. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  153. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  154. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  155. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  156. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  157. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  158. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  159. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  160. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
  161. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  162. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  163. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  164. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  165. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  166. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  167. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  168. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  169. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  170. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  171. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  172. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
  173. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
  174. package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
  175. package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
  176. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
  177. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
  178. package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
  179. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  180. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
  181. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
  182. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -577
  183. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
  184. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  185. package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
  186. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  187. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
  188. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
  189. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
  190. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  191. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
  192. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
  193. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
  194. package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
  195. package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
  196. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
  197. package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
  198. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
  199. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
  200. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
  201. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
  202. package/coverage/lcov-report/src/api/index.html +0 -116
  203. package/coverage/lcov-report/src/api/index.ts.html +0 -352
  204. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  205. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  206. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
  207. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  208. package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
  209. package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
  210. package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
  211. package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
  212. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  213. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
  214. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  215. package/coverage/lcov-report/src/api/routes/index.html +0 -551
  216. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
  217. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  218. package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
  219. package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
  220. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  221. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  222. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  223. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
  224. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  225. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  226. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  227. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
  228. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  229. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  230. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  231. package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
  232. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
  233. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  234. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  235. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  236. package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
  237. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  238. package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
  239. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  240. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  241. package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
  242. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  243. package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
  244. package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
  245. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  246. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  247. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  248. package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
  249. package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
  250. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
  251. package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
  252. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  253. package/coverage/lcov-report/src/app.ts.html +0 -424
  254. package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
  255. package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
  256. package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
  257. package/coverage/lcov-report/src/automations/index.html +0 -191
  258. package/coverage/lcov-report/src/automations/index.ts.html +0 -163
  259. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  260. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  261. package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
  262. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  263. package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
  264. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  265. package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
  266. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
  267. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
  268. package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
  269. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  270. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
  271. package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
  272. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
  273. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
  274. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
  275. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
  276. package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
  277. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
  278. package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
  279. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
  280. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  281. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  282. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  283. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
  284. package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
  285. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  286. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
  287. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
  288. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
  289. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
  290. package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
  291. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  292. package/coverage/lcov-report/src/constants/index.html +0 -146
  293. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  294. package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
  295. package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
  296. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  297. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  298. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  299. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  300. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  301. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  302. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  303. package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
  304. package/coverage/lcov-report/src/db/index.html +0 -176
  305. package/coverage/lcov-report/src/db/index.ts.html +0 -133
  306. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
  307. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  308. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  309. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
  310. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
  311. package/coverage/lcov-report/src/db/newid.ts.html +0 -100
  312. package/coverage/lcov-report/src/db/utils.ts.html +0 -913
  313. package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
  314. package/coverage/lcov-report/src/definitions/index.html +0 -116
  315. package/coverage/lcov-report/src/environment.ts.html +0 -472
  316. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
  317. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
  318. package/coverage/lcov-report/src/events/index.html +0 -161
  319. package/coverage/lcov-report/src/events/index.ts.html +0 -100
  320. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  321. package/coverage/lcov-report/src/index.html +0 -191
  322. package/coverage/lcov-report/src/index.ts.html +0 -133
  323. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  324. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  325. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  326. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
  327. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
  328. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  329. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  330. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
  331. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  332. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
  333. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  334. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  335. package/coverage/lcov-report/src/integrations/index.html +0 -371
  336. package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
  337. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  338. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
  339. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
  340. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  341. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  342. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  343. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
  344. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  345. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
  346. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  347. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  348. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
  349. package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
  350. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
  351. package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
  352. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
  353. package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
  354. package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
  355. package/coverage/lcov-report/src/middleware/index.html +0 -236
  356. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
  357. package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
  358. package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
  359. package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
  360. package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
  361. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
  362. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  363. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  364. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  365. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  366. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  367. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  368. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  369. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  370. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  371. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
  372. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  373. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  374. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  375. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  376. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  377. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  378. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  379. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  380. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  381. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  382. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  383. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  384. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  385. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  386. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  387. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  388. package/coverage/lcov-report/src/migrations/index.html +0 -116
  389. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  390. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  391. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  392. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  393. package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
  394. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
  395. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
  396. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
  397. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  398. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  399. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  400. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  401. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  402. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
  403. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  404. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  405. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  406. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
  407. package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
  408. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
  409. package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
  410. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
  411. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
  412. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
  413. package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
  414. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
  415. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
  416. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  417. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
  418. package/coverage/lcov-report/src/sdk/index.html +0 -116
  419. package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
  420. package/coverage/lcov-report/src/sdk/users/index.html +0 -131
  421. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
  422. package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
  423. package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
  424. package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
  425. package/coverage/lcov-report/src/startup.ts.html +0 -484
  426. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
  427. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  428. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  429. package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
  430. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
  431. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
  432. package/coverage/lcov-report/src/threads/index.html +0 -161
  433. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  434. package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
  435. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  436. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
  437. package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
  438. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  439. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  440. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
  441. package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
  442. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
  443. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
  444. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  445. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  446. package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
  447. package/coverage/lcov-report/src/utilities/index.html +0 -251
  448. package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
  449. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  450. package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
  451. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  452. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  453. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
  454. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  455. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
  456. package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
  457. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
  458. package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
  459. package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
  460. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
  461. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
  462. package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
  463. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
  464. package/coverage/lcov-report/src/watch.ts.html +0 -196
  465. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  466. package/coverage/lcov.info +0 -21770
  467. package/dist/api/routes/public/tests/utils.js +0 -33
@@ -1,4 +1,4 @@
1
- import { mocks } from "@budibase/backend-core/tests"
1
+ import { generator, mocks, structures } from "@budibase/backend-core/tests"
2
2
 
3
3
  // init the licensing mock
4
4
  import * as pro from "@budibase/pro"
@@ -10,6 +10,7 @@ mocks.licenses.useUnlimited()
10
10
  import { init as dbInit } from "../../db"
11
11
  dbInit()
12
12
  import env from "../../environment"
13
+ import { env as coreEnv } from "@budibase/backend-core"
13
14
  import {
14
15
  basicTable,
15
16
  basicRow,
@@ -38,17 +39,27 @@ import { cleanup } from "../../utilities/fileSystem"
38
39
  import newid from "../../db/newid"
39
40
  import { generateUserMetadataID } from "../../db/utils"
40
41
  import { startup } from "../../startup"
41
- const supertest = require("supertest")
42
-
43
- const GLOBAL_USER_ID = "us_uuid1"
44
- const EMAIL = "babs@babs.com"
45
- const FIRSTNAME = "Barbara"
46
- const LASTNAME = "Barbington"
47
- const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
42
+ import supertest from "supertest"
43
+ import {
44
+ AuthToken,
45
+ Database,
46
+ Datasource,
47
+ Row,
48
+ SourceName,
49
+ Table,
50
+ } from "@budibase/types"
51
+
52
+ type DefaultUserValues = {
53
+ globalUserId: string
54
+ email: string
55
+ firstName: string
56
+ lastName: string
57
+ csrfToken: string
58
+ }
48
59
 
49
60
  class TestConfiguration {
50
61
  server: any
51
- request: any
62
+ request: supertest.SuperTest<supertest.Test> | undefined
52
63
  started: boolean
53
64
  appId: string | null
54
65
  allApps: any[]
@@ -62,6 +73,8 @@ class TestConfiguration {
62
73
  linkedTable: any
63
74
  automation: any
64
75
  datasource: any
76
+ tenantId: string | null
77
+ defaultUserValues: DefaultUserValues
65
78
 
66
79
  constructor(openServer = true) {
67
80
  if (openServer) {
@@ -76,6 +89,18 @@ class TestConfiguration {
76
89
  }
77
90
  this.appId = null
78
91
  this.allApps = []
92
+ this.tenantId = null
93
+ this.defaultUserValues = this.populateDefaultUserValues()
94
+ }
95
+
96
+ populateDefaultUserValues(): DefaultUserValues {
97
+ return {
98
+ globalUserId: `us_${newid()}`,
99
+ email: generator.email(),
100
+ firstName: generator.first(),
101
+ lastName: generator.last(),
102
+ csrfToken: generator.hash(),
103
+ }
79
104
  }
80
105
 
81
106
  getRequest() {
@@ -100,10 +125,10 @@ class TestConfiguration {
100
125
 
101
126
  getUserDetails() {
102
127
  return {
103
- globalId: GLOBAL_USER_ID,
104
- email: EMAIL,
105
- firstName: FIRSTNAME,
106
- lastName: LASTNAME,
128
+ globalId: this.defaultUserValues.globalUserId,
129
+ email: this.defaultUserValues.email,
130
+ firstName: this.defaultUserValues.firstName,
131
+ lastName: this.defaultUserValues.lastName,
107
132
  }
108
133
  }
109
134
 
@@ -111,7 +136,9 @@ class TestConfiguration {
111
136
  if (!appId) {
112
137
  appId = this.appId
113
138
  }
114
- return tenancy.doInTenant(TENANT_ID, () => {
139
+
140
+ const tenant = this.getTenantId()
141
+ return tenancy.doInTenant(tenant, () => {
115
142
  // check if already in a context
116
143
  if (context.getAppId() == null && appId !== null) {
117
144
  return context.doInAppContext(appId, async () => {
@@ -127,6 +154,11 @@ class TestConfiguration {
127
154
 
128
155
  // use a new id as the name to avoid name collisions
129
156
  async init(appName = newid()) {
157
+ this.defaultUserValues = this.populateDefaultUserValues()
158
+ if (context.isMultiTenant()) {
159
+ this.tenantId = structures.tenant.id()
160
+ }
161
+
130
162
  if (!this.started) {
131
163
  await startup()
132
164
  }
@@ -149,9 +181,30 @@ class TestConfiguration {
149
181
  }
150
182
  }
151
183
 
184
+ // MODES
185
+ #setMultiTenancy = (value: boolean) => {
186
+ env._set("MULTI_TENANCY", value)
187
+ coreEnv._set("MULTI_TENANCY", value)
188
+ }
189
+
190
+ #setSelfHosted = (value: boolean) => {
191
+ env._set("SELF_HOSTED", value)
192
+ coreEnv._set("SELF_HOSTED", value)
193
+ }
194
+
195
+ modeCloud = () => {
196
+ this.#setSelfHosted(false)
197
+ this.#setMultiTenancy(true)
198
+ }
199
+
200
+ modeSelf = () => {
201
+ this.#setSelfHosted(true)
202
+ this.#setMultiTenancy(false)
203
+ }
204
+
152
205
  // UTILS
153
206
 
154
- async _req(body: any, params: any, controlFunc: any) {
207
+ _req(body: any, params: any, controlFunc: any) {
155
208
  // create a fake request ctx
156
209
  const request: any = {}
157
210
  const appId = this.appId
@@ -159,7 +212,7 @@ class TestConfiguration {
159
212
  // fake cookies, we don't need them
160
213
  request.cookies = { set: () => {}, get: () => {} }
161
214
  request.config = { jwtSecret: env.JWT_SECRET }
162
- request.user = { appId, tenantId: TENANT_ID }
215
+ request.user = { appId, tenantId: this.getTenantId() }
163
216
  request.query = {}
164
217
  request.request = {
165
218
  body,
@@ -175,61 +228,70 @@ class TestConfiguration {
175
228
 
176
229
  // USER / AUTH
177
230
  async globalUser({
178
- id = GLOBAL_USER_ID,
179
- firstName = FIRSTNAME,
180
- lastName = LASTNAME,
231
+ id = this.defaultUserValues.globalUserId,
232
+ firstName = this.defaultUserValues.firstName,
233
+ lastName = this.defaultUserValues.lastName,
181
234
  builder = true,
182
235
  admin = false,
183
- email = EMAIL,
236
+ email = this.defaultUserValues.email,
184
237
  roles,
185
238
  }: any = {}) {
186
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) => {
187
- let existing
188
- try {
189
- existing = await db.get(id)
190
- } catch (err) {
191
- existing = { email }
192
- }
193
- const user = {
194
- _id: id,
195
- ...existing,
196
- roles: roles || {},
197
- tenantId: TENANT_ID,
198
- firstName,
199
- lastName,
200
- }
201
- await sessions.createASession(id, {
202
- sessionId: "sessionid",
203
- tenantId: TENANT_ID,
204
- csrfToken: CSRF_TOKEN,
205
- })
206
- if (builder) {
207
- user.builder = { global: true }
208
- } else {
209
- user.builder = { global: false }
210
- }
211
- if (admin) {
212
- user.admin = { global: true }
213
- } else {
214
- user.admin = { global: false }
215
- }
216
- const resp = await db.put(user)
217
- return {
218
- _rev: resp._rev,
219
- ...user,
220
- }
239
+ const db = tenancy.getTenantDB(this.getTenantId())
240
+ let existing
241
+ try {
242
+ existing = await db.get(id)
243
+ } catch (err) {
244
+ existing = { email }
245
+ }
246
+ const user = {
247
+ _id: id,
248
+ ...existing,
249
+ roles: roles || {},
250
+ tenantId: this.getTenantId(),
251
+ firstName,
252
+ lastName,
253
+ }
254
+ await sessions.createASession(id, {
255
+ sessionId: "sessionid",
256
+ tenantId: this.getTenantId(),
257
+ csrfToken: this.defaultUserValues.csrfToken,
221
258
  })
259
+ if (builder) {
260
+ user.builder = { global: true }
261
+ } else {
262
+ user.builder = { global: false }
263
+ }
264
+ if (admin) {
265
+ user.admin = { global: true }
266
+ } else {
267
+ user.admin = { global: false }
268
+ }
269
+ const resp = await db.put(user)
270
+ return {
271
+ _rev: resp.rev,
272
+ ...user,
273
+ }
222
274
  }
223
275
 
224
276
  async createUser(
225
- id = null,
226
- firstName = FIRSTNAME,
227
- lastName = LASTNAME,
228
- email = EMAIL,
229
- builder = true,
230
- admin = false,
231
- roles = {}
277
+ user: {
278
+ id?: string
279
+ firstName?: string
280
+ lastName?: string
281
+ email?: string
282
+ builder?: boolean
283
+ admin?: boolean
284
+ roles?: any
285
+ } = {}
232
286
  ) {
287
+ let { id, firstName, lastName, email, builder, admin, roles } = user
288
+ firstName = firstName || this.defaultUserValues.firstName
289
+ lastName = lastName || this.defaultUserValues.lastName
290
+ email = email || this.defaultUserValues.email
291
+ roles = roles || {}
292
+ if (builder == null) {
293
+ builder = true
294
+ }
233
295
  const globalId = !id ? `us_${Math.random()}` : `us_${id}`
234
296
  const resp = await this.globalUser({
235
297
  id: globalId,
@@ -264,13 +326,13 @@ class TestConfiguration {
264
326
  }
265
327
  await sessions.createASession(userId, {
266
328
  sessionId: "sessionid",
267
- tenantId: TENANT_ID,
329
+ tenantId: this.getTenantId(),
268
330
  })
269
331
  // have to fake this
270
332
  const authObj = {
271
333
  userId,
272
334
  sessionId: "sessionid",
273
- tenantId: TENANT_ID,
335
+ tenantId: this.getTenantId(),
274
336
  }
275
337
  const app = {
276
338
  roleId: roleId,
@@ -293,10 +355,11 @@ class TestConfiguration {
293
355
  }
294
356
 
295
357
  defaultHeaders(extras = {}) {
296
- const authObj = {
297
- userId: GLOBAL_USER_ID,
358
+ const tenantId = this.getTenantId()
359
+ const authObj: AuthToken = {
360
+ userId: this.defaultUserValues.globalUserId,
298
361
  sessionId: "sessionid",
299
- tenantId: TENANT_ID,
362
+ tenantId,
300
363
  }
301
364
  const app = {
302
365
  roleId: roles.BUILTIN_ROLE_IDS.ADMIN,
@@ -310,15 +373,20 @@ class TestConfiguration {
310
373
  `${constants.Cookie.Auth}=${authToken}`,
311
374
  `${constants.Cookie.CurrentApp}=${appToken}`,
312
375
  ],
313
- [constants.Header.CSRF_TOKEN]: CSRF_TOKEN,
376
+ [constants.Header.CSRF_TOKEN]: this.defaultUserValues.csrfToken,
314
377
  ...extras,
315
378
  }
379
+
316
380
  if (this.appId) {
317
381
  headers[constants.Header.APP_ID] = this.appId
318
382
  }
319
383
  return headers
320
384
  }
321
385
 
386
+ getTenantId() {
387
+ return this.tenantId || TENANT_ID
388
+ }
389
+
322
390
  publicHeaders({ prodApp = true } = {}) {
323
391
  const appId = prodApp ? this.prodAppId : this.appId
324
392
 
@@ -328,11 +396,16 @@ class TestConfiguration {
328
396
  if (appId) {
329
397
  headers[constants.Header.APP_ID] = appId
330
398
  }
399
+
400
+ if (this.tenantId) {
401
+ headers[constants.Header.TENANT_ID] = this.tenantId
402
+ }
403
+
331
404
  return headers
332
405
  }
333
406
 
334
407
  async roleHeaders({
335
- email = EMAIL,
408
+ email = this.defaultUserValues.email,
336
409
  roleId = roles.BUILTIN_ROLE_IDS.ADMIN,
337
410
  builder = false,
338
411
  prodApp = true,
@@ -342,21 +415,20 @@ class TestConfiguration {
342
415
 
343
416
  // API
344
417
 
345
- async generateApiKey(userId = GLOBAL_USER_ID) {
346
- return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) => {
347
- const id = dbCore.generateDevInfoID(userId)
348
- let devInfo
349
- try {
350
- devInfo = await db.get(id)
351
- } catch (err) {
352
- devInfo = { _id: id, userId }
353
- }
354
- devInfo.apiKey = encryption.encrypt(
355
- `${TENANT_ID}${dbCore.SEPARATOR}${newid()}`
356
- )
357
- await db.put(devInfo)
358
- return devInfo.apiKey
359
- })
418
+ async generateApiKey(userId = this.defaultUserValues.globalUserId) {
419
+ const db = tenancy.getTenantDB(this.getTenantId())
420
+ const id = dbCore.generateDevInfoID(userId)
421
+ let devInfo
422
+ try {
423
+ devInfo = await db.get(id)
424
+ } catch (err) {
425
+ devInfo = { _id: id, userId }
426
+ }
427
+ devInfo.apiKey = encryption.encrypt(
428
+ `${this.getTenantId()}${dbCore.SEPARATOR}${newid()}`
429
+ )
430
+ await db.put(devInfo)
431
+ return devInfo.apiKey
360
432
  }
361
433
 
362
434
  // APP
@@ -408,13 +480,13 @@ class TestConfiguration {
408
480
 
409
481
  // TABLE
410
482
 
411
- async updateTable(config?: any) {
483
+ async updateTable(config?: any): Promise<Table> {
412
484
  config = config || basicTable()
413
485
  this.table = await this._req(config, null, controllers.table.save)
414
486
  return this.table
415
487
  }
416
488
 
417
- async createTable(config?: any) {
489
+ async createTable(config?: Table) {
418
490
  if (config != null && config._id) {
419
491
  delete config._id
420
492
  }
@@ -458,7 +530,7 @@ class TestConfiguration {
458
530
 
459
531
  // ROW
460
532
 
461
- async createRow(config: any = null) {
533
+ async createRow(config?: Row): Promise<Row> {
462
534
  if (!this.table) {
463
535
  throw "Test requires table to be configured."
464
536
  }
@@ -467,7 +539,7 @@ class TestConfiguration {
467
539
  return this._req(config, { tableId }, controllers.row.save)
468
540
  }
469
541
 
470
- async getRow(tableId: string, rowId: string) {
542
+ async getRow(tableId: string, rowId: string): Promise<Row> {
471
543
  return this._req(null, { tableId, rowId }, controllers.row.find)
472
544
  }
473
545
 
@@ -549,7 +621,9 @@ class TestConfiguration {
549
621
 
550
622
  // DATASOURCE
551
623
 
552
- async createDatasource(config?: any) {
624
+ async createDatasource(config?: {
625
+ datasource: Datasource
626
+ }): Promise<Datasource> {
553
627
  config = config || basicDatasource()
554
628
  const response = await this._req(config, null, controllers.datasource.save)
555
629
  this.datasource = response.datasource
@@ -570,7 +644,7 @@ class TestConfiguration {
570
644
  return this.createDatasource({
571
645
  datasource: {
572
646
  ...basicDatasource().datasource,
573
- source: "REST",
647
+ source: SourceName.REST,
574
648
  config: cfg || {},
575
649
  },
576
650
  })
@@ -579,7 +653,7 @@ class TestConfiguration {
579
653
  async dynamicVariableDatasource() {
580
654
  let datasource = await this.restDatasource()
581
655
  const basedOnQuery = await this.createQuery({
582
- ...basicQuery(datasource._id),
656
+ ...basicQuery(datasource._id!),
583
657
  fields: {
584
658
  path: "www.google.com",
585
659
  },
@@ -607,7 +681,7 @@ class TestConfiguration {
607
681
  datasource: any,
608
682
  fields: any,
609
683
  params: any,
610
- verb: string
684
+ verb?: string
611
685
  ) {
612
686
  return request
613
687
  .post(`/api/queries/preview`)
@@ -7,6 +7,8 @@ import {
7
7
  Automation,
8
8
  AutomationActionStepId,
9
9
  AutomationTriggerStepId,
10
+ Datasource,
11
+ SourceName,
10
12
  } from "@budibase/types"
11
13
 
12
14
  const { v4: uuidv4 } = require("uuid")
@@ -207,12 +209,12 @@ export function basicRole() {
207
209
  }
208
210
  }
209
211
 
210
- export function basicDatasource() {
212
+ export function basicDatasource(): { datasource: Datasource } {
211
213
  return {
212
214
  datasource: {
213
215
  type: "datasource",
214
216
  name: "Test",
215
- source: "POSTGRES",
217
+ source: SourceName.POSTGRES,
216
218
  config: {},
217
219
  },
218
220
  }
@@ -255,3 +257,15 @@ export function basicWebhook(automationId: string) {
255
257
  },
256
258
  }
257
259
  }
260
+
261
+ export function basicEnvironmentVariable(
262
+ name: string,
263
+ prod: string,
264
+ dev?: string
265
+ ) {
266
+ return {
267
+ name,
268
+ production: prod,
269
+ development: dev || prod,
270
+ }
271
+ }
@@ -21,6 +21,8 @@ export async function shutdown() {
21
21
  if (devAppClient) await devAppClient.finish()
22
22
  if (debounceClient) await debounceClient.finish()
23
23
  if (flagClient) await flagClient.finish()
24
+ // shutdown core clients
25
+ await redis.clients.shutdown()
24
26
  console.log("Redis shutdown")
25
27
  }
26
28
 
@@ -0,0 +1,18 @@
1
+ export async function retry<T extends (...arg0: any[]) => any>(
2
+ fn: T,
3
+ maxTry: number = 5,
4
+ retryCount = 1
5
+ ): Promise<Awaited<ReturnType<T>>> {
6
+ const currRetry = typeof retryCount === "number" ? retryCount : 1
7
+ try {
8
+ const result = await fn()
9
+ return result
10
+ } catch (e) {
11
+ console.log(`Retry ${currRetry} failed.`)
12
+ if (currRetry > maxTry) {
13
+ console.log(`All ${maxTry} retry attempts exhausted`)
14
+ throw e
15
+ }
16
+ return retry(fn, maxTry, currRetry + 1)
17
+ }
18
+ }
@@ -20,6 +20,7 @@
20
20
  "dist",
21
21
  "src/tests",
22
22
  "src/api/routes/tests/utilities",
23
+ "src/api/routes/public/tests/utils.ts",
23
24
  "src/automations/tests/utilities",
24
25
  "**/*.spec.ts",
25
26
  "**/*.spec.js"