@@ -105,3 +105,103 @@ def test_has_permission_for_user(self):
105105 self .assertFalse (e .has_permission_for_user ('alice' , * ['write' ]))
106106 self .assertFalse (e .has_permission_for_user ('bob' , * ['read' ]))
107107 self .assertTrue (e .has_permission_for_user ('bob' , * ['write' ]))
108+
109+ def test_enforce_implicit_roles_api (self ):
110+ e = get_enforcer (get_examples ("rbac_model.conf" ),
111+ get_examples ("rbac_with_hierarchy_policy.csv" ))
112+
113+ self .assertTrue (e .get_permissions_for_user ('alice' ) == [["alice" , "data1" , "read" ]])
114+ self .assertTrue (e .get_permissions_for_user ('bob' ) == [["bob" , "data2" , "write" ]])
115+
116+ self .assertTrue (e .get_implicit_roles_for_user ('alice' ) == ['admin' , 'data1_admin' , 'data2_admin' ])
117+ self .assertTrue (e .get_implicit_roles_for_user ('bob' ) == [])
118+
119+ def test_enforce_implicit_roles_with_domain (self ):
120+ e = get_enforcer (get_examples ("rbac_with_domains_model.conf" ),
121+ get_examples ("rbac_with_hierarchy_with_domains_policy.csv" ))
122+
123+ self .assertTrue (e .get_roles_for_user_in_domain ('alice' , 'domain1' ) == ['role:global_admin' ])
124+ self .assertTrue (
125+ e .get_implicit_roles_for_user ('alice' , 'domain1' ) == ["role:global_admin" , "role:reader" , "role:writer" ])
126+
127+ def test_enforce_implicit_permissions_api (self ):
128+ e = get_enforcer (get_examples ("rbac_model.conf" ),
129+ get_examples ("rbac_with_hierarchy_policy.csv" ))
130+ self .assertTrue (e .get_permissions_for_user ('alice' ) == [["alice" , "data1" , "read" ]])
131+ self .assertTrue (e .get_permissions_for_user ('bob' ) == [["bob" , "data2" , "write" ]])
132+ self .assertTrue (e .get_implicit_permissions_for_user ('alice' ) == [
133+ ['alice' , 'data1' , 'read' ],
134+ ['data1_admin' , 'data1' , 'read' ],
135+ ['data1_admin' , 'data1' , 'write' ],
136+ ['data2_admin' , 'data2' , 'read' ],
137+ ['data2_admin' , 'data2' , 'write' ]])
138+ self .assertTrue (e .get_implicit_permissions_for_user ('bob' ) == [["bob" , "data2" , "write" ]])
139+
140+ def test_enforce_implicit_permissions_api_with_domain (self ):
141+ e = get_enforcer (get_examples ("rbac_with_domains_model.conf" ),
142+ get_examples ("rbac_with_hierarchy_with_domains_policy.csv" ))
143+
144+ self .assertTrue (e .get_roles_for_user_in_domain ('alice' , 'domain1' ) == ['role:global_admin' ])
145+ self .assertTrue (e .get_implicit_roles_for_user ('alice' , 'domain1' ) ==
146+ ['role:global_admin' , 'role:reader' , 'role:writer' ])
147+ self .assertTrue (e .get_implicit_permissions_for_user ('alice' , 'domain1' ) == [
148+ ['alice' , 'domain1' , 'data2' , 'read' ],
149+ ["role:reader" , "domain1" , "data1" , "read" ],
150+ ["role:writer" , "domain1" , "data1" , "write" ]])
151+ self .assertTrue (e .get_implicit_permissions_for_user ('bob' , 'domain1' ) == [])
152+
153+ def test_enforce_get_users_in_domain (self ):
154+ e = get_enforcer (get_examples ("rbac_with_domains_model.conf" ),
155+ get_examples ("rbac_with_domains_policy.csv" ))
156+ self .assertTrue (e .get_users_for_role_in_domain ('admin' , 'domain1' ) == ['alice' ])
157+ self .assertTrue (e .get_users_for_role_in_domain ('non_exist' , 'domain1' ) == [])
158+ self .assertTrue (e .get_users_for_role_in_domain ('admin' , 'domain2' ) == ['bob' ])
159+ self .assertTrue (e .get_users_for_role_in_domain ('non_exist' , 'domain2' ) == [])
160+ e .delete_roles_for_user_in_domain ('alice' , 'admin' , 'domain1' )
161+ e .add_role_for_user_in_domain ('bob' , 'admin' , 'domain1' )
162+ self .assertTrue (e .get_users_for_role_in_domain ('admin' , 'domain1' ) == ['bob' ])
163+ self .assertTrue (e .get_users_for_role_in_domain ('non_exist' , 'domain1' ) == [])
164+ self .assertTrue (e .get_users_for_role_in_domain ('admin' , 'domain2' ) == ['bob' ])
165+ self .assertTrue (e .get_users_for_role_in_domain ('non_exist' , 'domain2' ) == [])
166+
167+ def test_enforce_user_api_with_domain (self ):
168+ e = get_enforcer (get_examples ("rbac_with_domains_model.conf" ),
169+ get_examples ("rbac_with_domains_policy.csv" ))
170+ self .assertEqual (e .get_users_for_role_in_domain ('admin' , 'domain1' ), ['alice' ])
171+ self .assertEqual (e .get_users_for_role_in_domain ('non_exist' , 'domain1' ), [])
172+ self .assertEqual (e .get_users_for_role_in_domain ('admin' , 'domain2' ), ['bob' ])
173+ self .assertEqual (e .get_users_for_role_in_domain ('non_exist' , 'domain2' ), [])
174+
175+ e .delete_roles_for_user_in_domain ('alice' , 'admin' , 'domain1' )
176+ e .add_role_for_user_in_domain ('bob' , 'admin' , 'domain1' )
177+
178+ self .assertEqual (e .get_users_for_role_in_domain ('admin' , 'domain1' ), ['bob' ])
179+ self .assertEqual (e .get_users_for_role_in_domain ('non_exist' , 'domain1' ), [])
180+ self .assertEqual (e .get_users_for_role_in_domain ('admin' , 'domain2' ), ['bob' ])
181+ self .assertEqual (e .get_users_for_role_in_domain ('non_exist' , 'domain2' ), [])
182+
183+ def test_enforce_get_roles_with_domain (self ):
184+ e = get_enforcer (get_examples ("rbac_with_domains_model.conf" ),
185+ get_examples ("rbac_with_domains_policy.csv" ))
186+ self .assertEqual (e .get_roles_for_user_in_domain ('alice' , 'domain1' ), ['admin' ])
187+ self .assertEqual (e .get_roles_for_user_in_domain ('bob' , 'domain1' ), [])
188+ self .assertEqual (e .get_roles_for_user_in_domain ('admin' , 'domain1' ), [])
189+ self .assertEqual (e .get_roles_for_user_in_domain ('non_exist' , 'domain1' ), [])
190+
191+ self .assertEqual (e .get_roles_for_user_in_domain ('alice' , 'domain2' ), [])
192+ self .assertEqual (e .get_roles_for_user_in_domain ('bob' , 'domain2' ), ['admin' ])
193+ self .assertEqual (e .get_roles_for_user_in_domain ('admin' , 'domain2' ), [])
194+ self .assertEqual (e .get_roles_for_user_in_domain ('non_exist' , 'domain2' ), [])
195+
196+ e .delete_roles_for_user_in_domain ('alice' , 'admin' , 'domain1' )
197+ e .add_role_for_user_in_domain ('bob' , 'admin' , 'domain1' )
198+
199+ self .assertEqual (e .get_roles_for_user_in_domain ('alice' , 'domain1' ), [])
200+ self .assertEqual (e .get_roles_for_user_in_domain ('bob' , 'domain1' ), ['admin' ])
201+ self .assertEqual (e .get_roles_for_user_in_domain ('admin' , 'domain1' ), [])
202+ self .assertEqual (e .get_roles_for_user_in_domain ('non_exist' , 'domain1' ), [])
203+
204+ self .assertEqual (e .get_roles_for_user_in_domain ('alice' , 'domain2' ), [])
205+ self .assertEqual (e .get_roles_for_user_in_domain ('bob' , 'domain2' ), ['admin' ])
206+ self .assertEqual (e .get_roles_for_user_in_domain ('admin' , 'domain2' ), [])
207+ self .assertEqual (e .get_roles_for_user_in_domain ('non_exist' , 'domain2' ), [])
0 commit comments