Skip to content

Commit e6ad7af

Browse files
committed
fix: Add tests for batch operations.
1 parent 3804c3d commit e6ad7af

File tree

1 file changed

+118
-1
lines changed

1 file changed

+118
-1
lines changed

test/managementAPI.test.ts

+118-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
import { newEnforcer, Enforcer, Util } from '../src';
16+
import { BatchFileAdapter } from '../src/persist';
1617

1718
let e = {} as Enforcer;
1819

@@ -145,20 +146,70 @@ test('addPolicy', async () => {
145146
expect(await e.hasPolicy(...p)).toBe(true);
146147
});
147148

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+
148165
test('addNamedPolicy', async () => {
149166
const p = ['eve', 'data3', 'read'];
150167
const added = await e.addNamedPolicy('p', ...p);
151168
expect(added).toBe(true);
152169
expect(await e.hasPolicy(...p)).toBe(true);
153170
});
154171

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+
155188
test('removePolicy', async () => {
156189
const p = ['alice', 'data1', 'read'];
157190
const removed = await e.removePolicy(...p);
158191
expect(removed).toBe(true);
159192
expect(await e.hasPolicy(...p)).toBe(false);
160193
});
161194

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+
162213
test('removeFilteredPolicy', async () => {
163214
const p = ['alice', 'data1', 'read'];
164215
const removed = await e.removeFilteredPolicy(0, ...p);
@@ -173,6 +224,24 @@ test('removeNamedPolicy', async () => {
173224
expect(await e.hasPolicy(...p)).toBe(false);
174225
});
175226

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+
176245
test('removeFilteredNamedPolicy', async () => {
177246
const p = ['alice', 'data1', 'read'];
178247
const removed = await e.removeFilteredNamedPolicy('p', 0, ...p);
@@ -195,16 +264,51 @@ test('addGroupingPolicy', async () => {
195264
expect(added).toBe(true);
196265
});
197266

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 () => {
199279
const added = await e.addNamedGroupingPolicy('g', 'group1', 'data2_admin');
200280
expect(added).toBe(true);
201281
});
202282

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+
203294
test('removeGroupingPolicy', async () => {
204295
const removed = await e.removeGroupingPolicy('alice', 'data2_admin');
205296
expect(removed).toBe(true);
206297
});
207298

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+
208312
test('removeFilteredGroupingPolicy', async () => {
209313
const removed = await e.removeFilteredGroupingPolicy(0, 'alice');
210314
expect(removed).toBe(true);
@@ -214,3 +318,16 @@ test('removeFilteredNamedGroupingPolicy', async () => {
214318
const removed = await e.removeFilteredNamedGroupingPolicy('g', 0, 'alice');
215319
expect(removed).toBe(true);
216320
});
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

Comments
 (0)