@nest-boot/row-level-security 7.3.0 → 8.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/decorators/policy.decorator.d.ts +4 -4
  2. package/dist/decorators/policy.decorator.js +25 -31
  3. package/dist/decorators/policy.decorator.js.map +1 -1
  4. package/dist/enums/policy-command.enum.js +2 -5
  5. package/dist/enums/policy-command.enum.js.map +1 -1
  6. package/dist/enums/policy-mode.enum.js +2 -5
  7. package/dist/enums/policy-mode.enum.js.map +1 -1
  8. package/dist/enums/row-level-security-role.enum.js +2 -5
  9. package/dist/enums/row-level-security-role.enum.js.map +1 -1
  10. package/dist/index.d.ts +11 -11
  11. package/dist/index.js +11 -27
  12. package/dist/index.js.map +1 -1
  13. package/dist/interfaces/index.d.ts +4 -4
  14. package/dist/interfaces/index.js +3 -19
  15. package/dist/interfaces/index.js.map +1 -1
  16. package/dist/interfaces/policy-metadata.interface.d.ts +2 -2
  17. package/dist/interfaces/policy-metadata.interface.js +1 -2
  18. package/dist/interfaces/policy-options.interface.d.ts +2 -2
  19. package/dist/interfaces/policy-options.interface.js +1 -2
  20. package/dist/interfaces/policy-sql-options.interface.d.ts +2 -2
  21. package/dist/interfaces/policy-sql-options.interface.js +1 -2
  22. package/dist/interfaces/row-level-security-migration-generator.interface.d.ts +1 -1
  23. package/dist/interfaces/row-level-security-migration-generator.interface.js +1 -2
  24. package/dist/row-level-security-driver.d.ts +4 -3
  25. package/dist/row-level-security-driver.js +8 -19
  26. package/dist/row-level-security-driver.js.map +1 -1
  27. package/dist/row-level-security-migration-generator.d.ts +1 -1
  28. package/dist/row-level-security-migration-generator.js +40 -41
  29. package/dist/row-level-security-migration-generator.js.map +1 -1
  30. package/dist/row-level-security-migration.d.ts +1 -1
  31. package/dist/row-level-security-migration.js +9 -13
  32. package/dist/row-level-security-migration.js.map +1 -1
  33. package/dist/row-level-security-migrator.d.ts +2 -2
  34. package/dist/row-level-security-migrator.js +9 -13
  35. package/dist/row-level-security-migrator.js.map +1 -1
  36. package/dist/row-level-security.d.ts +1 -1
  37. package/dist/row-level-security.js +19 -23
  38. package/dist/row-level-security.js.map +1 -1
  39. package/dist/utils/assert-identifier.js +1 -4
  40. package/dist/utils/assert-identifier.js.map +1 -1
  41. package/dist/utils/assert-snake-case.js +1 -4
  42. package/dist/utils/assert-snake-case.js.map +1 -1
  43. package/dist/utils/create-policy-bootstrap-sql-statements.js +1 -4
  44. package/dist/utils/create-policy-bootstrap-sql-statements.js.map +1 -1
  45. package/dist/utils/create-policy-down-sql.d.ts +1 -1
  46. package/dist/utils/create-policy-down-sql.js +5 -8
  47. package/dist/utils/create-policy-down-sql.js.map +1 -1
  48. package/dist/utils/create-policy-privilege-down-sql-statements.d.ts +1 -1
  49. package/dist/utils/create-policy-privilege-down-sql-statements.js +19 -22
  50. package/dist/utils/create-policy-privilege-down-sql-statements.js.map +1 -1
  51. package/dist/utils/create-policy-role-sql-statements.js +8 -13
  52. package/dist/utils/create-policy-role-sql-statements.js.map +1 -1
  53. package/dist/utils/create-policy-up-sql-statements.d.ts +1 -1
  54. package/dist/utils/create-policy-up-sql-statements.js +26 -29
  55. package/dist/utils/create-policy-up-sql-statements.js.map +1 -1
  56. package/dist/utils/create-row-level-security-transaction-setup.js +15 -18
  57. package/dist/utils/create-row-level-security-transaction-setup.js.map +1 -1
  58. package/dist/utils/escape-sql-literal.js +1 -4
  59. package/dist/utils/escape-sql-literal.js.map +1 -1
  60. package/dist/utils/index.d.ts +12 -12
  61. package/dist/utils/index.js +11 -27
  62. package/dist/utils/index.js.map +1 -1
  63. package/dist/utils/is-postgres-keyword-requiring-quote.js +1 -4
  64. package/dist/utils/is-postgres-keyword-requiring-quote.js.map +1 -1
  65. package/dist/utils/normalize-postgres-type-alias.util.js +1 -4
  66. package/dist/utils/normalize-postgres-type-alias.util.js.map +1 -1
  67. package/dist/utils/quote-identifier.js +3 -6
  68. package/dist/utils/quote-identifier.js.map +1 -1
  69. package/dist/utils/quote-qualified-identifier.js +3 -6
  70. package/dist/utils/quote-qualified-identifier.js.map +1 -1
  71. package/dist/utils/row-level-security-context-builder.d.ts +1 -1
  72. package/dist/utils/row-level-security-context-builder.js +7 -13
  73. package/dist/utils/row-level-security-context-builder.js.map +1 -1
  74. package/dist/utils/row-level-security-context-builder.types.js +1 -2
  75. package/package.json +31 -31
  76. package/dist/decorators/policy.decorator.spec.d.ts +0 -1
  77. package/dist/decorators/policy.decorator.spec.js +0 -550
  78. package/dist/decorators/policy.decorator.spec.js.map +0 -1
  79. package/dist/index.spec.d.ts +0 -1
  80. package/dist/index.spec.js +0 -64
  81. package/dist/index.spec.js.map +0 -1
  82. package/dist/row-level-security-driver.spec.d.ts +0 -1
  83. package/dist/row-level-security-driver.spec.js +0 -267
  84. package/dist/row-level-security-driver.spec.js.map +0 -1
  85. package/dist/row-level-security-migration-generator.spec.d.ts +0 -1
  86. package/dist/row-level-security-migration-generator.spec.js +0 -1135
  87. package/dist/row-level-security-migration-generator.spec.js.map +0 -1
  88. package/dist/row-level-security-migration.spec.d.ts +0 -1
  89. package/dist/row-level-security-migration.spec.js +0 -32
  90. package/dist/row-level-security-migration.spec.js.map +0 -1
  91. package/dist/row-level-security.spec.d.ts +0 -1
  92. package/dist/row-level-security.spec.js +0 -52
  93. package/dist/row-level-security.spec.js.map +0 -1
  94. package/dist/tsconfig.build.tsbuildinfo +0 -1
  95. package/dist/utils/normalize-postgres-type-alias.spec.d.ts +0 -1
  96. package/dist/utils/normalize-postgres-type-alias.spec.js +0 -28
  97. package/dist/utils/normalize-postgres-type-alias.spec.js.map +0 -1
  98. package/dist/utils/policy-migration-sql.spec.d.ts +0 -1
  99. package/dist/utils/policy-migration-sql.spec.js +0 -273
  100. package/dist/utils/policy-migration-sql.spec.js.map +0 -1
  101. package/dist/utils/row-level-security-context-builder.spec.d.ts +0 -1
  102. package/dist/utils/row-level-security-context-builder.spec.js +0 -40
  103. package/dist/utils/row-level-security-context-builder.spec.js.map +0 -1
