@budibase/backend-core 3.2.4 → 3.2.6

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 (272) hide show
  1. package/dist/index.js.map +1 -1
  2. package/dist/index.js.meta.json +1 -1
  3. package/dist/package.json +11 -4
  4. package/dist/plugins.js.meta.json +1 -1
  5. package/package.json +11 -4
  6. package/src/accounts/accounts.ts +0 -82
  7. package/src/accounts/api.ts +0 -59
  8. package/src/accounts/index.ts +0 -1
  9. package/src/auth/auth.ts +0 -210
  10. package/src/auth/index.ts +0 -1
  11. package/src/auth/tests/auth.spec.ts +0 -14
  12. package/src/blacklist/blacklist.ts +0 -54
  13. package/src/blacklist/index.ts +0 -1
  14. package/src/blacklist/tests/blacklist.spec.ts +0 -46
  15. package/src/cache/appMetadata.ts +0 -88
  16. package/src/cache/base/index.ts +0 -150
  17. package/src/cache/docWritethrough.ts +0 -105
  18. package/src/cache/generic.ts +0 -33
  19. package/src/cache/index.ts +0 -8
  20. package/src/cache/invite.ts +0 -86
  21. package/src/cache/passwordReset.ts +0 -49
  22. package/src/cache/tests/docWritethrough.spec.ts +0 -296
  23. package/src/cache/tests/user.spec.ts +0 -145
  24. package/src/cache/tests/writethrough.spec.ts +0 -139
  25. package/src/cache/user.ts +0 -154
  26. package/src/cache/writethrough.ts +0 -133
  27. package/src/configs/configs.ts +0 -263
  28. package/src/configs/index.ts +0 -1
  29. package/src/configs/tests/configs.spec.ts +0 -184
  30. package/src/constants/db.ts +0 -75
  31. package/src/constants/index.ts +0 -2
  32. package/src/constants/misc.ts +0 -36
  33. package/src/context/Context.ts +0 -14
  34. package/src/context/identity.ts +0 -58
  35. package/src/context/index.ts +0 -3
  36. package/src/context/mainContext.ts +0 -422
  37. package/src/context/tests/index.spec.ts +0 -255
  38. package/src/context/types.ts +0 -26
  39. package/src/db/Replication.ts +0 -94
  40. package/src/db/couch/DatabaseImpl.ts +0 -511
  41. package/src/db/couch/connections.ts +0 -89
  42. package/src/db/couch/index.ts +0 -4
  43. package/src/db/couch/pouchDB.ts +0 -97
  44. package/src/db/couch/pouchDump.ts +0 -0
  45. package/src/db/couch/tests/DatabaseImpl.spec.ts +0 -118
  46. package/src/db/couch/utils.ts +0 -55
  47. package/src/db/db.ts +0 -34
  48. package/src/db/errors.ts +0 -14
  49. package/src/db/index.ts +0 -12
  50. package/src/db/instrumentation.ts +0 -199
  51. package/src/db/lucene.ts +0 -721
  52. package/src/db/searchIndexes/index.ts +0 -1
  53. package/src/db/searchIndexes/searchIndexes.ts +0 -62
  54. package/src/db/tests/DatabaseImpl.spec.ts +0 -55
  55. package/src/db/tests/connections.spec.ts +0 -22
  56. package/src/db/tests/index.spec.ts +0 -32
  57. package/src/db/tests/lucene.spec.ts +0 -400
  58. package/src/db/tests/pouch.spec.js +0 -62
  59. package/src/db/tests/utils.spec.ts +0 -63
  60. package/src/db/utils.ts +0 -208
  61. package/src/db/views.ts +0 -245
  62. package/src/docIds/conversions.ts +0 -60
  63. package/src/docIds/ids.ts +0 -126
  64. package/src/docIds/index.ts +0 -2
  65. package/src/docIds/newid.ts +0 -5
  66. package/src/docIds/params.ts +0 -189
  67. package/src/docUpdates/index.ts +0 -24
  68. package/src/environment.ts +0 -293
  69. package/src/errors/errors.ts +0 -119
  70. package/src/errors/index.ts +0 -1
  71. package/src/events/analytics.ts +0 -6
  72. package/src/events/asyncEvents/index.ts +0 -2
  73. package/src/events/asyncEvents/publisher.ts +0 -12
  74. package/src/events/asyncEvents/queue.ts +0 -22
  75. package/src/events/backfill.ts +0 -183
  76. package/src/events/documentId.ts +0 -56
  77. package/src/events/events.ts +0 -47
  78. package/src/events/identification.ts +0 -311
  79. package/src/events/index.ts +0 -15
  80. package/src/events/processors/AnalyticsProcessor.ts +0 -64
  81. package/src/events/processors/AuditLogsProcessor.ts +0 -92
  82. package/src/events/processors/LoggingProcessor.ts +0 -36
  83. package/src/events/processors/Processors.ts +0 -52
  84. package/src/events/processors/async/DocumentUpdateProcessor.ts +0 -38
  85. package/src/events/processors/index.ts +0 -19
  86. package/src/events/processors/posthog/PosthogProcessor.ts +0 -118
  87. package/src/events/processors/posthog/index.ts +0 -3
  88. package/src/events/processors/posthog/rateLimiting.ts +0 -106
  89. package/src/events/processors/posthog/tests/PosthogProcessor.spec.ts +0 -164
  90. package/src/events/processors/types.ts +0 -1
  91. package/src/events/publishers/account.ts +0 -41
  92. package/src/events/publishers/ai.ts +0 -21
  93. package/src/events/publishers/app.ts +0 -168
  94. package/src/events/publishers/auditLog.ts +0 -26
  95. package/src/events/publishers/auth.ts +0 -73
  96. package/src/events/publishers/automation.ts +0 -110
  97. package/src/events/publishers/backfill.ts +0 -74
  98. package/src/events/publishers/backup.ts +0 -42
  99. package/src/events/publishers/datasource.ts +0 -48
  100. package/src/events/publishers/email.ts +0 -17
  101. package/src/events/publishers/environmentVariable.ts +0 -38
  102. package/src/events/publishers/group.ts +0 -99
  103. package/src/events/publishers/index.ts +0 -25
  104. package/src/events/publishers/installation.ts +0 -38
  105. package/src/events/publishers/layout.ts +0 -26
  106. package/src/events/publishers/license.ts +0 -84
  107. package/src/events/publishers/org.ts +0 -37
  108. package/src/events/publishers/plugin.ts +0 -47
  109. package/src/events/publishers/query.ts +0 -89
  110. package/src/events/publishers/role.ts +0 -62
  111. package/src/events/publishers/rows.ts +0 -29
  112. package/src/events/publishers/screen.ts +0 -36
  113. package/src/events/publishers/serve.ts +0 -43
  114. package/src/events/publishers/table.ts +0 -70
  115. package/src/events/publishers/user.ts +0 -202
  116. package/src/events/publishers/view.ts +0 -107
  117. package/src/features/features.ts +0 -277
  118. package/src/features/index.ts +0 -2
  119. package/src/features/tests/features.spec.ts +0 -267
  120. package/src/features/tests/utils.ts +0 -64
  121. package/src/helpers.ts +0 -9
  122. package/src/index.ts +0 -59
  123. package/src/installation.ts +0 -115
  124. package/src/logging/alerts.ts +0 -26
  125. package/src/logging/correlation/correlation.ts +0 -15
  126. package/src/logging/correlation/index.ts +0 -1
  127. package/src/logging/correlation/middleware.ts +0 -18
  128. package/src/logging/index.ts +0 -4
  129. package/src/logging/pino/logger.ts +0 -239
  130. package/src/logging/pino/middleware.ts +0 -48
  131. package/src/logging/system.ts +0 -81
  132. package/src/logging/tests/system.spec.ts +0 -61
  133. package/src/middleware/adminOnly.ts +0 -9
  134. package/src/middleware/auditLog.ts +0 -6
  135. package/src/middleware/authenticated.ts +0 -247
  136. package/src/middleware/builderOnly.ts +0 -21
  137. package/src/middleware/builderOrAdmin.ts +0 -21
  138. package/src/middleware/contentSecurityPolicy.ts +0 -113
  139. package/src/middleware/csrf.ts +0 -81
  140. package/src/middleware/errorHandling.ts +0 -43
  141. package/src/middleware/index.ts +0 -24
  142. package/src/middleware/internalApi.ts +0 -23
  143. package/src/middleware/ip.ts +0 -12
  144. package/src/middleware/joi-validator.ts +0 -58
  145. package/src/middleware/matchers.ts +0 -39
  146. package/src/middleware/passport/datasource/google.ts +0 -102
  147. package/src/middleware/passport/local.ts +0 -54
  148. package/src/middleware/passport/sso/google.ts +0 -77
  149. package/src/middleware/passport/sso/oidc.ts +0 -152
  150. package/src/middleware/passport/sso/sso.ts +0 -138
  151. package/src/middleware/passport/sso/tests/google.spec.ts +0 -68
  152. package/src/middleware/passport/sso/tests/oidc.spec.ts +0 -144
  153. package/src/middleware/passport/sso/tests/sso.spec.ts +0 -197
  154. package/src/middleware/passport/utils.ts +0 -38
  155. package/src/middleware/querystringToBody.ts +0 -28
  156. package/src/middleware/tenancy.ts +0 -36
  157. package/src/middleware/tests/builder.spec.ts +0 -181
  158. package/src/middleware/tests/contentSecurityPolicy.spec.ts +0 -75
  159. package/src/middleware/tests/matchers.spec.ts +0 -100
  160. package/src/migrations/definitions.ts +0 -40
  161. package/src/migrations/index.ts +0 -2
  162. package/src/migrations/migrations.ts +0 -186
  163. package/src/migrations/tests/__snapshots__/migrations.spec.ts.snap +0 -11
  164. package/src/migrations/tests/migrations.spec.ts +0 -64
  165. package/src/objectStore/buckets/app.ts +0 -53
  166. package/src/objectStore/buckets/global.ts +0 -29
  167. package/src/objectStore/buckets/index.ts +0 -3
  168. package/src/objectStore/buckets/plugins.ts +0 -71
  169. package/src/objectStore/buckets/tests/app.spec.ts +0 -161
  170. package/src/objectStore/buckets/tests/global.spec.ts +0 -74
  171. package/src/objectStore/buckets/tests/plugins.spec.ts +0 -111
  172. package/src/objectStore/cloudfront.ts +0 -41
  173. package/src/objectStore/index.ts +0 -3
  174. package/src/objectStore/objectStore.ts +0 -585
  175. package/src/objectStore/utils.ts +0 -113
  176. package/src/platform/index.ts +0 -3
  177. package/src/platform/platformDb.ts +0 -6
  178. package/src/platform/tenants.ts +0 -101
  179. package/src/platform/tests/tenants.spec.ts +0 -26
  180. package/src/platform/users.ts +0 -129
  181. package/src/plugin/index.ts +0 -1
  182. package/src/plugin/tests/validation.spec.ts +0 -209
  183. package/src/plugin/utils.ts +0 -175
  184. package/src/queue/constants.ts +0 -8
  185. package/src/queue/inMemoryQueue.ts +0 -189
  186. package/src/queue/index.ts +0 -2
  187. package/src/queue/listeners.ts +0 -199
  188. package/src/queue/queue.ts +0 -84
  189. package/src/redis/index.ts +0 -6
  190. package/src/redis/init.ts +0 -118
  191. package/src/redis/redis.ts +0 -358
  192. package/src/redis/redlockImpl.ts +0 -155
  193. package/src/redis/tests/redis.spec.ts +0 -207
  194. package/src/redis/tests/redlockImpl.spec.ts +0 -105
  195. package/src/redis/utils.ts +0 -128
  196. package/src/security/auth.ts +0 -24
  197. package/src/security/encryption.ts +0 -185
  198. package/src/security/index.ts +0 -1
  199. package/src/security/permissions.ts +0 -166
  200. package/src/security/roles.ts +0 -655
  201. package/src/security/secrets.ts +0 -20
  202. package/src/security/sessions.ts +0 -123
  203. package/src/security/tests/auth.spec.ts +0 -45
  204. package/src/security/tests/encryption.spec.ts +0 -31
  205. package/src/security/tests/permissions.spec.ts +0 -146
  206. package/src/security/tests/secrets.spec.ts +0 -35
  207. package/src/security/tests/sessions.spec.ts +0 -12
  208. package/src/sql/designDoc.ts +0 -17
  209. package/src/sql/index.ts +0 -5
  210. package/src/sql/sql.ts +0 -1854
  211. package/src/sql/sqlTable.ts +0 -319
  212. package/src/sql/utils.ts +0 -193
  213. package/src/tenancy/db.ts +0 -6
  214. package/src/tenancy/index.ts +0 -2
  215. package/src/tenancy/tenancy.ts +0 -148
  216. package/src/tenancy/tests/tenancy.spec.ts +0 -184
  217. package/src/timers/index.ts +0 -1
  218. package/src/timers/timers.ts +0 -22
  219. package/src/users/db.ts +0 -582
  220. package/src/users/events.ts +0 -176
  221. package/src/users/index.ts +0 -4
  222. package/src/users/lookup.ts +0 -99
  223. package/src/users/test/db.spec.ts +0 -188
  224. package/src/users/test/utils.spec.ts +0 -67
  225. package/src/users/users.ts +0 -353
  226. package/src/users/utils.ts +0 -81
  227. package/src/utils/Duration.ts +0 -56
  228. package/src/utils/hashing.ts +0 -15
  229. package/src/utils/index.ts +0 -4
  230. package/src/utils/stringUtils.ts +0 -8
  231. package/src/utils/tests/Duration.spec.ts +0 -19
  232. package/src/utils/tests/utils.spec.ts +0 -204
  233. package/src/utils/utils.ts +0 -249
  234. package/tests/core/logging.ts +0 -34
  235. package/tests/core/users/users.spec.js +0 -53
  236. package/tests/core/utilities/index.ts +0 -7
  237. package/tests/core/utilities/jestUtils.ts +0 -33
  238. package/tests/core/utilities/mocks/alerts.ts +0 -4
  239. package/tests/core/utilities/mocks/date.ts +0 -3
  240. package/tests/core/utilities/mocks/events.ts +0 -132
  241. package/tests/core/utilities/mocks/index.ts +0 -9
  242. package/tests/core/utilities/mocks/licenses.ts +0 -119
  243. package/tests/core/utilities/queue.ts +0 -9
  244. package/tests/core/utilities/structures/Chance.ts +0 -20
  245. package/tests/core/utilities/structures/accounts.ts +0 -80
  246. package/tests/core/utilities/structures/apps.ts +0 -21
  247. package/tests/core/utilities/structures/common.ts +0 -7
  248. package/tests/core/utilities/structures/db.ts +0 -12
  249. package/tests/core/utilities/structures/documents/index.ts +0 -1
  250. package/tests/core/utilities/structures/documents/platform/index.ts +0 -1
  251. package/tests/core/utilities/structures/documents/platform/installation.ts +0 -12
  252. package/tests/core/utilities/structures/generator.ts +0 -3
  253. package/tests/core/utilities/structures/index.ts +0 -15
  254. package/tests/core/utilities/structures/koa.ts +0 -16
  255. package/tests/core/utilities/structures/licenses.ts +0 -190
  256. package/tests/core/utilities/structures/plugins.ts +0 -19
  257. package/tests/core/utilities/structures/quotas.ts +0 -72
  258. package/tests/core/utilities/structures/scim.ts +0 -80
  259. package/tests/core/utilities/structures/sso.ts +0 -118
  260. package/tests/core/utilities/structures/tenants.ts +0 -5
  261. package/tests/core/utilities/structures/userGroups.ts +0 -10
  262. package/tests/core/utilities/structures/users.ts +0 -89
  263. package/tests/core/utilities/testContainerUtils.ts +0 -165
  264. package/tests/core/utilities/utils/index.ts +0 -2
  265. package/tests/core/utilities/utils/queue.ts +0 -27
  266. package/tests/core/utilities/utils/time.ts +0 -3
  267. package/tests/extra/DBTestConfiguration.ts +0 -36
  268. package/tests/extra/index.ts +0 -2
  269. package/tests/extra/testEnv.ts +0 -95
  270. package/tests/index.ts +0 -2
  271. package/tests/jestEnv.ts +0 -10
  272. 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"