@budibase/server 1.0.49-alpha.6 → 1.0.49
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.
- package/__mocks__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +5 -4
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +1 -2
- package/__mocks__/pg.ts +5 -3
- package/builder/assets/{index.1b905242.js → index.2c37968e.js} +231 -234
- package/builder/assets/index.39e01193.css +1 -0
- package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
- package/builder/index.html +3 -3
- package/coverage/clover.xml +2816 -3119
- package/coverage/coverage-final.json +101 -106
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +152 -257
- package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
- package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
- package/coverage/lcov-report/api/controllers/component.js.html +16 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
- package/coverage/lcov-report/api/controllers/index.html +76 -76
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
- package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +35 -38
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
- package/coverage/lcov-report/api/controllers/role.js.html +16 -16
- package/coverage/lcov-report/api/controllers/routing.js.html +10 -7
- package/coverage/lcov-report/api/controllers/row/external.js.html +27 -21
- package/coverage/lcov-report/api/controllers/row/index.html +34 -49
- package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
- package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
- package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
- package/coverage/lcov-report/api/controllers/table/index.html +43 -58
- package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
- package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
- package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +50 -47
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
- package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +8 -8
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
- package/coverage/lcov-report/api/routes/index.html +18 -18
- package/coverage/lcov-report/api/routes/index.js.html +3 -3
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +2 -17
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
- package/coverage/lcov-report/automations/steps/index.html +13 -13
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +55 -61
- package/coverage/lcov-report/automations/utils.js.html +42 -54
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +26 -53
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -87
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +5 -5
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +120 -135
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +65 -173
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
- package/coverage/lcov-report/middleware/index.html +38 -38
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +24 -30
- package/coverage/lcov-report/threads/index.html +26 -26
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +26 -62
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +49 -58
- package/coverage/lcov-report/utilities/index.html +37 -37
- package/coverage/lcov-report/utilities/index.js.html +73 -43
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
- package/coverage/lcov.info +4423 -5022
- package/dist/api/controllers/application.js +60 -90
- package/dist/api/controllers/auth.js +5 -8
- package/dist/api/controllers/automation.js +19 -14
- package/dist/api/controllers/cloud.js +3 -2
- package/dist/api/controllers/component.js +4 -3
- package/dist/api/controllers/datasource.js +10 -20
- package/dist/api/controllers/deploy/Deployment.js +6 -3
- package/dist/api/controllers/deploy/index.js +13 -12
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/hosting.js +30 -0
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +6 -4
- package/dist/api/controllers/query/index.js +10 -11
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +6 -5
- package/dist/api/controllers/row/ExternalRequest.js +63 -76
- package/dist/api/controllers/row/external.js +4 -4
- package/dist/api/controllers/row/internal.js +93 -55
- package/dist/api/controllers/row/internalSearch.js +17 -23
- package/dist/api/controllers/row/utils.js +14 -13
- package/dist/api/controllers/screen.js +7 -5
- package/dist/api/controllers/static/index.js +12 -61
- package/dist/api/controllers/table/external.js +10 -7
- package/dist/api/controllers/table/index.js +13 -16
- package/dist/api/controllers/table/internal.js +16 -22
- package/dist/api/controllers/table/utils.js +35 -62
- package/dist/api/controllers/user.js +20 -18
- package/dist/api/controllers/view/index.js +10 -8
- package/dist/api/controllers/view/utils.js +4 -9
- package/dist/api/controllers/webhook.js +8 -10
- package/dist/api/routes/hosting.js +11 -0
- package/dist/api/routes/index.js +2 -2
- package/dist/api/routes/static.js +1 -2
- package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
- package/dist/app.js +5 -35
- package/dist/automations/automationUtils.js +3 -2
- package/dist/automations/steps/createRow.js +5 -3
- package/dist/automations/steps/deleteRow.js +4 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +25 -27
- package/dist/automations/utils.js +5 -10
- package/dist/constants/index.js +0 -7
- package/dist/db/linkedRows/LinkController.js +7 -3
- package/dist/db/linkedRows/index.js +27 -16
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +10 -9
- package/dist/definitions/datasource.js +0 -1
- package/dist/environment.js +1 -4
- package/dist/integrations/base/sql.js +6 -13
- package/dist/integrations/index.js +0 -3
- package/dist/integrations/utils.js +9 -60
- package/dist/middleware/authorized.js +30 -57
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +37 -41
- package/dist/middleware/usageQuota.js +15 -82
- package/dist/package.json +5 -8
- package/dist/tests/utilities/TestConfiguration.js +50 -80
- package/dist/threads/automation.js +11 -13
- package/dist/threads/query.js +13 -23
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +3 -4
- package/dist/utilities/global.js +12 -15
- package/dist/utilities/index.js +17 -7
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +17 -23
- package/dist/utilities/rowProcessor/utils.js +4 -14
- package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +24 -4
- package/nodemon.json +1 -1
- package/package.json +6 -9
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +50 -85
- package/src/api/controllers/auth.js +5 -8
- package/src/api/controllers/automation.js +23 -13
- package/src/api/controllers/cloud.js +3 -2
- package/src/api/controllers/component.js +4 -3
- package/src/api/controllers/datasource.js +11 -21
- package/src/api/controllers/deploy/Deployment.js +7 -3
- package/src/api/controllers/deploy/index.js +13 -20
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/hosting.js +22 -0
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +9 -4
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +6 -4
- package/src/api/controllers/query/import/tests/index.spec.js +1 -2
- package/src/api/controllers/query/index.js +10 -11
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +6 -5
- package/src/api/controllers/row/ExternalRequest.ts +42 -53
- package/src/api/controllers/row/external.js +6 -4
- package/src/api/controllers/row/internal.js +90 -54
- package/src/api/controllers/row/internalSearch.js +17 -23
- package/src/api/controllers/row/utils.js +18 -13
- package/src/api/controllers/screen.js +7 -5
- package/src/api/controllers/static/index.js +12 -65
- package/src/api/controllers/table/external.js +10 -7
- package/src/api/controllers/table/index.js +28 -20
- package/src/api/controllers/table/internal.js +19 -24
- package/src/api/controllers/table/utils.js +42 -78
- package/src/api/controllers/user.js +20 -19
- package/src/api/controllers/view/index.js +10 -8
- package/src/api/controllers/view/utils.js +4 -9
- package/src/api/controllers/webhook.js +8 -10
- package/src/api/routes/hosting.js +13 -0
- package/src/api/routes/index.js +2 -2
- package/src/api/routes/static.js +0 -5
- package/src/api/routes/tests/application.spec.js +2 -2
- package/src/api/routes/tests/auth.spec.js +2 -1
- package/src/api/routes/tests/automation.spec.js +0 -1
- package/src/api/routes/tests/hosting.spec.js +36 -0
- package/src/api/routes/tests/misc.spec.js +1 -0
- package/src/api/routes/tests/routing.spec.js +12 -21
- package/src/api/routes/tests/row.spec.js +4 -7
- package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
- package/src/app.ts +5 -18
- package/src/automations/automationUtils.js +3 -2
- package/src/automations/steps/createRow.js +5 -2
- package/src/automations/steps/deleteRow.js +4 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +31 -33
- package/src/automations/utils.js +5 -9
- package/src/constants/index.js +0 -9
- package/src/db/linkedRows/LinkController.js +7 -3
- package/src/db/linkedRows/index.js +31 -16
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +1 -0
- package/src/db/tests/linkTests.spec.js +6 -5
- package/src/db/views/staticViews.js +10 -8
- package/src/definitions/common.ts +0 -3
- package/src/definitions/datasource.ts +0 -3
- package/src/environment.js +1 -4
- package/src/integrations/base/sql.ts +7 -14
- package/src/integrations/index.ts +0 -3
- package/src/integrations/tests/sql.spec.js +0 -16
- package/src/integrations/utils.ts +12 -75
- package/src/middleware/authorized.js +30 -66
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +46 -50
- package/src/middleware/tests/authorized.spec.js +6 -13
- package/src/middleware/tests/currentapp.spec.js +0 -6
- package/src/middleware/tests/usageQuota.spec.js +24 -18
- package/src/middleware/usageQuota.js +17 -93
- package/src/tests/utilities/TestConfiguration.js +55 -82
- package/src/threads/automation.js +15 -17
- package/src/threads/query.js +14 -26
- package/src/utilities/fileSystem/index.js +3 -4
- package/src/utilities/global.js +12 -15
- package/src/utilities/index.js +17 -7
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +27 -25
- package/src/utilities/rowProcessor/utils.js +7 -23
- package/src/utilities/usageQuota.js +73 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +27 -4
- package/builder/assets/index.83c0944f.css +0 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
- package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
- package/dist/api/controllers/migrations.js +0 -21
- package/dist/api/controllers/row/staticFormula.js +0 -147
- package/dist/api/controllers/table/bulkFormula.js +0 -159
- package/dist/api/routes/migrations.js +0 -9
- package/dist/integrations/googlesheets.js +0 -340
- package/dist/migrations/functions/appUrls.js +0 -46
- package/dist/migrations/functions/quotas1.js +0 -50
- package/dist/migrations/functions/usageQuotas/index.js +0 -20
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -30
- package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
- package/dist/migrations/functions/userEmailViewCasing.js +0 -24
- package/dist/migrations/index.js +0 -62
- package/dist/utilities/usageQuota/rows.js +0 -78
- package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
- package/src/api/controllers/migrations.js +0 -13
- package/src/api/controllers/row/staticFormula.js +0 -156
- package/src/api/controllers/table/bulkFormula.js +0 -173
- package/src/api/routes/migrations.js +0 -14
- package/src/api/routes/tests/static.spec.js +0 -98
- package/src/integrations/googlesheets.ts +0 -353
- package/src/migrations/functions/appUrls.ts +0 -34
- package/src/migrations/functions/quotas1.ts +0 -20
- package/src/migrations/functions/tests/appUrls.spec.js +0 -29
- package/src/migrations/functions/tests/quotas1.spec.js +0 -27
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
- package/src/migrations/functions/usageQuotas/index.ts +0 -8
- package/src/migrations/functions/usageQuotas/syncApps.ts +0 -19
- package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
- package/src/migrations/functions/userEmailViewCasing.ts +0 -13
- package/src/migrations/index.ts +0 -56
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
- package/src/utilities/usageQuota/index.js +0 -93
- package/src/utilities/usageQuota/rows.js +0 -75
- package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
|
@@ -11,9 +11,9 @@ const { generateUserMetadataID, isDevAppID } = require("../db/utils")
|
|
|
11
11
|
const { dbExists } = require("@budibase/backend-core/db")
|
|
12
12
|
const { isUserInAppTenant } = require("@budibase/backend-core/tenancy")
|
|
13
13
|
const { getCachedSelf } = require("../utilities/global")
|
|
14
|
+
const CouchDB = require("../db")
|
|
14
15
|
const env = require("../environment")
|
|
15
16
|
const { isWebhookEndpoint } = require("./utils")
|
|
16
|
-
const { doInAppContext } = require("@budibase/backend-core/context")
|
|
17
17
|
|
|
18
18
|
module.exports = async (ctx, next) => {
|
|
19
19
|
// try to get the appID from the request
|
|
@@ -31,7 +31,7 @@ module.exports = async (ctx, next) => {
|
|
|
31
31
|
// check the app exists referenced in cookie
|
|
32
32
|
if (appCookie) {
|
|
33
33
|
const appId = appCookie.appId
|
|
34
|
-
const exists = await dbExists(appId)
|
|
34
|
+
const exists = await dbExists(CouchDB, appId)
|
|
35
35
|
if (!exists) {
|
|
36
36
|
clearCookie(ctx, Cookies.CurrentApp)
|
|
37
37
|
return next()
|
|
@@ -41,15 +41,13 @@ module.exports = async (ctx, next) => {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// deny access to application preview
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
return ctx.redirect("/")
|
|
52
|
-
}
|
|
44
|
+
if (
|
|
45
|
+
isDevAppID(requestAppId) &&
|
|
46
|
+
!isWebhookEndpoint(ctx) &&
|
|
47
|
+
(!ctx.user || !ctx.user.builder || !ctx.user.builder.global)
|
|
48
|
+
) {
|
|
49
|
+
clearCookie(ctx, Cookies.CurrentApp)
|
|
50
|
+
return ctx.redirect("/")
|
|
53
51
|
}
|
|
54
52
|
|
|
55
53
|
let appId,
|
|
@@ -70,46 +68,44 @@ module.exports = async (ctx, next) => {
|
|
|
70
68
|
return next()
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
71
|
+
let noCookieSet = false
|
|
72
|
+
// if the user not in the right tenant then make sure they have no permissions
|
|
73
|
+
// need to judge this only based on the request app ID,
|
|
74
|
+
if (
|
|
75
|
+
env.MULTI_TENANCY &&
|
|
76
|
+
ctx.user &&
|
|
77
|
+
requestAppId &&
|
|
78
|
+
!isUserInAppTenant(requestAppId)
|
|
79
|
+
) {
|
|
80
|
+
// don't error, simply remove the users rights (they are a public user)
|
|
81
|
+
delete ctx.user.builder
|
|
82
|
+
delete ctx.user.admin
|
|
83
|
+
delete ctx.user.roles
|
|
84
|
+
roleId = BUILTIN_ROLE_IDS.PUBLIC
|
|
85
|
+
noCookieSet = true
|
|
86
|
+
}
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (
|
|
105
|
-
(requestAppId !== appId ||
|
|
106
|
-
appCookie == null ||
|
|
107
|
-
appCookie.appId !== requestAppId) &&
|
|
108
|
-
!noCookieSet
|
|
109
|
-
) {
|
|
110
|
-
setCookie(ctx, { appId }, Cookies.CurrentApp)
|
|
88
|
+
ctx.appId = appId
|
|
89
|
+
if (roleId) {
|
|
90
|
+
ctx.roleId = roleId
|
|
91
|
+
const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null
|
|
92
|
+
ctx.user = {
|
|
93
|
+
...ctx.user,
|
|
94
|
+
// override userID with metadata one
|
|
95
|
+
_id: userId,
|
|
96
|
+
userId,
|
|
97
|
+
roleId,
|
|
98
|
+
role: await getRole(appId, roleId),
|
|
111
99
|
}
|
|
100
|
+
}
|
|
101
|
+
if (
|
|
102
|
+
(requestAppId !== appId ||
|
|
103
|
+
appCookie == null ||
|
|
104
|
+
appCookie.appId !== requestAppId) &&
|
|
105
|
+
!noCookieSet
|
|
106
|
+
) {
|
|
107
|
+
setCookie(ctx, { appId }, Cookies.CurrentApp)
|
|
108
|
+
}
|
|
112
109
|
|
|
113
|
-
|
|
114
|
-
})
|
|
110
|
+
return next()
|
|
115
111
|
}
|
|
@@ -11,33 +11,26 @@ const authorizedMiddleware = require("../authorized")
|
|
|
11
11
|
const env = require("../../environment")
|
|
12
12
|
const { PermissionTypes, PermissionLevels } = require("@budibase/backend-core/permissions")
|
|
13
13
|
require("@budibase/backend-core").init(require("../../db"))
|
|
14
|
-
const { doInAppContext } = require("@budibase/backend-core/context")
|
|
15
|
-
|
|
16
|
-
const APP_ID = ""
|
|
17
14
|
|
|
18
15
|
class TestConfiguration {
|
|
19
16
|
constructor(role) {
|
|
20
17
|
this.middleware = authorizedMiddleware(role)
|
|
21
18
|
this.next = jest.fn()
|
|
22
19
|
this.throw = jest.fn()
|
|
23
|
-
this.headers = {}
|
|
24
20
|
this.ctx = {
|
|
25
21
|
headers: {},
|
|
26
22
|
request: {
|
|
27
23
|
url: ""
|
|
28
24
|
},
|
|
29
|
-
appId:
|
|
25
|
+
appId: "",
|
|
30
26
|
auth: {},
|
|
31
27
|
next: this.next,
|
|
32
|
-
throw: this.throw
|
|
33
|
-
get: (name) => this.headers[name],
|
|
28
|
+
throw: this.throw
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
executeMiddleware() {
|
|
38
|
-
return
|
|
39
|
-
return this.middleware(this.ctx, this.next)
|
|
40
|
-
})
|
|
33
|
+
return this.middleware(this.ctx, this.next)
|
|
41
34
|
}
|
|
42
35
|
|
|
43
36
|
setUser(user) {
|
|
@@ -53,7 +46,7 @@ class TestConfiguration {
|
|
|
53
46
|
}
|
|
54
47
|
|
|
55
48
|
setAuthenticated(isAuthed) {
|
|
56
|
-
this.ctx.
|
|
49
|
+
this.ctx.auth = { authenticated: isAuthed }
|
|
57
50
|
}
|
|
58
51
|
|
|
59
52
|
setRequestUrl(url) {
|
|
@@ -114,7 +107,7 @@ describe("Authorization middleware", () => {
|
|
|
114
107
|
expect(config.next).toHaveBeenCalled()
|
|
115
108
|
})
|
|
116
109
|
|
|
117
|
-
it("throws if the user
|
|
110
|
+
it("throws if the user has only builder permissions", async () => {
|
|
118
111
|
config.setEnvironment(false)
|
|
119
112
|
config.setMiddlewareRequiredPermission(PermissionTypes.BUILDER)
|
|
120
113
|
config.setUser({
|
|
@@ -140,7 +133,7 @@ describe("Authorization middleware", () => {
|
|
|
140
133
|
expect(config.next).toHaveBeenCalled()
|
|
141
134
|
})
|
|
142
135
|
|
|
143
|
-
it("throws if the user session is not authenticated", async () => {
|
|
136
|
+
it("throws if the user session is not authenticated after permission checks", async () => {
|
|
144
137
|
config.setUser({
|
|
145
138
|
role: {
|
|
146
139
|
_id: ""
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
mockAuthWithNoCookie()
|
|
2
2
|
mockWorker()
|
|
3
3
|
|
|
4
|
-
jest.mock("@budibase/backend-core/db", () => ({
|
|
5
|
-
...jest.requireActual("@budibase/backend-core/db"),
|
|
6
|
-
dbExists: () => true,
|
|
7
|
-
}))
|
|
8
|
-
|
|
9
4
|
function mockWorker() {
|
|
10
5
|
jest.mock("../../utilities/workerRequests", () => ({
|
|
11
6
|
getGlobalSelf: () => {
|
|
@@ -55,7 +50,6 @@ function mockAuthWithCookie() {
|
|
|
55
50
|
return "app_test"
|
|
56
51
|
},
|
|
57
52
|
setCookie: jest.fn(),
|
|
58
|
-
clearCookie: jest.fn(),
|
|
59
53
|
getCookie: () => ({appId: "app_different", roleId: "PUBLIC"}),
|
|
60
54
|
}))
|
|
61
55
|
jest.mock("@budibase/backend-core/constants", () => ({
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
jest.mock("../../db")
|
|
2
2
|
jest.mock("../../utilities/usageQuota")
|
|
3
|
+
jest.mock("../../environment", () => ({
|
|
4
|
+
isTest: () => true,
|
|
5
|
+
isProd: () => false,
|
|
6
|
+
isDev: () => true,
|
|
7
|
+
_set: () => {},
|
|
8
|
+
}))
|
|
3
9
|
jest.mock("@budibase/backend-core/tenancy", () => ({
|
|
4
10
|
getTenantId: () => "testing123"
|
|
5
11
|
}))
|
|
@@ -23,10 +29,9 @@ class TestConfiguration {
|
|
|
23
29
|
},
|
|
24
30
|
req: {
|
|
25
31
|
method: "POST",
|
|
26
|
-
url: "/
|
|
32
|
+
url: "/rows"
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
|
-
usageQuota.useQuotas = () => true
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
executeMiddleware() {
|
|
@@ -108,6 +113,7 @@ describe("usageQuota middleware", () => {
|
|
|
108
113
|
|
|
109
114
|
it("calculates and persists the correct usage quota for the relevant action", async () => {
|
|
110
115
|
config.setUrl("/rows")
|
|
116
|
+
config.setProd(true)
|
|
111
117
|
|
|
112
118
|
await config.executeMiddleware()
|
|
113
119
|
|
|
@@ -115,20 +121,20 @@ describe("usageQuota middleware", () => {
|
|
|
115
121
|
expect(config.next).toHaveBeenCalled()
|
|
116
122
|
})
|
|
117
123
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
124
|
+
it("calculates the correct file size from a file upload call and adds it to quota", async () => {
|
|
125
|
+
config.setUrl("/upload")
|
|
126
|
+
config.setProd(true)
|
|
127
|
+
config.setFiles([
|
|
128
|
+
{
|
|
129
|
+
size: 100
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
size: 10000
|
|
133
|
+
},
|
|
134
|
+
])
|
|
135
|
+
await config.executeMiddleware()
|
|
136
|
+
|
|
137
|
+
expect(usageQuota.update).toHaveBeenCalledWith("storage", 10100)
|
|
138
|
+
expect(config.next).toHaveBeenCalled()
|
|
139
|
+
})
|
|
134
140
|
})
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
const CouchDB = require("../db")
|
|
1
2
|
const usageQuota = require("../utilities/usageQuota")
|
|
2
|
-
const
|
|
3
|
+
const env = require("../environment")
|
|
4
|
+
const { getTenantId } = require("@budibase/backend-core/tenancy")
|
|
3
5
|
const {
|
|
4
6
|
isExternalTable,
|
|
5
7
|
isRowId: isExternalRowId,
|
|
6
8
|
} = require("../integrations/utils")
|
|
7
|
-
|
|
9
|
+
|
|
10
|
+
// tenants without limits
|
|
11
|
+
const EXCLUDED_TENANTS = ["bb", "default", "bbtest", "bbstaging"]
|
|
8
12
|
|
|
9
13
|
// currently only counting new writes and deletes
|
|
10
14
|
const METHOD_MAP = {
|
|
@@ -14,13 +18,13 @@ const METHOD_MAP = {
|
|
|
14
18
|
|
|
15
19
|
const DOMAIN_MAP = {
|
|
16
20
|
rows: usageQuota.Properties.ROW,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
upload: usageQuota.Properties.UPLOAD,
|
|
22
|
+
views: usageQuota.Properties.VIEW,
|
|
23
|
+
users: usageQuota.Properties.USER,
|
|
20
24
|
applications: usageQuota.Properties.APPS,
|
|
21
25
|
// this will not be updated by endpoint calls
|
|
22
26
|
// instead it will be updated by triggerInfo
|
|
23
|
-
|
|
27
|
+
automationRuns: usageQuota.Properties.AUTOMATION,
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
function getProperty(url) {
|
|
@@ -32,7 +36,10 @@ function getProperty(url) {
|
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
module.exports = async (ctx, next) => {
|
|
35
|
-
|
|
39
|
+
const tenantId = getTenantId()
|
|
40
|
+
|
|
41
|
+
// if in development or a self hosted cloud usage quotas should not be executed
|
|
42
|
+
if (env.isDev() || env.SELF_HOSTED || EXCLUDED_TENANTS.includes(tenantId)) {
|
|
36
43
|
return next()
|
|
37
44
|
}
|
|
38
45
|
|
|
@@ -46,7 +53,7 @@ module.exports = async (ctx, next) => {
|
|
|
46
53
|
const usageId = ctx.request.body._id
|
|
47
54
|
try {
|
|
48
55
|
if (ctx.appId) {
|
|
49
|
-
const db =
|
|
56
|
+
const db = new CouchDB(ctx.appId)
|
|
50
57
|
await db.get(usageId)
|
|
51
58
|
}
|
|
52
59
|
return next()
|
|
@@ -73,92 +80,9 @@ module.exports = async (ctx, next) => {
|
|
|
73
80
|
usage = files.map(file => file.size).reduce((total, size) => total + size)
|
|
74
81
|
}
|
|
75
82
|
try {
|
|
76
|
-
await
|
|
83
|
+
await usageQuota.update(property, usage)
|
|
84
|
+
return next()
|
|
77
85
|
} catch (err) {
|
|
78
86
|
ctx.throw(400, err)
|
|
79
87
|
}
|
|
80
88
|
}
|
|
81
|
-
|
|
82
|
-
const performRequest = async (ctx, next, property, usage) => {
|
|
83
|
-
const usageContext = {
|
|
84
|
-
skipNext: false,
|
|
85
|
-
skipUsage: false,
|
|
86
|
-
[usageQuota.Properties.APPS]: {},
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (usage === -1) {
|
|
90
|
-
if (PRE_DELETE[property]) {
|
|
91
|
-
await PRE_DELETE[property](ctx, usageContext)
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
if (PRE_CREATE[property]) {
|
|
95
|
-
await PRE_CREATE[property](ctx, usageContext)
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// run the request
|
|
100
|
-
if (!usageContext.skipNext) {
|
|
101
|
-
await usageQuota.update(property, usage, { dryRun: true })
|
|
102
|
-
await next()
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (usage === -1) {
|
|
106
|
-
if (POST_DELETE[property]) {
|
|
107
|
-
await POST_DELETE[property](ctx, usageContext)
|
|
108
|
-
}
|
|
109
|
-
} else {
|
|
110
|
-
if (POST_CREATE[property]) {
|
|
111
|
-
await POST_CREATE[property](ctx, usageContext)
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// update the usage
|
|
116
|
-
if (!usageContext.skipUsage) {
|
|
117
|
-
await usageQuota.update(property, usage)
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const appPreDelete = async (ctx, usageContext) => {
|
|
122
|
-
if (ctx.query.unpublish) {
|
|
123
|
-
// don't run usage decrement for unpublish
|
|
124
|
-
usageContext.skipUsage = true
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// store the row count to delete
|
|
129
|
-
const rows = await getUniqueRows([ctx.appId])
|
|
130
|
-
if (rows.length) {
|
|
131
|
-
usageContext[usageQuota.Properties.APPS] = { rowCount: rows.length }
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const appPostDelete = async (ctx, usageContext) => {
|
|
136
|
-
// delete the app rows from usage
|
|
137
|
-
const rowCount = usageContext[usageQuota.Properties.APPS].rowCount
|
|
138
|
-
if (rowCount) {
|
|
139
|
-
await usageQuota.update(usageQuota.Properties.ROW, -rowCount)
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const appPostCreate = async ctx => {
|
|
144
|
-
// app import & template creation
|
|
145
|
-
if (ctx.request.body.useTemplate === "true") {
|
|
146
|
-
const rows = await getUniqueRows([ctx.response.body.appId])
|
|
147
|
-
const rowCount = rows ? rows.length : 0
|
|
148
|
-
await usageQuota.update(usageQuota.Properties.ROW, rowCount)
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const PRE_DELETE = {
|
|
153
|
-
[usageQuota.Properties.APPS]: appPreDelete,
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
const POST_DELETE = {
|
|
157
|
-
[usageQuota.Properties.APPS]: appPostDelete,
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const PRE_CREATE = {}
|
|
161
|
-
|
|
162
|
-
const POST_CREATE = {
|
|
163
|
-
[usageQuota.Properties.APPS]: appPostCreate,
|
|
164
|
-
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
const core = require("@budibase/backend-core")
|
|
2
|
-
const CouchDB = require("../../db")
|
|
3
|
-
core.init(CouchDB)
|
|
4
1
|
const { BUILTIN_ROLE_IDS } = require("@budibase/backend-core/roles")
|
|
5
2
|
const env = require("../../environment")
|
|
6
3
|
const {
|
|
@@ -20,15 +17,15 @@ const supertest = require("supertest")
|
|
|
20
17
|
const { cleanup } = require("../../utilities/fileSystem")
|
|
21
18
|
const { Cookies, Headers } = require("@budibase/backend-core/constants")
|
|
22
19
|
const { jwt } = require("@budibase/backend-core/auth")
|
|
20
|
+
const core = require("@budibase/backend-core")
|
|
23
21
|
const { getGlobalDB } = require("@budibase/backend-core/tenancy")
|
|
24
22
|
const { createASession } = require("@budibase/backend-core/sessions")
|
|
25
23
|
const { user: userCache } = require("@budibase/backend-core/cache")
|
|
26
|
-
const
|
|
27
|
-
|
|
24
|
+
const CouchDB = require("../../db")
|
|
25
|
+
core.init(CouchDB)
|
|
28
26
|
|
|
29
27
|
const GLOBAL_USER_ID = "us_uuid1"
|
|
30
28
|
const EMAIL = "babs@babs.com"
|
|
31
|
-
const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
|
|
32
29
|
|
|
33
30
|
class TestConfiguration {
|
|
34
31
|
constructor(openServer = true) {
|
|
@@ -51,10 +48,6 @@ class TestConfiguration {
|
|
|
51
48
|
return this.appId
|
|
52
49
|
}
|
|
53
50
|
|
|
54
|
-
getCouch() {
|
|
55
|
-
return CouchDB
|
|
56
|
-
}
|
|
57
|
-
|
|
58
51
|
async _req(config, params, controlFunc) {
|
|
59
52
|
const request = {}
|
|
60
53
|
// fake cookies, we don't need them
|
|
@@ -66,21 +59,11 @@ class TestConfiguration {
|
|
|
66
59
|
request.request = {
|
|
67
60
|
body: config,
|
|
68
61
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
request.params = params
|
|
72
|
-
}
|
|
73
|
-
await controlFunc(request)
|
|
74
|
-
return request.body
|
|
75
|
-
}
|
|
76
|
-
// check if already in a context
|
|
77
|
-
if (context.getAppId() == null) {
|
|
78
|
-
return context.doInAppContext(this.appId, async () => {
|
|
79
|
-
return run()
|
|
80
|
-
})
|
|
81
|
-
} else {
|
|
82
|
-
return run()
|
|
62
|
+
if (params) {
|
|
63
|
+
request.params = params
|
|
83
64
|
}
|
|
65
|
+
await controlFunc(request)
|
|
66
|
+
return request.body
|
|
84
67
|
}
|
|
85
68
|
|
|
86
69
|
async globalUser({
|
|
@@ -102,11 +85,7 @@ class TestConfiguration {
|
|
|
102
85
|
roles: roles || {},
|
|
103
86
|
tenantId: TENANT_ID,
|
|
104
87
|
}
|
|
105
|
-
await createASession(id, {
|
|
106
|
-
sessionId: "sessionid",
|
|
107
|
-
tenantId: TENANT_ID,
|
|
108
|
-
csrfToken: CSRF_TOKEN,
|
|
109
|
-
})
|
|
88
|
+
await createASession(id, { sessionId: "sessionid", tenantId: TENANT_ID })
|
|
110
89
|
if (builder) {
|
|
111
90
|
user.builder = { global: true }
|
|
112
91
|
} else {
|
|
@@ -119,8 +98,7 @@ class TestConfiguration {
|
|
|
119
98
|
}
|
|
120
99
|
}
|
|
121
100
|
|
|
122
|
-
|
|
123
|
-
async init(appName = newid()) {
|
|
101
|
+
async init(appName = "test_application") {
|
|
124
102
|
await this.globalUser()
|
|
125
103
|
return this.createApp(appName)
|
|
126
104
|
}
|
|
@@ -153,7 +131,6 @@ class TestConfiguration {
|
|
|
153
131
|
`${Cookies.Auth}=${authToken}`,
|
|
154
132
|
`${Cookies.CurrentApp}=${appToken}`,
|
|
155
133
|
],
|
|
156
|
-
[Headers.CSRF_TOKEN]: CSRF_TOKEN,
|
|
157
134
|
}
|
|
158
135
|
if (this.appId) {
|
|
159
136
|
headers[Headers.APP_ID] = this.appId
|
|
@@ -186,7 +163,6 @@ class TestConfiguration {
|
|
|
186
163
|
// create dev app
|
|
187
164
|
this.app = await this._req({ name: appName }, null, controllers.app.create)
|
|
188
165
|
this.appId = this.app.appId
|
|
189
|
-
context.updateAppId(this.appId)
|
|
190
166
|
|
|
191
167
|
// create production app
|
|
192
168
|
this.prodApp = await this.deploy()
|
|
@@ -199,16 +175,14 @@ class TestConfiguration {
|
|
|
199
175
|
}
|
|
200
176
|
|
|
201
177
|
async deploy() {
|
|
202
|
-
await this._req(null, null, controllers.deploy.deployApp)
|
|
203
|
-
const prodAppId =
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
return appPackage.application
|
|
211
|
-
})
|
|
178
|
+
const deployment = await this._req(null, null, controllers.deploy.deployApp)
|
|
179
|
+
const prodAppId = deployment.appId.replace("_dev", "")
|
|
180
|
+
const appPackage = await this._req(
|
|
181
|
+
null,
|
|
182
|
+
{ appId: prodAppId },
|
|
183
|
+
controllers.app.fetchAppPackage
|
|
184
|
+
)
|
|
185
|
+
return appPackage.application
|
|
212
186
|
}
|
|
213
187
|
|
|
214
188
|
async updateTable(config = null) {
|
|
@@ -437,47 +411,46 @@ class TestConfiguration {
|
|
|
437
411
|
|
|
438
412
|
async login({ roleId, userId, builder, prodApp = false } = {}) {
|
|
439
413
|
const appId = prodApp ? this.prodAppId : this.appId
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
id: userId,
|
|
449
|
-
builder,
|
|
450
|
-
roles: { [this.prodAppId]: roleId },
|
|
451
|
-
})
|
|
452
|
-
}
|
|
453
|
-
await createASession(userId, {
|
|
454
|
-
sessionId: "sessionid",
|
|
455
|
-
tenantId: TENANT_ID,
|
|
456
|
-
})
|
|
457
|
-
// have to fake this
|
|
458
|
-
const auth = {
|
|
414
|
+
|
|
415
|
+
userId = !userId ? `us_uuid1` : userId
|
|
416
|
+
if (!this.request) {
|
|
417
|
+
throw "Server has not been opened, cannot login."
|
|
418
|
+
}
|
|
419
|
+
// make sure the user exists in the global DB
|
|
420
|
+
if (roleId !== BUILTIN_ROLE_IDS.PUBLIC) {
|
|
421
|
+
await this.globalUser({
|
|
459
422
|
userId,
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
const authToken = jwt.sign(auth, env.JWT_SECRET)
|
|
468
|
-
const appToken = jwt.sign(app, env.JWT_SECRET)
|
|
469
|
-
|
|
470
|
-
// returning necessary request headers
|
|
471
|
-
await userCache.invalidateUser(userId)
|
|
472
|
-
return {
|
|
473
|
-
Accept: "application/json",
|
|
474
|
-
Cookie: [
|
|
475
|
-
`${Cookies.Auth}=${authToken}`,
|
|
476
|
-
`${Cookies.CurrentApp}=${appToken}`,
|
|
477
|
-
],
|
|
478
|
-
[Headers.APP_ID]: appId,
|
|
479
|
-
}
|
|
423
|
+
builder,
|
|
424
|
+
roles: { [this.prodAppId]: roleId },
|
|
425
|
+
})
|
|
426
|
+
}
|
|
427
|
+
await createASession(userId, {
|
|
428
|
+
sessionId: "sessionid",
|
|
429
|
+
tenantId: TENANT_ID,
|
|
480
430
|
})
|
|
431
|
+
// have to fake this
|
|
432
|
+
const auth = {
|
|
433
|
+
userId,
|
|
434
|
+
sessionId: "sessionid",
|
|
435
|
+
tenantId: TENANT_ID,
|
|
436
|
+
}
|
|
437
|
+
const app = {
|
|
438
|
+
roleId: roleId,
|
|
439
|
+
appId,
|
|
440
|
+
}
|
|
441
|
+
const authToken = jwt.sign(auth, env.JWT_SECRET)
|
|
442
|
+
const appToken = jwt.sign(app, env.JWT_SECRET)
|
|
443
|
+
|
|
444
|
+
// returning necessary request headers
|
|
445
|
+
await userCache.invalidateUser(userId)
|
|
446
|
+
return {
|
|
447
|
+
Accept: "application/json",
|
|
448
|
+
Cookie: [
|
|
449
|
+
`${Cookies.Auth}=${authToken}`,
|
|
450
|
+
`${Cookies.CurrentApp}=${appToken}`,
|
|
451
|
+
],
|
|
452
|
+
[Headers.APP_ID]: appId,
|
|
453
|
+
}
|
|
481
454
|
}
|
|
482
455
|
}
|
|
483
456
|
|