2
2
3
3
namespace Lauthz \Tests \Commands ;
4
4
5
+ use Casbin \Model \Model ;
5
6
use Lauthz \Facades \Enforcer ;
6
7
use Lauthz \Tests \TestCase ;
7
8
use Illuminate \Foundation \Testing \DatabaseMigrations ;
@@ -19,5 +20,21 @@ public function testHandle()
19
20
$ exitCode = Artisan::call ('role:assign ' , ['user ' => 'eve ' , 'role ' => 'writer ' ]);
20
21
$ this ->assertFalse (0 === $ exitCode );
21
22
$ 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 ' ));
22
39
}
23
40
}
0 commit comments