@@ -296,3 +296,47 @@ func TestGetAllRolesByDomain(t *testing.T) {
296296 testGetAllRolesByDomain (t , e , "domain2" , []string {"admin" })
297297 testGetAllRolesByDomain (t , e , "domain3" , []string {"user" })
298298}
299+
300+ func testDeleteDomains (t * testing.T , domains []string , expectedPolicy , expectedGroupingPolicy [][]string , expectedDomains []string ) {
301+ e , _ := NewEnforcer ("examples/rbac_with_domains_model.conf" , "examples/rbac_with_domains_policy.csv" )
302+
303+ _ , _ = e .DeleteDomains (domains ... )
304+ policy , err := e .GetPolicy ()
305+ if err != nil {
306+ t .Error (err )
307+ }
308+ if ! util .Array2DEquals (policy , expectedPolicy ) {
309+ t .Errorf ("policy after deleting domains %v: %v, supposed to be %v\n " , domains , policy , expectedPolicy )
310+ }
311+
312+ policies , err := e .GetGroupingPolicy ()
313+ if err != nil {
314+ t .Error (err )
315+ }
316+ if ! util .Array2DEquals (policies , expectedGroupingPolicy ) {
317+ t .Errorf ("grouping policy after deleting domains %v: %v, supposed to be %v\n " , domains , policies , expectedGroupingPolicy )
318+ }
319+
320+ domainsAfterRemoval , _ := e .GetAllDomains ()
321+ if ! util .SetEquals (domainsAfterRemoval , expectedDomains ) {
322+ t .Errorf ("domains after deleting %v: %v, supposed to be %v\n " , domains , domainsAfterRemoval , expectedDomains )
323+ }
324+ }
325+
326+ func TestDeleteDomains (t * testing.T ) {
327+ testDeleteDomains (t , []string {"domain1" }, [][]string {
328+ {"admin" , "domain2" , "data2" , "read" },
329+ {"admin" , "domain2" , "data2" , "write" },
330+ }, [][]string {
331+ {"bob" , "admin" , "domain2" },
332+ }, []string {"domain2" })
333+
334+ testDeleteDomains (t , []string {"domain2" }, [][]string {
335+ {"admin" , "domain1" , "data1" , "read" },
336+ {"admin" , "domain1" , "data1" , "write" },
337+ }, [][]string {
338+ {"alice" , "admin" , "domain1" },
339+ }, []string {"domain1" })
340+
341+ testDeleteDomains (t , []string {}, [][]string {}, [][]string {}, []string {})
342+ }
0 commit comments