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