3
3
import org .apache .commons .cli .ParseException ;
4
4
import org .junit .Test ;
5
5
6
+ import java .io .File ;
7
+ import java .io .FileWriter ;
8
+ import java .io .IOException ;
9
+
6
10
import static org .junit .Assert .assertEquals ;
7
11
8
12
public class ClientTest {
@@ -112,7 +116,7 @@ public void testCustomFunction() throws ParseException {
112
116
assertEquals (Client .run (new String []{"enforce" , "-m" , model , "-p" , "examples/keymatch_policy.csv" , "-AF" , func , "cathy" , "/cathy_data" , "POST" }), "{\" allow\" :true,\" explain\" :null}" );
113
117
assertEquals (Client .run (new String []{"enforce" , "-m" , model , "-p" , "examples/keymatch_policy.csv" , "-AF" , func , "cathy" , "/cathy_data" , "DELETE" }), "{\" allow\" :false,\" explain\" :null}" );
114
118
115
- }
119
+ }
116
120
117
121
@ Test
118
122
public void testEnforce () {
@@ -216,7 +220,6 @@ public void testManagementApi() {
216
220
217
221
assertEquals (Client .run (new String []{"updatePolicy" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice,data1,write" ,"alice,data1,read" }), "{\" allow\" :true,\" explain\" :null}" );
218
222
219
-
220
223
assertEquals (Client .run (new String []{"updateNamedGroupingPolicy" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "g" , "alice,data2_admin" ,"admin,data4_admin" }), "{\" allow\" :true,\" explain\" :null}" );
221
224
222
225
assertEquals (Client .run (new String []{"updateNamedGroupingPolicy" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "g" , "admin,data4_admin" ,"alice,data2_admin" }), "{\" allow\" :true,\" explain\" :null}" );
@@ -235,4 +238,80 @@ public void testManagementApi() {
235
238
236
239
}
237
240
241
+ @ Test
242
+ public void testRBACApi () {
243
+ assertEquals (Client .run (new String []{"getRolesForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" }), "{\" allow\" :null,\" explain\" :[\" data2_admin\" ]}" );
244
+
245
+ assertEquals (Client .run (new String []{"getUsersForRole" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "data2_admin" }), "{\" allow\" :null,\" explain\" :[\" alice\" ]}" );
246
+
247
+ assertEquals (Client .run (new String []{"hasRoleForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" , "data2_admin" }), "{\" allow\" :true,\" explain\" :null}" );
248
+
249
+ assertEquals (Client .run (new String []{"deleteRoleForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" , "data2_admin" }), "{\" allow\" :true,\" explain\" :null}" );
250
+ resetRBACPolicyFile ();
251
+
252
+ assertEquals (Client .run (new String []{"deleteRolesForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" }), "{\" allow\" :true,\" explain\" :null}" );
253
+ resetRBACPolicyFile ();
254
+
255
+ assertEquals (Client .run (new String []{"deleteUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" }), "{\" allow\" :true,\" explain\" :null}" );
256
+ resetRBACPolicyFile ();
257
+
258
+ assertEquals (Client .run (new String []{"deleteRole" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "data2_admin" }), "{\" allow\" :null,\" explain\" :null}" );
259
+ resetRBACPolicyFile ();
260
+
261
+ assertEquals (Client .run (new String []{"deletePermission" , "-m" , "examples/basic_without_resources_model.conf" , "-p" , "examples/basic_without_resources_policy.csv" , "read" }), "{\" allow\" :true,\" explain\" :null}" );
262
+ resetBasicWithResourcesPolicyFile ();
263
+
264
+ assertEquals (Client .run (new String []{"addPermissionForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "bob" , "read" }), "{\" allow\" :true,\" explain\" :null}" );
265
+
266
+ assertEquals (Client .run (new String []{"deletePermissionForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "bob" , "read" }), "{\" allow\" :true,\" explain\" :null}" );
267
+
268
+ assertEquals (Client .run (new String []{"deletePermissionsForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_policy.csv" , "alice" }), "{\" allow\" :true,\" explain\" :null}" );
269
+ resetRBACPolicyFile ();
270
+
271
+ assertEquals (Client .run (new String []{"hasPermissionForUser" , "-m" , "examples/basic_without_resources_model.conf" , "-p" , "examples/basic_without_resources_policy.csv" , "alice" , "read" }), "{\" allow\" :true,\" explain\" :null}" );
272
+
273
+ assertEquals (Client .run (new String []{"getImplicitUsersForRole" , "-m" , "examples/rbac_with_pattern_model.conf" , "-p" , "examples/rbac_with_pattern_policy.csv" , "book_admin" }), "{\" allow\" :null,\" explain\" :[\" alice\" ]}" );
274
+
275
+ assertEquals (Client .run (new String []{"getImplicitPermissionsForUser" , "-m" , "examples/rbac_model.conf" , "-p" , "examples/rbac_with_hierarchy_policy.csv" , "alice" }), "{\" allow\" :null,\" explain\" :[[\" alice\" ,\" data1\" ,\" read\" ],[\" data1_admin\" ,\" data1\" ,\" read\" ],[\" data1_admin\" ,\" data1\" ,\" write\" ],[\" data2_admin\" ,\" data2\" ,\" read\" ],[\" data2_admin\" ,\" data2\" ,\" write\" ]]}" );
276
+
277
+
278
+ assertEquals (Client .run (new String []{"getNamedImplicitPermissionsForUser" , "-m" , "examples/rbac_with_multiple_policy_model.conf" , "-p" , "examples/rbac_with_multiple_policy_policy.csv" , "p2" , "alice" }), "{\" allow\" :null,\" explain\" :[[\" admin\" ,\" create\" ],[\" user\" ,\" view\" ]]}" );
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+ }
287
+
288
+
289
+ public void resetRBACPolicyFile () {
290
+ File file = new File ("examples/rbac_policy.csv" );
291
+ try {
292
+ FileWriter writer = new FileWriter (file );
293
+ writer .write ("p, alice, data1, read\n " );
294
+ writer .write ("p, bob, data2, write\n " );
295
+ writer .write ("p, data2_admin, data2, read\n " );
296
+ writer .write ("p, data2_admin, data2, write\n " );
297
+ writer .write ("g, alice, data2_admin" );
298
+ writer .close ();
299
+ } catch (IOException e ) {
300
+ e .printStackTrace ();
301
+ }
302
+ }
303
+
304
+ public void resetBasicWithResourcesPolicyFile () {
305
+ File file = new File ("examples/basic_without_resources_policy.csv" );
306
+ try {
307
+ FileWriter writer = new FileWriter (file );
308
+ writer .write ("p, alice, read\n " );
309
+ writer .write ("p, bob, write" );
310
+ writer .close ();
311
+ } catch (IOException e ) {
312
+ e .printStackTrace ();
313
+ }
314
+ }
315
+
316
+
238
317
}
0 commit comments