@budibase/server 2.3.17 → 2.3.18-alpha.0

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 (463) hide show
  1. package/__mocks__/aws-sdk.ts +1 -1
  2. package/builder/assets/{index.4488f38d.css → index.7e76c039.css} +1 -1
  3. package/builder/assets/{index.06e34d35.js → index.e7d5703a.js} +361 -361
  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 +11 -7
  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/retry.js +30 -0
  23. package/jest-testcontainers-config.js +8 -0
  24. package/jest.config.ts +28 -11
  25. package/package.json +12 -8
  26. package/scripts/load/create-many-apps.js +24 -0
  27. package/scripts/load/create-many-rows.js +30 -0
  28. package/scripts/load/utils.js +66 -0
  29. package/specs/openapi.json +6 -6
  30. package/specs/openapi.yaml +3 -3
  31. package/src/api/controllers/query/import/tests/index.spec.js +1 -1
  32. package/src/api/controllers/query/index.ts +2 -0
  33. package/src/api/controllers/row/ExternalRequest.ts +6 -2
  34. package/src/api/controllers/row/external.ts +13 -1
  35. package/src/api/controllers/row/staticFormula.ts +7 -1
  36. package/src/api/controllers/table/external.ts +3 -2
  37. package/src/api/index.ts +3 -22
  38. package/src/api/routes/public/applications.ts +0 -1
  39. package/src/api/routes/public/tests/compare.spec.js +1 -1
  40. package/src/api/routes/public/tests/users.spec.js +1 -1
  41. package/src/api/routes/public/tests/utils.ts +25 -8
  42. package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
  43. package/src/api/routes/tests/analytics.spec.js +4 -1
  44. package/src/api/routes/tests/apikeys.spec.js +1 -1
  45. package/src/api/routes/tests/application.spec.ts +20 -6
  46. package/src/api/routes/tests/auth.spec.js +2 -2
  47. package/src/api/routes/tests/automation.spec.js +6 -2
  48. package/src/api/routes/tests/backup.spec.ts +4 -14
  49. package/src/api/routes/tests/{cloud.spec.ts → cloud.seq.spec.ts} +11 -15
  50. package/src/api/routes/tests/component.spec.js +1 -1
  51. package/src/api/routes/tests/datasource.spec.ts +20 -3
  52. package/src/api/routes/tests/dev.spec.js +1 -1
  53. package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
  54. package/src/api/routes/tests/integration.spec.js +1 -1
  55. package/src/api/routes/tests/layout.spec.js +1 -1
  56. package/src/api/routes/tests/metadata.spec.js +1 -1
  57. package/src/api/routes/tests/misc.spec.js +1 -1
  58. package/src/api/routes/tests/permissions.spec.js +4 -1
  59. package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
  60. package/src/api/routes/tests/role.spec.js +6 -1
  61. package/src/api/routes/tests/routing.spec.js +1 -1
  62. package/src/api/routes/tests/row.spec.js +11 -3
  63. package/src/api/routes/tests/screen.spec.js +1 -1
  64. package/src/api/routes/tests/static.spec.js +2 -1
  65. package/src/api/routes/tests/table.spec.js +1 -1
  66. package/src/api/routes/tests/templates.spec.js +1 -1
  67. package/src/api/routes/tests/user.spec.js +12 -12
  68. package/src/api/routes/tests/utilities/TestFunctions.ts +25 -2
  69. package/src/api/routes/tests/utilities/index.ts +5 -3
  70. package/src/api/routes/tests/view.spec.js +4 -1
  71. package/src/api/routes/tests/webhook.spec.js +11 -2
  72. package/src/app.ts +10 -1
  73. package/src/automations/tests/automation.spec.js +4 -4
  74. package/src/automations/tests/bash.spec.js +1 -1
  75. package/src/automations/tests/discord.spec.js +1 -1
  76. package/src/automations/tests/executeQuery.spec.js +2 -3
  77. package/src/automations/tests/executeScript.spec.js +1 -1
  78. package/src/automations/tests/outgoingWebhook.spec.js +1 -1
  79. package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
  80. package/src/automations/tests/serverLog.spec.js +1 -1
  81. package/src/automations/tests/updateRow.spec.js +1 -1
  82. package/src/automations/tests/zapier.spec.js +1 -1
  83. package/src/constants/index.ts +1 -23
  84. package/src/db/defaultData/datasource_bb_default.ts +6 -10
  85. package/src/db/linkedRows/LinkController.ts +2 -1
  86. package/src/db/tests/linkController.spec.js +4 -1
  87. package/src/db/tests/linkTests.spec.js +1 -1
  88. package/src/ddApm.ts +7 -0
  89. package/src/elasticApm.ts +10 -0
  90. package/src/integration-test/postgres.spec.ts +762 -0
  91. package/src/integrations/base/sql.ts +15 -5
  92. package/src/integrations/oracle.ts +1 -1
  93. package/src/integrations/tests/couchdb.spec.ts +0 -2
  94. package/src/migrations/functions/tests/appUrls.spec.js +1 -1
  95. package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
  96. package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
  97. package/src/migrations/tests/index.spec.ts +13 -20
  98. package/src/sdk/app/backups/exports.ts +8 -2
  99. package/src/sdk/app/datasources/datasources.ts +3 -0
  100. package/src/tests/jestEnv.ts +8 -11
  101. package/src/tests/jestSetup.ts +9 -7
  102. package/src/tests/logging.ts +34 -0
  103. package/src/tests/utilities/TestConfiguration.ts +166 -92
  104. package/src/tests/utilities/structures.ts +16 -2
  105. package/src/utilities/retry.ts +18 -0
  106. package/tsconfig.build.json +1 -0
  107. package/coverage/clover.xml +0 -11771
  108. package/coverage/coverage-final.json +0 -284
  109. package/coverage/lcov-report/base.css +0 -224
  110. package/coverage/lcov-report/block-navigation.js +0 -87
  111. package/coverage/lcov-report/favicon.png +0 -0
  112. package/coverage/lcov-report/index.html +0 -1031
  113. package/coverage/lcov-report/prettify.css +0 -1
  114. package/coverage/lcov-report/prettify.js +0 -2
  115. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  116. package/coverage/lcov-report/sorter.js +0 -196
  117. package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
  118. package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
  119. package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
  120. package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
  121. package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
  122. package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
  123. package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
  124. package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
  125. package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
  126. package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
  127. package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
  128. package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
  129. package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
  130. package/coverage/lcov-report/src/api/controllers/index.html +0 -431
  131. package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
  132. package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
  133. package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
  134. package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
  135. package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
  136. package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
  137. package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
  138. package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
  139. package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
  140. package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
  141. package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
  142. package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
  143. package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
  144. package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
  145. package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
  146. package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
  147. package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
  148. package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
  149. package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
  150. package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
  151. package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
  152. package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
  153. package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
  154. package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
  155. package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
  156. package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
  157. package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
  158. package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
  159. package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
  160. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
  161. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
  162. package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
  163. package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
  164. package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
  165. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
  166. package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
  167. package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
  168. package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
  169. package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
  170. package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
  171. package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
  172. package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
  173. package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
  174. package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
  175. package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
  176. package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
  177. package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
  178. package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -577
  179. package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
  180. package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
  181. package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
  182. package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
  183. package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
  184. package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
  185. package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
  186. package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
  187. package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
  188. package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
  189. package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
  190. package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
  191. package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
  192. package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
  193. package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
  194. package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
  195. package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
  196. package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
  197. package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
  198. package/coverage/lcov-report/src/api/index.html +0 -116
  199. package/coverage/lcov-report/src/api/index.ts.html +0 -352
  200. package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
  201. package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
  202. package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
  203. package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
  204. package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
  205. package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
  206. package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
  207. package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
  208. package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
  209. package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
  210. package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
  211. package/coverage/lcov-report/src/api/routes/index.html +0 -551
  212. package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
  213. package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
  214. package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
  215. package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
  216. package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
  217. package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
  218. package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
  219. package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
  220. package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
  221. package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
  222. package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
  223. package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
  224. package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
  225. package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
  226. package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
  227. package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
  228. package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
  229. package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
  230. package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
  231. package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
  232. package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
  233. package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
  234. package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
  235. package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
  236. package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
  237. package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
  238. package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
  239. package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
  240. package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
  241. package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
  242. package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
  243. package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
  244. package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
  245. package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
  246. package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
  247. package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
  248. package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
  249. package/coverage/lcov-report/src/app.ts.html +0 -424
  250. package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
  251. package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
  252. package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
  253. package/coverage/lcov-report/src/automations/index.html +0 -191
  254. package/coverage/lcov-report/src/automations/index.ts.html +0 -163
  255. package/coverage/lcov-report/src/automations/logging/index.html +0 -116
  256. package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
  257. package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
  258. package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
  259. package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
  260. package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
  261. package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
  262. package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
  263. package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
  264. package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
  265. package/coverage/lcov-report/src/automations/steps/index.html +0 -371
  266. package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
  267. package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
  268. package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
  269. package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
  270. package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
  271. package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
  272. package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
  273. package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
  274. package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
  275. package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
  276. package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
  277. package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
  278. package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
  279. package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
  280. package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
  281. package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
  282. package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
  283. package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
  284. package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
  285. package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
  286. package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
  287. package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
  288. package/coverage/lcov-report/src/constants/index.html +0 -146
  289. package/coverage/lcov-report/src/constants/index.ts.html +0 -697
  290. package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
  291. package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
  292. package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
  293. package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
  294. package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
  295. package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
  296. package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
  297. package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
  298. package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
  299. package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
  300. package/coverage/lcov-report/src/db/index.html +0 -176
  301. package/coverage/lcov-report/src/db/index.ts.html +0 -133
  302. package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
  303. package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
  304. package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
  305. package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
  306. package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
  307. package/coverage/lcov-report/src/db/newid.ts.html +0 -100
  308. package/coverage/lcov-report/src/db/utils.ts.html +0 -913
  309. package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
  310. package/coverage/lcov-report/src/definitions/index.html +0 -116
  311. package/coverage/lcov-report/src/environment.ts.html +0 -472
  312. package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
  313. package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
  314. package/coverage/lcov-report/src/events/index.html +0 -161
  315. package/coverage/lcov-report/src/events/index.ts.html +0 -100
  316. package/coverage/lcov-report/src/events/utils.ts.html +0 -319
  317. package/coverage/lcov-report/src/index.html +0 -191
  318. package/coverage/lcov-report/src/index.ts.html +0 -133
  319. package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
  320. package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
  321. package/coverage/lcov-report/src/integrations/base/index.html +0 -161
  322. package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
  323. package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
  324. package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
  325. package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
  326. package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
  327. package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
  328. package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
  329. package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
  330. package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
  331. package/coverage/lcov-report/src/integrations/index.html +0 -371
  332. package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
  333. package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
  334. package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
  335. package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
  336. package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
  337. package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
  338. package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
  339. package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
  340. package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
  341. package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
  342. package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
  343. package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
  344. package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
  345. package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
  346. package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
  347. package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
  348. package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
  349. package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
  350. package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
  351. package/coverage/lcov-report/src/middleware/index.html +0 -236
  352. package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
  353. package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
  354. package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
  355. package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
  356. package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
  357. package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
  358. package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
  359. package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
  360. package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
  361. package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
  362. package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
  363. package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
  364. package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
  365. package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
  366. package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
  367. package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
  368. package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
  369. package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
  370. package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
  371. package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
  372. package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
  373. package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
  374. package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
  375. package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
  376. package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
  377. package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
  378. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
  379. package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
  380. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
  381. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
  382. package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
  383. package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
  384. package/coverage/lcov-report/src/migrations/index.html +0 -116
  385. package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
  386. package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
  387. package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
  388. package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
  389. package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
  390. package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
  391. package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
  392. package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
  393. package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
  394. package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
  395. package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
  396. package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
  397. package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
  398. package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
  399. package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
  400. package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
  401. package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
  402. package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
  403. package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
  404. package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
  405. package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
  406. package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
  407. package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
  408. package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
  409. package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
  410. package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
  411. package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
  412. package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
  413. package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
  414. package/coverage/lcov-report/src/sdk/index.html +0 -116
  415. package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
  416. package/coverage/lcov-report/src/sdk/users/index.html +0 -131
  417. package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
  418. package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
  419. package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
  420. package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
  421. package/coverage/lcov-report/src/startup.ts.html +0 -484
  422. package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
  423. package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
  424. package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
  425. package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
  426. package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
  427. package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
  428. package/coverage/lcov-report/src/threads/index.html +0 -161
  429. package/coverage/lcov-report/src/threads/index.ts.html +0 -418
  430. package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
  431. package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
  432. package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
  433. package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
  434. package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
  435. package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
  436. package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
  437. package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
  438. package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
  439. package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
  440. package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
  441. package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
  442. package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
  443. package/coverage/lcov-report/src/utilities/index.html +0 -251
  444. package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
  445. package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
  446. package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
  447. package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
  448. package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
  449. package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
  450. package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
  451. package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
  452. package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
  453. package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
  454. package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
  455. package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
  456. package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
  457. package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
  458. package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
  459. package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
  460. package/coverage/lcov-report/src/watch.ts.html +0 -196
  461. package/coverage/lcov-report/src/websocket.ts.html +0 -163
  462. package/coverage/lcov.info +0 -21770
  463. 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
+ }
@@ -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"