@budibase/backend-core 3.2.5 → 3.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/dist/index.js +7 -1
  2. package/dist/index.js.map +2 -2
  3. package/dist/index.js.meta.json +1 -1
  4. package/dist/package.json +11 -4
  5. package/dist/plugins.js.meta.json +1 -1
  6. package/dist/src/environment.d.ts +1 -0
  7. package/dist/src/environment.js +6 -1
  8. package/dist/src/environment.js.map +1 -1
  9. package/package.json +11 -4
  10. package/src/accounts/accounts.ts +0 -82
  11. package/src/accounts/api.ts +0 -59
  12. package/src/accounts/index.ts +0 -1
  13. package/src/auth/auth.ts +0 -210
  14. package/src/auth/index.ts +0 -1
  15. package/src/auth/tests/auth.spec.ts +0 -14
  16. package/src/blacklist/blacklist.ts +0 -54
  17. package/src/blacklist/index.ts +0 -1
  18. package/src/blacklist/tests/blacklist.spec.ts +0 -46
  19. package/src/cache/appMetadata.ts +0 -88
  20. package/src/cache/base/index.ts +0 -150
  21. package/src/cache/docWritethrough.ts +0 -105
  22. package/src/cache/generic.ts +0 -33
  23. package/src/cache/index.ts +0 -8
  24. package/src/cache/invite.ts +0 -86
  25. package/src/cache/passwordReset.ts +0 -49
  26. package/src/cache/tests/docWritethrough.spec.ts +0 -296
  27. package/src/cache/tests/user.spec.ts +0 -145
  28. package/src/cache/tests/writethrough.spec.ts +0 -139
  29. package/src/cache/user.ts +0 -154
  30. package/src/cache/writethrough.ts +0 -133
  31. package/src/configs/configs.ts +0 -263
  32. package/src/configs/index.ts +0 -1
  33. package/src/configs/tests/configs.spec.ts +0 -184
  34. package/src/constants/db.ts +0 -75
  35. package/src/constants/index.ts +0 -2
  36. package/src/constants/misc.ts +0 -36
  37. package/src/context/Context.ts +0 -14
  38. package/src/context/identity.ts +0 -58
  39. package/src/context/index.ts +0 -3
  40. package/src/context/mainContext.ts +0 -422
  41. package/src/context/tests/index.spec.ts +0 -255
  42. package/src/context/types.ts +0 -26
  43. package/src/db/Replication.ts +0 -94
  44. package/src/db/couch/DatabaseImpl.ts +0 -511
  45. package/src/db/couch/connections.ts +0 -89
  46. package/src/db/couch/index.ts +0 -4
  47. package/src/db/couch/pouchDB.ts +0 -97
  48. package/src/db/couch/pouchDump.ts +0 -0
  49. package/src/db/couch/tests/DatabaseImpl.spec.ts +0 -118
  50. package/src/db/couch/utils.ts +0 -55
  51. package/src/db/db.ts +0 -34
  52. package/src/db/errors.ts +0 -14
  53. package/src/db/index.ts +0 -12
  54. package/src/db/instrumentation.ts +0 -199
  55. package/src/db/lucene.ts +0 -721
  56. package/src/db/searchIndexes/index.ts +0 -1
  57. package/src/db/searchIndexes/searchIndexes.ts +0 -62
  58. package/src/db/tests/DatabaseImpl.spec.ts +0 -55
  59. package/src/db/tests/connections.spec.ts +0 -22
  60. package/src/db/tests/index.spec.ts +0 -32
  61. package/src/db/tests/lucene.spec.ts +0 -400
  62. package/src/db/tests/pouch.spec.js +0 -62
  63. package/src/db/tests/utils.spec.ts +0 -63
  64. package/src/db/utils.ts +0 -208
  65. package/src/db/views.ts +0 -245
  66. package/src/docIds/conversions.ts +0 -60
  67. package/src/docIds/ids.ts +0 -126
  68. package/src/docIds/index.ts +0 -2
  69. package/src/docIds/newid.ts +0 -5
  70. package/src/docIds/params.ts +0 -189
  71. package/src/docUpdates/index.ts +0 -24
  72. package/src/environment.ts +0 -293
  73. package/src/errors/errors.ts +0 -119
  74. package/src/errors/index.ts +0 -1
  75. package/src/events/analytics.ts +0 -6
  76. package/src/events/asyncEvents/index.ts +0 -2
  77. package/src/events/asyncEvents/publisher.ts +0 -12
  78. package/src/events/asyncEvents/queue.ts +0 -22
  79. package/src/events/backfill.ts +0 -183
  80. package/src/events/documentId.ts +0 -56
  81. package/src/events/events.ts +0 -47
  82. package/src/events/identification.ts +0 -311
  83. package/src/events/index.ts +0 -15
  84. package/src/events/processors/AnalyticsProcessor.ts +0 -64
  85. package/src/events/processors/AuditLogsProcessor.ts +0 -92
  86. package/src/events/processors/LoggingProcessor.ts +0 -36
  87. package/src/events/processors/Processors.ts +0 -52
  88. package/src/events/processors/async/DocumentUpdateProcessor.ts +0 -38
  89. package/src/events/processors/index.ts +0 -19
  90. package/src/events/processors/posthog/PosthogProcessor.ts +0 -118
  91. package/src/events/processors/posthog/index.ts +0 -3
  92. package/src/events/processors/posthog/rateLimiting.ts +0 -106
  93. package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +0 -164
  94. package/src/events/processors/types.ts +0 -1
  95. package/src/events/publishers/account.ts +0 -41
  96. package/src/events/publishers/ai.ts +0 -21
  97. package/src/events/publishers/app.ts +0 -168
  98. package/src/events/publishers/auditLog.ts +0 -26
  99. package/src/events/publishers/auth.ts +0 -73
  100. package/src/events/publishers/automation.ts +0 -110
  101. package/src/events/publishers/backfill.ts +0 -74
  102. package/src/events/publishers/backup.ts +0 -42
  103. package/src/events/publishers/datasource.ts +0 -48
  104. package/src/events/publishers/email.ts +0 -17
  105. package/src/events/publishers/environmentVariable.ts +0 -38
  106. package/src/events/publishers/group.ts +0 -99
  107. package/src/events/publishers/index.ts +0 -25
  108. package/src/events/publishers/installation.ts +0 -38
  109. package/src/events/publishers/layout.ts +0 -26
  110. package/src/events/publishers/license.ts +0 -84
  111. package/src/events/publishers/org.ts +0 -37
  112. package/src/events/publishers/plugin.ts +0 -47
  113. package/src/events/publishers/query.ts +0 -89
  114. package/src/events/publishers/role.ts +0 -62
  115. package/src/events/publishers/rows.ts +0 -29
  116. package/src/events/publishers/screen.ts +0 -36
  117. package/src/events/publishers/serve.ts +0 -43
  118. package/src/events/publishers/table.ts +0 -70
  119. package/src/events/publishers/user.ts +0 -202
  120. package/src/events/publishers/view.ts +0 -107
  121. package/src/features/features.ts +0 -277
  122. package/src/features/index.ts +0 -2
  123. package/src/features/tests/features.spec.ts +0 -267
  124. package/src/features/tests/utils.ts +0 -64
  125. package/src/helpers.ts +0 -9
  126. package/src/index.ts +0 -59
  127. package/src/installation.ts +0 -115
  128. package/src/logging/alerts.ts +0 -26
  129. package/src/logging/correlation/correlation.ts +0 -15
  130. package/src/logging/correlation/index.ts +0 -1
  131. package/src/logging/correlation/middleware.ts +0 -18
  132. package/src/logging/index.ts +0 -4
  133. package/src/logging/pino/logger.ts +0 -239
  134. package/src/logging/pino/middleware.ts +0 -48
  135. package/src/logging/system.ts +0 -81
  136. package/src/logging/tests/system.spec.ts +0 -61
  137. package/src/middleware/adminOnly.ts +0 -9
  138. package/src/middleware/auditLog.ts +0 -6
  139. package/src/middleware/authenticated.ts +0 -247
  140. package/src/middleware/builderOnly.ts +0 -21
  141. package/src/middleware/builderOrAdmin.ts +0 -21
  142. package/src/middleware/contentSecurityPolicy.ts +0 -113
  143. package/src/middleware/csrf.ts +0 -81
  144. package/src/middleware/errorHandling.ts +0 -43
  145. package/src/middleware/index.ts +0 -24
  146. package/src/middleware/internalApi.ts +0 -23
  147. package/src/middleware/ip.ts +0 -12
  148. package/src/middleware/joi-validator.ts +0 -58
  149. package/src/middleware/matchers.ts +0 -39
  150. package/src/middleware/passport/datasource/google.ts +0 -102
  151. package/src/middleware/passport/local.ts +0 -54
  152. package/src/middleware/passport/sso/google.ts +0 -77
  153. package/src/middleware/passport/sso/oidc.ts +0 -152
  154. package/src/middleware/passport/sso/sso.ts +0 -138
  155. package/src/middleware/passport/sso/tests/google.spec.ts +0 -68
  156. package/src/middleware/passport/sso/tests/oidc.spec.ts +0 -144
  157. package/src/middleware/passport/sso/tests/sso.spec.ts +0 -197
  158. package/src/middleware/passport/utils.ts +0 -38
  159. package/src/middleware/querystringToBody.ts +0 -28
  160. package/src/middleware/tenancy.ts +0 -36
  161. package/src/middleware/tests/builder.spec.ts +0 -181
  162. package/src/middleware/tests/contentSecurityPolicy.spec.ts +0 -75
  163. package/src/middleware/tests/matchers.spec.ts +0 -100
  164. package/src/migrations/definitions.ts +0 -40
  165. package/src/migrations/index.ts +0 -2
  166. package/src/migrations/migrations.ts +0 -186
  167. package/src/migrations/tests/__snapshots__/migrations.spec.ts.snap +0 -11
  168. package/src/migrations/tests/migrations.spec.ts +0 -64
  169. package/src/objectStore/buckets/app.ts +0 -53
  170. package/src/objectStore/buckets/global.ts +0 -29
  171. package/src/objectStore/buckets/index.ts +0 -3
  172. package/src/objectStore/buckets/plugins.ts +0 -71
  173. package/src/objectStore/buckets/tests/app.spec.ts +0 -161
  174. package/src/objectStore/buckets/tests/global.spec.ts +0 -74
  175. package/src/objectStore/buckets/tests/plugins.spec.ts +0 -111
  176. package/src/objectStore/cloudfront.ts +0 -41
  177. package/src/objectStore/index.ts +0 -3
  178. package/src/objectStore/objectStore.ts +0 -585
  179. package/src/objectStore/utils.ts +0 -113
  180. package/src/platform/index.ts +0 -3
  181. package/src/platform/platformDb.ts +0 -6
  182. package/src/platform/tenants.ts +0 -101
  183. package/src/platform/tests/tenants.spec.ts +0 -26
  184. package/src/platform/users.ts +0 -129
  185. package/src/plugin/index.ts +0 -1
  186. package/src/plugin/tests/validation.spec.ts +0 -209
  187. package/src/plugin/utils.ts +0 -175
  188. package/src/queue/constants.ts +0 -8
  189. package/src/queue/inMemoryQueue.ts +0 -189
  190. package/src/queue/index.ts +0 -2
  191. package/src/queue/listeners.ts +0 -199
  192. package/src/queue/queue.ts +0 -84
  193. package/src/redis/index.ts +0 -6
  194. package/src/redis/init.ts +0 -118
  195. package/src/redis/redis.ts +0 -358
  196. package/src/redis/redlockImpl.ts +0 -155
  197. package/src/redis/tests/redis.spec.ts +0 -207
  198. package/src/redis/tests/redlockImpl.spec.ts +0 -105
  199. package/src/redis/utils.ts +0 -128
  200. package/src/security/auth.ts +0 -24
  201. package/src/security/encryption.ts +0 -185
  202. package/src/security/index.ts +0 -1
  203. package/src/security/permissions.ts +0 -166
  204. package/src/security/roles.ts +0 -655
  205. package/src/security/secrets.ts +0 -20
  206. package/src/security/sessions.ts +0 -123
  207. package/src/security/tests/auth.spec.ts +0 -45
  208. package/src/security/tests/encryption.spec.ts +0 -31
  209. package/src/security/tests/permissions.spec.ts +0 -146
  210. package/src/security/tests/secrets.spec.ts +0 -35
  211. package/src/security/tests/sessions.spec.ts +0 -12
  212. package/src/sql/designDoc.ts +0 -17
  213. package/src/sql/index.ts +0 -5
  214. package/src/sql/sql.ts +0 -1854
  215. package/src/sql/sqlTable.ts +0 -319
  216. package/src/sql/utils.ts +0 -193
  217. package/src/tenancy/db.ts +0 -6
  218. package/src/tenancy/index.ts +0 -2
  219. package/src/tenancy/tenancy.ts +0 -148
  220. package/src/tenancy/tests/tenancy.spec.ts +0 -184
  221. package/src/timers/index.ts +0 -1
  222. package/src/timers/timers.ts +0 -22
  223. package/src/users/db.ts +0 -582
  224. package/src/users/events.ts +0 -176
  225. package/src/users/index.ts +0 -4
  226. package/src/users/lookup.ts +0 -99
  227. package/src/users/test/db.spec.ts +0 -188
  228. package/src/users/test/utils.spec.ts +0 -67
  229. package/src/users/users.ts +0 -353
  230. package/src/users/utils.ts +0 -81
  231. package/src/utils/Duration.ts +0 -56
  232. package/src/utils/hashing.ts +0 -15
  233. package/src/utils/index.ts +0 -4
  234. package/src/utils/stringUtils.ts +0 -8
  235. package/src/utils/tests/Duration.spec.ts +0 -19
  236. package/src/utils/tests/utils.spec.ts +0 -204
  237. package/src/utils/utils.ts +0 -249
  238. package/tests/core/logging.ts +0 -34
  239. package/tests/core/users/users.spec.js +0 -53
  240. package/tests/core/utilities/index.ts +0 -7
  241. package/tests/core/utilities/jestUtils.ts +0 -33
  242. package/tests/core/utilities/mocks/alerts.ts +0 -4
  243. package/tests/core/utilities/mocks/date.ts +0 -3
  244. package/tests/core/utilities/mocks/events.ts +0 -132
  245. package/tests/core/utilities/mocks/index.ts +0 -9
  246. package/tests/core/utilities/mocks/licenses.ts +0 -119
  247. package/tests/core/utilities/queue.ts +0 -9
  248. package/tests/core/utilities/structures/Chance.ts +0 -20
  249. package/tests/core/utilities/structures/accounts.ts +0 -80
  250. package/tests/core/utilities/structures/apps.ts +0 -21
  251. package/tests/core/utilities/structures/common.ts +0 -7
  252. package/tests/core/utilities/structures/db.ts +0 -12
  253. package/tests/core/utilities/structures/documents/index.ts +0 -1
  254. package/tests/core/utilities/structures/documents/platform/index.ts +0 -1
  255. package/tests/core/utilities/structures/documents/platform/installation.ts +0 -12
  256. package/tests/core/utilities/structures/generator.ts +0 -3
  257. package/tests/core/utilities/structures/index.ts +0 -15
  258. package/tests/core/utilities/structures/koa.ts +0 -16
  259. package/tests/core/utilities/structures/licenses.ts +0 -190
  260. package/tests/core/utilities/structures/plugins.ts +0 -19
  261. package/tests/core/utilities/structures/quotas.ts +0 -72
  262. package/tests/core/utilities/structures/scim.ts +0 -80
  263. package/tests/core/utilities/structures/sso.ts +0 -118
  264. package/tests/core/utilities/structures/tenants.ts +0 -5
  265. package/tests/core/utilities/structures/userGroups.ts +0 -10
  266. package/tests/core/utilities/structures/users.ts +0 -89
  267. package/tests/core/utilities/testContainerUtils.ts +0 -165
  268. package/tests/core/utilities/utils/index.ts +0 -2
  269. package/tests/core/utilities/utils/queue.ts +0 -27
  270. package/tests/core/utilities/utils/time.ts +0 -3
  271. package/tests/extra/DBTestConfiguration.ts +0 -36
  272. package/tests/extra/index.ts +0 -2
  273. package/tests/extra/testEnv.ts +0 -95
  274. package/tests/index.ts +0 -2
  275. package/tests/jestEnv.ts +0 -10
  276. package/tests/jestSetup.ts +0 -36
