22
33namespace  Lauthz \Tests \Commands ;
44
5+ use  Casbin \Model \Model ;
56use  Lauthz \Facades \Enforcer ;
67use  Lauthz \Tests \TestCase ;
78use  Illuminate \Foundation \Testing \DatabaseMigrations ;
@@ -19,5 +20,21 @@ public function testHandle()
1920        $ exitCode  = Artisan::call ('role:assign ' , ['user '  => 'eve ' , 'role '  => 'writer ' ]);
2021        $ this  ->assertFalse (0  === $ exitCode );
2122        $ this  ->assertTrue (Enforcer::hasRoleForUser ('eve ' , 'writer ' ));
23+ 
24+         $ model  = Model::newModel ();
25+         $ model ->addDef ('r ' , 'r ' , 'sub, obj, act ' );
26+         $ model ->addDef ('p ' , 'p ' , 'sub, obj, act ' );
27+         $ model ->addDef ('g ' , 'g ' , '_, _ ' );
28+         $ model ->addDef ('g ' , 'g2 ' , '_, _ ' );
29+         $ model ->addDef ('e ' , 'e ' , 'some(where (p.eft == allow)) ' );
30+         $ model ->addDef ('m ' , 'm ' , 'g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act ' );
31+         Enforcer::setModel ($ model );
32+         Enforcer::loadPolicy ();
33+         $ this  ->assertFalse (Enforcer::hasNamedGroupingPolicy ('g2 ' , 'eve ' , 'writer ' ));
34+         $ exitCode  = Artisan::call ('role:assign ' , ['user '  => 'eve ' , 'role '  => 'writer ' , '--ptype '  => 'g2 ' ]);
35+         $ this  ->assertTrue (0  === $ exitCode );
36+         $ exitCode  = Artisan::call ('role:assign ' , ['user '  => 'eve ' , 'role '  => 'writer ' , '--ptype '  => 'g2 ' ]);
37+         $ this  ->assertFalse (0  === $ exitCode );
38+         $ this  ->assertTrue (Enforcer::hasNamedGroupingPolicy ('g2 ' , 'eve ' , 'writer ' ));
2239    }
2340}
0 commit comments