1
- import { loadSchema } from '@zenstackhq/testtools' ;
1
+ import { SchemaLoadOptions , loadSchema } from '@zenstackhq/testtools' ;
2
2
3
3
describe ( 'Permission checker' , ( ) => {
4
- it ( 'empty rules' , async ( ) => {
4
+ const PRELUDE = `
5
+ datasource db {
6
+ provider = 'sqlite'
7
+ url = 'file:./dev.db'
8
+ }
9
+
10
+ generator js {
11
+ provider = 'prisma-client-js'
12
+ }
13
+
14
+ plugin enhancer {
15
+ provider = '@core/enhancer'
16
+ generatePermissionChecker = true
17
+ }
18
+ ` ;
19
+
20
+ const load = ( schema : string , options ?: SchemaLoadOptions ) =>
21
+ loadSchema ( `${ PRELUDE } \n${ schema } ` , {
22
+ ...options ,
23
+ addPrelude : false ,
24
+ } ) ;
25
+
26
+ it ( 'checker generation not enabled' , async ( ) => {
5
27
const { enhance } = await loadSchema (
28
+ `
29
+ model Model {
30
+ id Int @id @default(autoincrement())
31
+ value Int
32
+ @@allow('all', true)
33
+ }
34
+ `
35
+ ) ;
36
+ const db = enhance ( ) ;
37
+ await expect ( db . model . check ( 'read' ) ) . toResolveFalsy ( ) ;
38
+ } ) ;
39
+
40
+ it ( 'empty rules' , async ( ) => {
41
+ const { enhance } = await load (
6
42
`
7
43
model Model {
8
44
id Int @id @default(autoincrement())
@@ -16,7 +52,7 @@ describe('Permission checker', () => {
16
52
} ) ;
17
53
18
54
it ( 'unconditional allow' , async ( ) => {
19
- const { enhance } = await loadSchema (
55
+ const { enhance } = await load (
20
56
`
21
57
model Model {
22
58
id Int @id @default(autoincrement())
@@ -31,7 +67,7 @@ describe('Permission checker', () => {
31
67
} ) ;
32
68
33
69
it ( 'deny rule' , async ( ) => {
34
- const { enhance } = await loadSchema (
70
+ const { enhance } = await load (
35
71
`
36
72
model Model {
37
73
id Int @id @default(autoincrement())
@@ -49,7 +85,7 @@ describe('Permission checker', () => {
49
85
} ) ;
50
86
51
87
it ( 'int field condition' , async ( ) => {
52
- const { enhance } = await loadSchema (
88
+ const { enhance } = await load (
53
89
`
54
90
model Model {
55
91
id Int @id @default(autoincrement())
@@ -82,7 +118,7 @@ describe('Permission checker', () => {
82
118
} ) ;
83
119
84
120
it ( 'boolean field toplevel condition' , async ( ) => {
85
- const { enhance } = await loadSchema (
121
+ const { enhance } = await load (
86
122
`
87
123
model Model {
88
124
id Int @id @default(autoincrement())
@@ -99,7 +135,7 @@ describe('Permission checker', () => {
99
135
} ) ;
100
136
101
137
it ( 'boolean field condition' , async ( ) => {
102
- const { enhance } = await loadSchema (
138
+ const { enhance } = await load (
103
139
`
104
140
model Model {
105
141
id Int @id @default(autoincrement())
@@ -131,7 +167,7 @@ describe('Permission checker', () => {
131
167
} ) ;
132
168
133
169
it ( 'string field condition' , async ( ) => {
134
- const { enhance } = await loadSchema (
170
+ const { enhance } = await load (
135
171
`
136
172
model Model {
137
173
id Int @id @default(autoincrement())
@@ -148,7 +184,7 @@ describe('Permission checker', () => {
148
184
} ) ;
149
185
150
186
it ( 'function noop' , async ( ) => {
151
- const { enhance } = await loadSchema (
187
+ const { enhance } = await load (
152
188
`
153
189
model Model {
154
190
id Int @id @default(autoincrement())
@@ -169,7 +205,7 @@ describe('Permission checker', () => {
169
205
} ) ;
170
206
171
207
it ( 'relation noop' , async ( ) => {
172
- const { enhance } = await loadSchema (
208
+ const { enhance } = await load (
173
209
`
174
210
model Model {
175
211
id Int @id @default(autoincrement())
@@ -194,7 +230,7 @@ describe('Permission checker', () => {
194
230
} ) ;
195
231
196
232
it ( 'collection predicate noop' , async ( ) => {
197
- const { enhance } = await loadSchema (
233
+ const { enhance } = await load (
198
234
`
199
235
model Model {
200
236
id Int @id @default(autoincrement())
@@ -219,7 +255,7 @@ describe('Permission checker', () => {
219
255
} ) ;
220
256
221
257
it ( 'field complex condition' , async ( ) => {
222
- const { enhance } = await loadSchema (
258
+ const { enhance } = await load (
223
259
`
224
260
model Model {
225
261
id Int @id @default(autoincrement())
@@ -252,7 +288,7 @@ describe('Permission checker', () => {
252
288
} ) ;
253
289
254
290
it ( 'field condition unsolvable' , async ( ) => {
255
- const { enhance } = await loadSchema (
291
+ const { enhance } = await load (
256
292
`
257
293
model Model {
258
294
id Int @id @default(autoincrement())
@@ -272,7 +308,7 @@ describe('Permission checker', () => {
272
308
} ) ;
273
309
274
310
it ( 'simple auth condition' , async ( ) => {
275
- const { enhance } = await loadSchema (
311
+ const { enhance } = await load (
276
312
`
277
313
model User {
278
314
id Int @id @default(autoincrement())
@@ -307,7 +343,7 @@ describe('Permission checker', () => {
307
343
} ) ;
308
344
309
345
it ( 'auth compared with relation field' , async ( ) => {
310
- const { enhance } = await loadSchema (
346
+ const { enhance } = await load (
311
347
`
312
348
model User {
313
349
id Int @id @default(autoincrement())
@@ -349,7 +385,7 @@ describe('Permission checker', () => {
349
385
} ) ;
350
386
351
387
it ( 'auth null check' , async ( ) => {
352
- const { enhance } = await loadSchema (
388
+ const { enhance } = await load (
353
389
`
354
390
model User {
355
391
id Int @id @default(autoincrement())
@@ -379,7 +415,7 @@ describe('Permission checker', () => {
379
415
} ) ;
380
416
381
417
it ( 'auth with relation access' , async ( ) => {
382
- const { enhance } = await loadSchema (
418
+ const { enhance } = await load (
383
419
`
384
420
model User {
385
421
id Int @id @default(autoincrement())
@@ -408,7 +444,7 @@ describe('Permission checker', () => {
408
444
} ) ;
409
445
410
446
it ( 'nullable field' , async ( ) => {
411
- const { enhance } = await loadSchema (
447
+ const { enhance } = await load (
412
448
`
413
449
model Model {
414
450
id Int @id @default(autoincrement())
@@ -427,7 +463,7 @@ describe('Permission checker', () => {
427
463
} ) ;
428
464
429
465
it ( 'compilation' , async ( ) => {
430
- await loadSchema (
466
+ await load (
431
467
`
432
468
model Model {
433
469
id Int @id @default(autoincrement())
@@ -456,7 +492,7 @@ describe('Permission checker', () => {
456
492
} ) ;
457
493
458
494
it ( 'invalid filter' , async ( ) => {
459
- const { enhance } = await loadSchema (
495
+ const { enhance } = await load (
460
496
`
461
497
model Model {
462
498
id Int @id @default(autoincrement())
@@ -498,7 +534,7 @@ describe('Permission checker', () => {
498
534
} ) ;
499
535
500
536
it ( 'float field ignored' , async ( ) => {
501
- const { enhance } = await loadSchema (
537
+ const { enhance } = await load (
502
538
`
503
539
model Model {
504
540
id Int @id @default(autoincrement())
@@ -513,7 +549,7 @@ describe('Permission checker', () => {
513
549
} ) ;
514
550
515
551
it ( 'float value ignored' , async ( ) => {
516
- const { enhance } = await loadSchema (
552
+ const { enhance } = await load (
517
553
`
518
554
model Model {
519
555
id Int @id @default(autoincrement())
0 commit comments