13
13
// limitations under the License.
14
14
15
15
import { newEnforcer , Enforcer , Util } from '../src' ;
16
+ import { BatchFileAdapter } from '../src/persist' ;
16
17
17
18
let e = { } as Enforcer ;
18
19
@@ -145,20 +146,70 @@ test('addPolicy', async () => {
145
146
expect ( await e . hasPolicy ( ...p ) ) . toBe ( true ) ;
146
147
} ) ;
147
148
149
+ test ( 'addPolicies' , async ( ) => {
150
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
151
+ e . setAdapter ( a ) ;
152
+ const rules = [
153
+ [ 'jack' , 'data4' , 'read' ] ,
154
+ [ 'katy' , 'data4' , 'write' ] ,
155
+ [ 'leyo' , 'data4' , 'read' ] ,
156
+ [ 'ham' , 'data4' , 'write' ]
157
+ ] ;
158
+ const added = await e . addPolicies ( rules ) ;
159
+ expect ( added ) . toBe ( true ) ;
160
+ for ( const rule of rules ) {
161
+ expect ( await e . hasPolicy ( ...rule ) ) . toBe ( true ) ;
162
+ }
163
+ } ) ;
164
+
148
165
test ( 'addNamedPolicy' , async ( ) => {
149
166
const p = [ 'eve' , 'data3' , 'read' ] ;
150
167
const added = await e . addNamedPolicy ( 'p' , ...p ) ;
151
168
expect ( added ) . toBe ( true ) ;
152
169
expect ( await e . hasPolicy ( ...p ) ) . toBe ( true ) ;
153
170
} ) ;
154
171
172
+ test ( 'addNamedPolicies' , async ( ) => {
173
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
174
+ e . setAdapter ( a ) ;
175
+ const rules = [
176
+ [ 'jack' , 'data4' , 'read' ] ,
177
+ [ 'katy' , 'data4' , 'write' ] ,
178
+ [ 'leyo' , 'data4' , 'read' ] ,
179
+ [ 'ham' , 'data4' , 'write' ]
180
+ ] ;
181
+ const added = await e . addNamedPolicies ( 'p' , rules ) ;
182
+ expect ( added ) . toBe ( true ) ;
183
+ for ( const rule of rules ) {
184
+ expect ( await e . hasPolicy ( ...rule ) ) . toBe ( true ) ;
185
+ }
186
+ } ) ;
187
+
155
188
test ( 'removePolicy' , async ( ) => {
156
189
const p = [ 'alice' , 'data1' , 'read' ] ;
157
190
const removed = await e . removePolicy ( ...p ) ;
158
191
expect ( removed ) . toBe ( true ) ;
159
192
expect ( await e . hasPolicy ( ...p ) ) . toBe ( false ) ;
160
193
} ) ;
161
194
195
+ test ( 'removePolicies' , async ( ) => {
196
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
197
+ e . setAdapter ( a ) ;
198
+ const rules = [
199
+ [ 'jack' , 'data4' , 'read' ] ,
200
+ [ 'katy' , 'data4' , 'write' ] ,
201
+ [ 'leyo' , 'data4' , 'read' ] ,
202
+ [ 'ham' , 'data4' , 'write' ]
203
+ ] ;
204
+ const added = await e . addPolicies ( rules ) ;
205
+ expect ( added ) . toBe ( true ) ;
206
+ const removed = await e . removePolicies ( rules ) ;
207
+ expect ( removed ) . toBe ( true ) ;
208
+ for ( const rule of rules ) {
209
+ expect ( await e . hasPolicy ( ...rule ) ) . toBe ( false ) ;
210
+ }
211
+ } ) ;
212
+
162
213
test ( 'removeFilteredPolicy' , async ( ) => {
163
214
const p = [ 'alice' , 'data1' , 'read' ] ;
164
215
const removed = await e . removeFilteredPolicy ( 0 , ...p ) ;
@@ -173,6 +224,24 @@ test('removeNamedPolicy', async () => {
173
224
expect ( await e . hasPolicy ( ...p ) ) . toBe ( false ) ;
174
225
} ) ;
175
226
227
+ test ( 'removeNamedPolicies' , async ( ) => {
228
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
229
+ e . setAdapter ( a ) ;
230
+ const rules = [
231
+ [ 'jack' , 'data4' , 'read' ] ,
232
+ [ 'katy' , 'data4' , 'write' ] ,
233
+ [ 'leyo' , 'data4' , 'read' ] ,
234
+ [ 'ham' , 'data4' , 'write' ]
235
+ ] ;
236
+ const added = await e . addPolicies ( rules ) ;
237
+ expect ( added ) . toBe ( true ) ;
238
+ const removed = await e . removeNamedPolicies ( 'p' , rules ) ;
239
+ expect ( removed ) . toBe ( true ) ;
240
+ for ( const rule of rules ) {
241
+ expect ( await e . hasPolicy ( ...rule ) ) . toBe ( false ) ;
242
+ }
243
+ } ) ;
244
+
176
245
test ( 'removeFilteredNamedPolicy' , async ( ) => {
177
246
const p = [ 'alice' , 'data1' , 'read' ] ;
178
247
const removed = await e . removeFilteredNamedPolicy ( 'p' , 0 , ...p ) ;
@@ -195,16 +264,51 @@ test('addGroupingPolicy', async () => {
195
264
expect ( added ) . toBe ( true ) ;
196
265
} ) ;
197
266
198
- test ( 'addNamedGroupingPolicy ' , async ( ) => {
267
+ test ( 'addGroupingPolicies' , async ( ) => {
268
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
269
+ e . setAdapter ( a ) ;
270
+ const groupingRules = [
271
+ [ 'ham' , 'data4_admin' ] ,
272
+ [ 'jack' , 'data5_admin' ]
273
+ ] ;
274
+ const added = await e . addGroupingPolicies ( groupingRules ) ;
275
+ expect ( added ) . toBe ( true ) ;
276
+ } ) ;
277
+
278
+ test ( 'addNamedGroupingPolicy' , async ( ) => {
199
279
const added = await e . addNamedGroupingPolicy ( 'g' , 'group1' , 'data2_admin' ) ;
200
280
expect ( added ) . toBe ( true ) ;
201
281
} ) ;
202
282
283
+ test ( 'addNamedGroupingPolicies' , async ( ) => {
284
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
285
+ e . setAdapter ( a ) ;
286
+ const groupingRules = [
287
+ [ 'ham' , 'data4_admin' ] ,
288
+ [ 'jack' , 'data5_admin' ]
289
+ ] ;
290
+ const added = await e . addNamedGroupingPolicies ( 'g' , groupingRules ) ;
291
+ expect ( added ) . toBe ( true ) ;
292
+ } ) ;
293
+
203
294
test ( 'removeGroupingPolicy' , async ( ) => {
204
295
const removed = await e . removeGroupingPolicy ( 'alice' , 'data2_admin' ) ;
205
296
expect ( removed ) . toBe ( true ) ;
206
297
} ) ;
207
298
299
+ test ( 'removeGroupingPolicies' , async ( ) => {
300
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
301
+ e . setAdapter ( a ) ;
302
+ const groupingRules = [
303
+ [ 'ham' , 'data4_admin' ] ,
304
+ [ 'jack' , 'data5_admin' ]
305
+ ] ;
306
+ const added = await e . addGroupingPolicies ( groupingRules ) ;
307
+ expect ( added ) . toBe ( true ) ;
308
+ const removed = await e . removeGroupingPolicies ( groupingRules ) ;
309
+ expect ( removed ) . toBe ( true ) ;
310
+ } ) ;
311
+
208
312
test ( 'removeFilteredGroupingPolicy' , async ( ) => {
209
313
const removed = await e . removeFilteredGroupingPolicy ( 0 , 'alice' ) ;
210
314
expect ( removed ) . toBe ( true ) ;
@@ -214,3 +318,16 @@ test('removeFilteredNamedGroupingPolicy', async () => {
214
318
const removed = await e . removeFilteredNamedGroupingPolicy ( 'g' , 0 , 'alice' ) ;
215
319
expect ( removed ) . toBe ( true ) ;
216
320
} ) ;
321
+
322
+ test ( 'removeNamedGroupingPolicies' , async ( ) => {
323
+ const a = new BatchFileAdapter ( 'examples/rbac_policy.csv' ) ;
324
+ e . setAdapter ( a ) ;
325
+ const groupingRules = [
326
+ [ 'ham' , 'data4_admin' ] ,
327
+ [ 'jack' , 'data5_admin' ]
328
+ ] ;
329
+ const added = await e . addGroupingPolicies ( groupingRules ) ;
330
+ expect ( added ) . toBe ( true ) ;
331
+ const removed = await e . removeNamedGroupingPolicies ( 'g' , groupingRules ) ;
332
+ expect ( removed ) . toBe ( true ) ;
333
+ } ) ;
0 commit comments