@@ -1,123 +0,0 @@
1
- import * as redis from "../redis/init"
2
- import { v4 as uuidv4 } from "uuid"
3
- import { logWarn } from "../logging"
4
- import env from "../environment"
5
- import { Duration } from "../utils"
6
- import {
7
- Session,
8
- ScannedSession,
9
- SessionKey,
10
- CreateSession,
11
- } from "@budibase/types"
12
-
13
- // a week expiry is the default
14
- const EXPIRY_SECONDS = env.SESSION_EXPIRY_SECONDS
15
- ? parseInt(env.SESSION_EXPIRY_SECONDS)
16
- : Duration.fromDays(7).toSeconds()
17
-
18
- function makeSessionID(userId: string, sessionId: string) {
19
- return `${userId}/${sessionId}`
20
- }
21
-
22
- export async function getSessionsForUser(userId: string): Promise<Session[]> {
23
- if (!userId) {
24
- console.trace("Cannot get sessions for undefined userId")
25
- return []
26
- }
27
- const client = await redis.getSessionClient()
28
- const sessions: ScannedSession[] = await client.scan(userId)
29
- return sessions.map(session => session.value)
30
- }
31
-
32
- export async function invalidateSessions(
33
- userId: string,
34
- opts: { sessionIds?: string[]; reason?: string } = {}
35
- ) {
36
- try {
37
- const reason = opts?.reason || "unknown"
38
- let sessionIds: string[] = opts.sessionIds || []
39
- let sessionKeys: SessionKey[]
40
-
41
- // If no sessionIds, get all the sessions for the user
42
- if (sessionIds.length === 0) {
43
- const sessions = await getSessionsForUser(userId)
44
- sessionKeys = sessions.map(session => ({
45
- key: makeSessionID(session.userId, session.sessionId),
46
- }))
47
- } else {
48
- // use the passed array of sessionIds
49
- sessionIds = Array.isArray(sessionIds) ? sessionIds : [sessionIds]
50
- sessionKeys = sessionIds.map(sessionId => ({
51
- key: makeSessionID(userId, sessionId),
52
- }))
53
- }
54
-
55
- if (sessionKeys && sessionKeys.length > 0) {
56
- const client = await redis.getSessionClient()
57
- const promises = []
58
- for (let sessionKey of sessionKeys) {
59
- promises.push(client.delete(sessionKey.key))
60
- }
61
- if (!env.isTest()) {
62
- logWarn(
63
- `Invalidating sessions for ${userId} (reason: ${reason}) - ${sessionKeys
64
- .map(sessionKey => sessionKey.key)
65
- .join(", ")}`
66
- )
67
- }
68
- await Promise.all(promises)
69
- }
70
- } catch (err) {
71
- console.error(`Error invalidating sessions: ${err}`)
72
- }
73
- }
74
-
75
- export async function createASession(
76
- userId: string,
77
- createSession: CreateSession
78
- ) {
79
- // invalidate all other sessions
80
- await invalidateSessions(userId, { reason: "creation" })
81
-
82
- const client = await redis.getSessionClient()
83
- const sessionId = createSession.sessionId
84
- const csrfToken = createSession.csrfToken ? createSession.csrfToken : uuidv4()
85
- const key = makeSessionID(userId, sessionId)
86
-
87
- const session: Session = {
88
- ...createSession,
89
- csrfToken,
90
- createdAt: new Date().toISOString(),
91
- lastAccessedAt: new Date().toISOString(),
92
- userId,
93
- }
94
- await client.store(key, session, EXPIRY_SECONDS)
95
- return session
96
- }
97
-
98
- export async function updateSessionTTL(session: Session) {
99
- const client = await redis.getSessionClient()
100
- const key = makeSessionID(session.userId, session.sessionId)
101
- session.lastAccessedAt = new Date().toISOString()
102
- await client.store(key, session, EXPIRY_SECONDS)
103
- }
104
-
105
- export async function endSession(userId: string, sessionId: string) {
106
- const client = await redis.getSessionClient()
107
- await client.delete(makeSessionID(userId, sessionId))
108
- }
109
-
110
- export async function getSession(
111
- userId: string,
112
- sessionId: string
113
- ): Promise<Session> {
114
- if (!userId || !sessionId) {
115
- throw new Error(`Invalid session details - ${userId} - ${sessionId}`)
116
- }
117
- const client = await redis.getSessionClient()
118
- const session = await client.get(makeSessionID(userId, sessionId))
119
- if (!session) {
120
- throw new Error(`Session not found - ${userId} - ${sessionId}`)
121
- }
122
- return session
123
- }
@@ -1,45 +0,0 @@
1
- import { generator } from "../../../tests"
2
- import { PASSWORD_MAX_LENGTH, validatePassword } from "../auth"
3
-
4
- describe("auth", () => {
5
- describe("validatePassword", () => {
6
- it("a valid password returns successful", () => {
7
- expect(validatePassword("password123!")).toEqual({ valid: true })
8
- })
9
-
10
- it.each([
11
- ["undefined", undefined],
12
- ["null", null],
13
- ["empty", ""],
14
- ])("%s returns unsuccessful", (_, password) => {
15
- expect(validatePassword(password as string)).toEqual({
16
- valid: false,
17
- error: "Password invalid. Minimum 12 characters.",
18
- })
19
- })
20
-
21
- it.each([
22
- generator.word({ length: PASSWORD_MAX_LENGTH }),
23
- generator.paragraph().substring(0, PASSWORD_MAX_LENGTH),
24
- ])(`can use passwords up to 512 characters in length`, password => {
25
- expect(validatePassword(password)).toEqual({
26
- valid: true,
27
- })
28
- })
29
-
30
- it.each([
31
- generator.word({ length: PASSWORD_MAX_LENGTH + 1 }),
32
- generator
33
- .paragraph({ sentences: 50 })
34
- .substring(0, PASSWORD_MAX_LENGTH + 1),
35
- ])(
36
- `passwords cannot have more than ${PASSWORD_MAX_LENGTH} characters`,
37
- password => {
38
- expect(validatePassword(password)).toEqual({
39
- valid: false,
40
- error: "Password invalid. Maximum 512 characters.",
41
- })
42
- }
43
- )
44
- })
45
- })
@@ -1,31 +0,0 @@
1
- import { encrypt, decrypt, SecretOption, getSecret } from "../encryption"
2
- import env from "../../environment"
3
-
4
- describe("encryption", () => {
5
- it("should throw an error if API encryption key is not set", () => {
6
- const jwt = getSecret(SecretOption.API)
7
- expect(jwt).toBe(env.JWT_SECRET?.export().toString())
8
- })
9
-
10
- it("should throw an error if encryption key is not set", () => {
11
- expect(() => getSecret(SecretOption.ENCRYPTION)).toThrow(
12
- 'Secret "ENCRYPTION_KEY" has not been set in environment.'
13
- )
14
- })
15
-
16
- it("should encrypt and decrypt a string using API encryption key", () => {
17
- env._set("API_ENCRYPTION_KEY", "api_secret")
18
- const plaintext = "budibase"
19
- const apiEncrypted = encrypt(plaintext, SecretOption.API)
20
- const decrypted = decrypt(apiEncrypted, SecretOption.API)
21
- expect(decrypted).toEqual(plaintext)
22
- })
23
-
24
- it("should encrypt and decrypt a string using encryption key", () => {
25
- env._set("ENCRYPTION_KEY", "normal_secret")
26
- const plaintext = "budibase"
27
- const encryptionEncrypted = encrypt(plaintext, SecretOption.ENCRYPTION)
28
- const decrypted = decrypt(encryptionEncrypted, SecretOption.ENCRYPTION)
29
- expect(decrypted).toEqual(plaintext)
30
- })
31
- })
@@ -1,146 +0,0 @@
1
- import cloneDeep from "lodash/cloneDeep"
2
- import * as permissions from "../permissions"
3
- import { BUILTIN_ROLE_IDS } from "../roles"
4
- import { BuiltinPermissionID } from "@budibase/types"
5
-
6
- describe("levelToNumber", () => {
7
- it("should return 0 for EXECUTE", () => {
8
- expect(permissions.levelToNumber(permissions.PermissionLevel.EXECUTE)).toBe(
9
- 0
10
- )
11
- })
12
-
13
- it("should return 1 for READ", () => {
14
- expect(permissions.levelToNumber(permissions.PermissionLevel.READ)).toBe(1)
15
- })
16
-
17
- it("should return 2 for WRITE", () => {
18
- expect(permissions.levelToNumber(permissions.PermissionLevel.WRITE)).toBe(2)
19
- })
20
-
21
- it("should return 3 for ADMIN", () => {
22
- expect(permissions.levelToNumber(permissions.PermissionLevel.ADMIN)).toBe(3)
23
- })
24
-
25
- it("should return -1 for an unknown permission level", () => {
26
- expect(
27
- permissions.levelToNumber("unknown" as permissions.PermissionLevel)
28
- ).toBe(-1)
29
- })
30
- })
31
- describe("getAllowedLevels", () => {
32
- it('should return ["execute"] for EXECUTE', () => {
33
- expect(
34
- permissions.getAllowedLevels(permissions.PermissionLevel.EXECUTE)
35
- ).toEqual([permissions.PermissionLevel.EXECUTE])
36
- })
37
-
38
- it('should return ["execute", "read"] for READ', () => {
39
- expect(
40
- permissions.getAllowedLevels(permissions.PermissionLevel.READ)
41
- ).toEqual([
42
- permissions.PermissionLevel.EXECUTE,
43
- permissions.PermissionLevel.READ,
44
- ])
45
- })
46
-
47
- it('should return ["execute", "read", "write"] for WRITE', () => {
48
- expect(
49
- permissions.getAllowedLevels(permissions.PermissionLevel.WRITE)
50
- ).toEqual([
51
- permissions.PermissionLevel.EXECUTE,
52
- permissions.PermissionLevel.READ,
53
- permissions.PermissionLevel.WRITE,
54
- ])
55
- })
56
-
57
- it('should return ["execute", "read", "write"] for ADMIN', () => {
58
- expect(
59
- permissions.getAllowedLevels(permissions.PermissionLevel.ADMIN)
60
- ).toEqual([
61
- permissions.PermissionLevel.EXECUTE,
62
- permissions.PermissionLevel.READ,
63
- permissions.PermissionLevel.WRITE,
64
- ])
65
- })
66
-
67
- it("should return [] for an unknown permission level", () => {
68
- expect(
69
- permissions.getAllowedLevels("unknown" as permissions.PermissionLevel)
70
- ).toEqual([])
71
- })
72
- })
73
-
74
- describe("doesHaveBasePermission", () => {
75
- it("should return true if base permission has the required level", () => {
76
- const permType = permissions.PermissionType.USER
77
- const permLevel = permissions.PermissionLevel.READ
78
- const rolesHierarchy = [
79
- {
80
- roleId: BUILTIN_ROLE_IDS.ADMIN,
81
- permissionId: BuiltinPermissionID.ADMIN,
82
- },
83
- ]
84
- expect(
85
- permissions.doesHaveBasePermission(permType, permLevel, rolesHierarchy)
86
- ).toBe(true)
87
- })
88
-
89
- it("should return false if base permission does not have the required level", () => {
90
- const permType = permissions.PermissionType.APP
91
- const permLevel = permissions.PermissionLevel.READ
92
- const rolesHierarchy = [
93
- {
94
- roleId: BUILTIN_ROLE_IDS.PUBLIC,
95
- permissionId: BuiltinPermissionID.PUBLIC,
96
- },
97
- ]
98
- expect(
99
- permissions.doesHaveBasePermission(permType, permLevel, rolesHierarchy)
100
- ).toBe(false)
101
- })
102
- })
103
-
104
- describe("isPermissionLevelHigherThanRead", () => {
105
- it("should return true if level is higher than read", () => {
106
- expect(
107
- permissions.isPermissionLevelHigherThanRead(
108
- permissions.PermissionLevel.WRITE
109
- )
110
- ).toBe(true)
111
- })
112
-
113
- it("should return false if level is read or lower", () => {
114
- expect(
115
- permissions.isPermissionLevelHigherThanRead(
116
- permissions.PermissionLevel.READ
117
- )
118
- ).toBe(false)
119
- })
120
- })
121
-
122
- describe("getBuiltinPermissions", () => {
123
- it("returns a clone of the builtin permissions", () => {
124
- const builtins = permissions.getBuiltinPermissions()
125
- expect(builtins).toEqual(cloneDeep(permissions.BUILTIN_PERMISSIONS))
126
- expect(builtins).not.toBe(permissions.BUILTIN_PERMISSIONS)
127
- })
128
- })
129
-
130
- describe("getBuiltinPermissionByID", () => {
131
- it("returns correct permission object for valid ID", () => {
132
- const expectedPermission = {
133
- _id: BuiltinPermissionID.PUBLIC,
134
- name: "Public",
135
- permissions: [
136
- new permissions.Permission(
137
- permissions.PermissionType.WEBHOOK,
138
- permissions.PermissionLevel.EXECUTE
139
- ),
140
- ],
141
- }
142
- expect(permissions.getBuiltinPermissionByID("public")).toEqual(
143
- expectedPermission
144
- )
145
- })
146
- })
@@ -1,35 +0,0 @@
1
- import { randomUUID } from "crypto"
2
- import environment, { SECRETS } from "../../environment"
3
- import { stringContainsSecret } from "../secrets"
4
-
5
- describe("secrets", () => {
6
- describe("stringContainsSecret", () => {
7
- it.each(SECRETS)("detects that a string contains a secret in: %s", key => {
8
- const needle = randomUUID()
9
- const haystack = `this is a secret: ${needle}`
10
- const old = environment[key]
11
- environment._set(key, needle)
12
-
13
- try {
14
- expect(stringContainsSecret(haystack)).toBe(true)
15
- } finally {
16
- environment._set(key, old)
17
- }
18
- })
19
-
20
- it.each(SECRETS)(
21
- "detects that a string does not contain a secret in: %s",
22
- key => {
23
- const needle = randomUUID()
24
- const haystack = `this does not contain a secret`
25
- const old = environment[key]
26
- environment._set(key, needle)
27
- try {
28
- expect(stringContainsSecret(haystack)).toBe(false)
29
- } finally {
30
- environment._set(key, old)
31
- }
32
- }
33
- )
34
- })
35
- })
@@ -1,12 +0,0 @@
1
- import * as sessions from "../sessions"
2
-
3
- describe("sessions", () => {
4
- describe("getSessionsForUser", () => {
5
- it("returns empty when user is undefined", async () => {
6
- // @ts-ignore - allow the undefined to be passed
7
- const results = await sessions.getSessionsForUser(undefined)
8
-
9
- expect(results).toStrictEqual([])
10
- })
11
- })
12
- })
@@ -1,17 +0,0 @@
1
- import { PreSaveSQLiteDefinition } from "@budibase/types"
2
- import { SQLITE_DESIGN_DOC_ID } from "../constants"
3
-
4
- // the table id property defines which property in the document
5
- // to use when splitting the documents into different sqlite tables
6
- export function base(tableIdProp: string): PreSaveSQLiteDefinition {
7
- return {
8
- _id: SQLITE_DESIGN_DOC_ID,
9
- language: "sqlite",
10
- sql: {
11
- tables: {},
12
- options: {
13
- table_name: tableIdProp,
14
- },
15
- },
16
- }
17
- }
package/src/sql/index.ts DELETED
@@ -1,5 +0,0 @@
1
- export * as utils from "./utils"
2
-
3
- export { default as Sql, COUNT_FIELD_NAME } from "./sql"
4
- export { default as SqlTable } from "./sqlTable"
5
- export * as designDoc from "./designDoc"