@@ -1,550 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const policy_command_enum_1 = require("../enums/policy-command.enum");
10
- const policy_mode_enum_1 = require("../enums/policy-mode.enum");
11
- const policy_decorator_1 = require("./policy.decorator");
12
- describe("Policy decorator", () => {
13
- it("stores RLS policy metadata on the entity class", () => {
14
- let WorkspaceMember = class WorkspaceMember {
15
- };
16
- WorkspaceMember = __decorate([
17
- (0, policy_decorator_1.Policy)({
18
- name: "workspace_member_user_select_policy",
19
- command: policy_command_enum_1.PolicyCommand.SELECT,
20
- using: `((select current_setting('app.user_id', true)::bigint) = "user_id")`,
21
- })
22
- ], WorkspaceMember);
23
- expect((0, policy_decorator_1.getPolicyMetadata)(WorkspaceMember)).toEqual([
24
- {
25
- name: "workspace_member_user_select_policy",
26
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
27
- command: policy_command_enum_1.PolicyCommand.SELECT,
28
- using: `((select current_setting('app.user_id', true)::bigint) = "user_id")`,
29
- roles: [],
30
- },
31
- ]);
32
- });
33
- it("keeps multiple policies in declaration order", () => {
34
- let WorkspaceMember = class WorkspaceMember {
35
- };
36
- WorkspaceMember = __decorate([
37
- (0, policy_decorator_1.Policy)({
38
- name: "workspace_member_user_select_policy",
39
- command: policy_command_enum_1.PolicyCommand.SELECT,
40
- using: `((select current_setting('app.user_id', true)::bigint) = "user_id")`,
41
- }),
42
- (0, policy_decorator_1.Policy)({
43
- name: "tenant_access_policy",
44
- command: policy_command_enum_1.PolicyCommand.ALL,
45
- using: `((select current_setting('app.tenant_id', true)::bigint) = "workspace_id")`,
46
- withCheck: `((select current_setting('app.tenant_id', true)::bigint) = "workspace_id")`,
47
- })
48
- ], WorkspaceMember);
49
- expect((0, policy_decorator_1.getPolicyMetadata)(WorkspaceMember).map((policy) => policy.name)).toEqual(["tenant_access_policy", "workspace_member_user_select_policy"]);
50
- });
51
- it("stores restrictive policy mode", () => {
52
- let WorkspaceMember = class WorkspaceMember {
53
- };
54
- WorkspaceMember = __decorate([
55
- (0, policy_decorator_1.Policy)({
56
- name: "tenant_required_policy",
57
- mode: policy_mode_enum_1.PolicyMode.RESTRICTIVE,
58
- using: `((select current_setting('app.tenant_id', true)::bigint) is not null)`,
59
- })
60
- ], WorkspaceMember);
61
- expect((0, policy_decorator_1.getPolicyMetadata)(WorkspaceMember)[0]).toMatchObject({
62
- name: "tenant_required_policy",
63
- mode: policy_mode_enum_1.PolicyMode.RESTRICTIVE,
64
- command: policy_command_enum_1.PolicyCommand.ALL,
65
- });
66
- });
67
- it("generates policy expressions from property and context", () => {
68
- let WorkspaceMember = class WorkspaceMember {
69
- };
70
- WorkspaceMember = __decorate([
71
- (0, policy_decorator_1.Policy)({
72
- name: "workspace_member_user_select_policy",
73
- command: policy_command_enum_1.PolicyCommand.SELECT,
74
- property: "user",
75
- context: "user_id",
76
- })
77
- ], WorkspaceMember);
78
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
79
- entityName: "WorkspaceMember",
80
- schemaName: "public",
81
- tableName: "workspace_member",
82
- properties: {
83
- user: {
84
- fieldNames: ["user_id"],
85
- columnTypes: ["integer"],
86
- targetMeta: {
87
- primaryKeys: ["id"],
88
- properties: {
89
- id: {
90
- columnTypes: ["bigint"],
91
- },
92
- },
93
- },
94
- },
95
- },
96
- })).toEqual([
97
- {
98
- name: "workspace_member_user_select_policy",
99
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
100
- command: policy_command_enum_1.PolicyCommand.SELECT,
101
- using: `((select current_setting('app.user_id', true)::bigint) = user_id)`,
102
- roles: [],
103
- },
104
- ]);
105
- });
106
- it("generates a default policy name from table, property, and command", () => {
107
- let WorkspaceMember = class WorkspaceMember {
108
- };
109
- WorkspaceMember = __decorate([
110
- (0, policy_decorator_1.Policy)({
111
- command: policy_command_enum_1.PolicyCommand.SELECT,
112
- property: "user",
113
- context: "user_id",
114
- })
115
- ], WorkspaceMember);
116
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
117
- entityName: "WorkspaceMember",
118
- schemaName: "public",
119
- tableName: "workspace_member",
120
- properties: {
121
- user: {
122
- fieldNames: ["user_id"],
123
- columnTypes: ["bigint"],
124
- },
125
- },
126
- })).toEqual([
127
- {
128
- name: "workspace_member_user_select_policy",
129
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
130
- command: policy_command_enum_1.PolicyCommand.SELECT,
131
- using: `((select current_setting('app.user_id', true)::bigint) = user_id)`,
132
- roles: [],
133
- },
134
- ]);
135
- });
136
- it("generates a default policy name without a property", () => {
137
- let WorkspaceMember = class WorkspaceMember {
138
- };
139
- WorkspaceMember = __decorate([
140
- (0, policy_decorator_1.Policy)({
141
- command: policy_command_enum_1.PolicyCommand.SELECT,
142
- using: "true",
143
- })
144
- ], WorkspaceMember);
145
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
146
- entityName: "WorkspaceMember",
147
- schemaName: "public",
148
- tableName: "workspace_member",
149
- })).toEqual([
150
- {
151
- name: "workspace_member_select_policy",
152
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
153
- command: policy_command_enum_1.PolicyCommand.SELECT,
154
- using: "true",
155
- roles: [],
156
- },
157
- ]);
158
- });
159
- it("uses explicit predicates over generated property context expressions", () => {
160
- let WorkspaceMember = class WorkspaceMember {
161
- };
162
- WorkspaceMember = __decorate([
163
- (0, policy_decorator_1.Policy)({
164
- name: "workspace_member_write_policy",
165
- property: "workspace",
166
- context: "tenant_id",
167
- using: "true",
168
- withCheck: "false",
169
- })
170
- ], WorkspaceMember);
171
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
172
- entityName: "WorkspaceMember",
173
- schemaName: "public",
174
- tableName: "workspace_member",
175
- properties: {
176
- workspace: {
177
- fieldNames: ["workspace_id"],
178
- columnTypes: ["bigint"],
179
- },
180
- },
181
- })).toEqual([
182
- {
183
- name: "workspace_member_write_policy",
184
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
185
- command: policy_command_enum_1.PolicyCommand.ALL,
186
- using: "true",
187
- withCheck: "false",
188
- roles: [],
189
- },
190
- ]);
191
- });
192
- it("sorts roles in generated policy names", () => {
193
- let WorkspaceMember = class WorkspaceMember {
194
- };
195
- WorkspaceMember = __decorate([
196
- (0, policy_decorator_1.Policy)({
197
- command: policy_command_enum_1.PolicyCommand.SELECT,
198
- property: "user",
199
- context: "user_id",
200
- roles: ["memberRole", "adminRole"],
201
- })
202
- ], WorkspaceMember);
203
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
204
- entityName: "WorkspaceMember",
205
- schemaName: "public",
206
- tableName: "workspace_member",
207
- properties: {
208
- user: {
209
- fieldNames: ["user_id"],
210
- columnTypes: ["bigint"],
211
- },
212
- },
213
- })[0]).toMatchObject({
214
- name: "workspace_member_user_select_admin_role_member_role_policy",
215
- roles: ["memberRole", "adminRole"],
216
- });
217
- });
218
- it("generates insert predicates from property and context", () => {
219
- let WorkspaceMember = class WorkspaceMember {
220
- };
221
- WorkspaceMember = __decorate([
222
- (0, policy_decorator_1.Policy)({
223
- command: policy_command_enum_1.PolicyCommand.INSERT,
224
- property: "user",
225
- context: "user_id",
226
- })
227
- ], WorkspaceMember);
228
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
229
- entityName: "WorkspaceMember",
230
- schemaName: "public",
231
- tableName: "workspace_member",
232
- properties: {
233
- user: {
234
- fieldNames: ["user_id"],
235
- columnTypes: ["bigint"],
236
- },
237
- },
238
- })).toEqual([
239
- {
240
- name: "workspace_member_user_insert_policy",
241
- mode: policy_mode_enum_1.PolicyMode.PERMISSIVE,
242
- command: policy_command_enum_1.PolicyCommand.INSERT,
243
- withCheck: `((select current_setting('app.user_id', true)::bigint) = user_id)`,
244
- roles: [],
245
- },
246
- ]);
247
- });
248
- it("generates all-command predicates from property and context", () => {
249
- let WorkspaceMember = class WorkspaceMember {
250
- };
251
- WorkspaceMember = __decorate([
252
- (0, policy_decorator_1.Policy)({
253
- property: "workspace",
254
- context: "tenant_id",
255
- })
256
- ], WorkspaceMember);
257
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
258
- entityName: "WorkspaceMember",
259
- schemaName: "public",
260
- tableName: "workspace_member",
261
- properties: {
262
- workspace: {
263
- fieldNames: ["workspace_id"],
264
- runtimeType: "number",
265
- },
266
- },
267
- })[0]).toMatchObject({
268
- name: "workspace_member_workspace_all_policy",
269
- using: `((select current_setting('app.tenant_id', true)::integer) = workspace_id)`,
270
- withCheck: `((select current_setting('app.tenant_id', true)::integer) = workspace_id)`,
271
- });
272
- });
273
- it.each([
274
- ["bigint", "bigint"],
275
- ["boolean", "boolean"],
276
- ["Date", "timestamp with time zone"],
277
- ["text", "text"],
278
- ["uuid", "uuid"],
279
- ])("maps %s property types to policy context types", (type, postgresType) => {
280
- let WorkspaceMember = class WorkspaceMember {
281
- };
282
- WorkspaceMember = __decorate([
283
- (0, policy_decorator_1.Policy)({
284
- command: policy_command_enum_1.PolicyCommand.SELECT,
285
- property: "contextValue",
286
- context: "context_value",
287
- })
288
- ], WorkspaceMember);
289
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
290
- entityName: "WorkspaceMember",
291
- schemaName: "public",
292
- tableName: "workspace_member",
293
- properties: {
294
- contextValue: {
295
- fieldName: "context_value",
296
- type,
297
- },
298
- },
299
- })[0]).toMatchObject({
300
- using: `((select current_setting('app.context_value', true)::${postgresType}) = context_value)`,
301
- });
302
- });
303
- it.each([
304
- ["int", "integer"],
305
- ["varchar(255)", "character varying"],
306
- ["timestamptz", "timestamp with time zone"],
307
- ])("canonicalizes %s database column type aliases in generated expressions", (columnType, postgresType) => {
308
- let WorkspaceMember = class WorkspaceMember {
309
- };
310
- WorkspaceMember = __decorate([
311
- (0, policy_decorator_1.Policy)({
312
- command: policy_command_enum_1.PolicyCommand.SELECT,
313
- property: "workspace",
314
- context: "workspace_id",
315
- })
316
- ], WorkspaceMember);
317
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
318
- entityName: "WorkspaceMember",
319
- schemaName: "public",
320
- tableName: "workspace_member",
321
- properties: {
322
- workspace: {
323
- fieldName: "workspace_id",
324
- columnTypes: [columnType],
325
- },
326
- },
327
- })[0]).toMatchObject({
328
- using: `((select current_setting('app.workspace_id', true)::${postgresType}) = workspace_id)`,
329
- });
330
- });
331
- it.each(["authorization", "between", "binary", "order"])("preserves quotes for PostgreSQL keyword column name %s", (fieldName) => {
332
- let WorkspaceMember = class WorkspaceMember {
333
- };
334
- WorkspaceMember = __decorate([
335
- (0, policy_decorator_1.Policy)({
336
- command: policy_command_enum_1.PolicyCommand.SELECT,
337
- property: "order",
338
- context: "order_id",
339
- })
340
- ], WorkspaceMember);
341
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
342
- entityName: "WorkspaceMember",
343
- schemaName: "public",
344
- tableName: "workspace_member",
345
- properties: {
346
- order: {
347
- fieldName,
348
- columnTypes: ["integer"],
349
- },
350
- },
351
- })[0]).toMatchObject({
352
- using: `((select current_setting('app.order_id', true)::integer) = "${fieldName}")`,
353
- });
354
- });
355
- it("infers target primary key metadata from a primary property marker", () => {
356
- let WorkspaceMember = class WorkspaceMember {
357
- };
358
- WorkspaceMember = __decorate([
359
- (0, policy_decorator_1.Policy)({
360
- command: policy_command_enum_1.PolicyCommand.SELECT,
361
- property: "user",
362
- context: "user_id",
363
- })
364
- ], WorkspaceMember);
365
- expect((0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
366
- entityName: "WorkspaceMember",
367
- schemaName: "public",
368
- tableName: "workspace_member",
369
- properties: {
370
- user: {
371
- fieldNames: ["user_id"],
372
- targetMeta: {
373
- properties: {
374
- id: {
375
- primary: true,
376
- runtimeType: "uuid",
377
- },
378
- },
379
- },
380
- },
381
- },
382
- })[0]).toMatchObject({
383
- using: `((select current_setting('app.user_id', true)::uuid) = user_id)`,
384
- });
385
- });
386
- it("rejects an empty policy name when provided", () => {
387
- expect(() => (0, policy_decorator_1.Policy)({
388
- name: "",
389
- using: `((select current_setting('app.tenant_id', true)::bigint) = "workspace_id")`,
390
- })).toThrow("Policy name is required");
391
- });
392
- it("rejects a select policy without using", () => {
393
- expect(() => (0, policy_decorator_1.Policy)({
394
- name: "tenant_access_policy",
395
- command: policy_command_enum_1.PolicyCommand.SELECT,
396
- })).toThrow("Policy using expression is required");
397
- });
398
- it("requires property and context to be provided together", () => {
399
- expect(() => (0, policy_decorator_1.Policy)({
400
- name: "tenant_access_policy",
401
- property: "workspace",
402
- })).toThrow("Policy property and context must be provided together");
403
- });
404
- it("rejects a select policy with withCheck", () => {
405
- expect(() => (0, policy_decorator_1.Policy)({
406
- name: "tenant_access_policy",
407
- command: policy_command_enum_1.PolicyCommand.SELECT,
408
- using: `((select current_setting('app.tenant_id', true)::bigint) = "workspace_id")`,
409
- withCheck: `((select current_setting('app.tenant_id', true)::bigint) = "workspace_id")`,
410
- })).toThrow("Policy withCheck is not allowed for select");
411
- });
412
- it.each([
413
- [
414
- "insert policy with using",
415
- () => (0, policy_decorator_1.Policy)({
416
- command: policy_command_enum_1.PolicyCommand.INSERT,
417
- using: "true",
418
- withCheck: "true",
419
- }),
420
- "Policy using is not allowed for insert",
421
- ],
422
- [
423
- "insert policy without withCheck",
424
- () => (0, policy_decorator_1.Policy)({
425
- command: policy_command_enum_1.PolicyCommand.INSERT,
426
- }),
427
- "Policy withCheck expression is required",
428
- ],
429
- [
430
- "all policy without predicates",
431
- () => (0, policy_decorator_1.Policy)({
432
- name: "workspace_member_all_policy",
433
- }),
434
- "Policy using or withCheck expression is required",
435
- ],
436
- ])("rejects %s", (_name, createPolicy, message) => {
437
- expect(createPolicy).toThrow(message);
438
- });
439
- it.each([
440
- [
441
- "missing property metadata",
442
- {
443
- properties: {},
444
- },
445
- `Policy property "user" was not found on entity WorkspaceMember`,
446
- ],
447
- [
448
- "multiple column names",
449
- {
450
- properties: {
451
- user: {
452
- fieldNames: ["user_id", "tenant_id"],
453
- columnTypes: ["bigint"],
454
- },
455
- },
456
- },
457
- `Policy property "user" on entity WorkspaceMember must resolve to exactly one database column`,
458
- ],
459
- [
460
- "target with multiple primary keys",
461
- {
462
- properties: {
463
- user: {
464
- fieldNames: ["user_id"],
465
- targetMeta: {
466
- primaryKeys: ["id", "tenantId"],
467
- properties: {
468
- id: {
469
- columnTypes: ["bigint"],
470
- },
471
- tenantId: {
472
- columnTypes: ["bigint"],
473
- },
474
- },
475
- },
476
- },
477
- },
478
- },
479
- `Policy property "user" on entity WorkspaceMember must target an entity with exactly one primary key`,
480
- ],
481
- [
482
- "target without primary key metadata",
483
- {
484
- properties: {
485
- user: {
486
- fieldNames: ["user_id"],
487
- targetMeta: {
488
- primaryKeys: ["id"],
489
- properties: {},
490
- },
491
- },
492
- },
493
- },
494
- `Policy property "user" on entity WorkspaceMember must expose target primary key metadata`,
495
- ],
496
- [
497
- "multiple column types",
498
- {
499
- properties: {
500
- user: {
501
- fieldNames: ["user_id"],
502
- columnTypes: ["bigint", "uuid"],
503
- },
504
- },
505
- },
506
- `Policy property "user" on entity WorkspaceMember must resolve to exactly one database column type`,
507
- ],
508
- [
509
- "unsupported database column type",
510
- {
511
- properties: {
512
- user: {
513
- fieldNames: ["user_id"],
514
- columnTypes: ["bigint; drop table users"],
515
- },
516
- },
517
- },
518
- `Policy property "user" on entity WorkspaceMember has an unsupported database column type: bigint; drop table users`,
519
- ],
520
- [
521
- "missing database column type",
522
- {
523
- properties: {
524
- user: {
525
- fieldNames: ["user_id"],
526
- type: "unknown",
527
- },
528
- },
529
- },
530
- `Policy property "user" on entity WorkspaceMember must expose a database column type`,
531
- ],
532
- ])("rejects generated policy for %s", (_name, metadata, message) => {
533
- let WorkspaceMember = class WorkspaceMember {
534
- };
535
- WorkspaceMember = __decorate([
536
- (0, policy_decorator_1.Policy)({
537
- command: policy_command_enum_1.PolicyCommand.SELECT,
538
- property: "user",
539
- context: "user_id",
540
- })
541
- ], WorkspaceMember);
542
- expect(() => (0, policy_decorator_1.getPolicyDefinitions)(WorkspaceMember, {
543
- entityName: "WorkspaceMember",
544
- schemaName: "public",
545
- tableName: "workspace_member",
546
- ...metadata,
547
- })).toThrow(message);
548
- });
549
- });
550
- //# sourceMappingURL=policy.decorator.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.decorator.spec.js","sourceRoot":"","sources":["../../src/decorators/policy.decorator.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const rowLevelSecurity = __importStar(require("."));
37
- const rowLevelSecurityUtils = __importStar(require("./utils"));
38
- describe("row level security package exports", () => {
39
- it("exports the public package API", () => {
40
- expect(rowLevelSecurity.Policy).toBeDefined();
41
- expect(rowLevelSecurity.PolicyCommand.SELECT).toBe("select");
42
- expect(rowLevelSecurity.PolicyMode.PERMISSIVE).toBe("permissive");
43
- expect(rowLevelSecurity.RowLevelSecurity).toBeDefined();
44
- expect(rowLevelSecurity.RowLevelSecurityMode.AUTO).toBe("auto");
45
- expect(rowLevelSecurity.RowLevelSecurityRole.ANONYMOUS).toBe("anonymous");
46
- expect(rowLevelSecurity.RowLevelSecurityConnection).toBeDefined();
47
- expect(rowLevelSecurity.RowLevelSecurityDriver).toBeDefined();
48
- expect(rowLevelSecurity.RowLevelSecurityMigration).toBeDefined();
49
- expect(rowLevelSecurity.RowLevelSecurityMigrationGenerator).toBeDefined();
50
- expect(rowLevelSecurity.RowLevelSecurityMigrator).toBeDefined();
51
- expect(rowLevelSecurity.createPolicyUpSqlStatements).toBeDefined();
52
- });
53
- it("exports utility helpers", () => {
54
- expect(rowLevelSecurityUtils.assertIdentifier("valid_identifier")).toBe("valid_identifier");
55
- expect(() => rowLevelSecurityUtils.assertIdentifier("invalid-identifier")).toThrow("Invalid SQL identifier: invalid-identifier");
56
- expect(rowLevelSecurityUtils.createPolicyBootstrapSqlStatements()).toEqual([]);
57
- expect(rowLevelSecurityUtils.createPolicyRoleUpSqlStatements()).toEqual([]);
58
- });
59
- it("exports migration generator types", () => {
60
- const diff = { down: [], up: [] };
61
- expect(diff).toEqual({ down: [], up: [] });
62
- });
63
- });
64
- //# sourceMappingURL=index.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAAsC;AACtC,+DAAiD;AAEjD,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjE,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CACrE,kBAAkB,CACnB,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CACV,qBAAqB,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAC7D,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,kCAAkC,EAAE,CAAC,CAAC,OAAO,CACxE,EAAE,CACH,CAAC;QACF,MAAM,CAAC,qBAAqB,CAAC,+BAA+B,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};