@@ -66,6 +66,50 @@ public function testCan()
6666 $ this ->assertTrue ($ result );
6767 }
6868
69+ public function testCanWithAdditionalParams ()
70+ {
71+ $ resolver = new MapResolver ([
72+ Article::class => ArticlePolicy::class,
73+ ]);
74+
75+ $ service = new AuthorizationService ($ resolver );
76+
77+ $ user = new IdentityDecorator ($ service , [
78+ 'role ' => 'admin ' ,
79+ ]);
80+
81+ $ innerService = function () {
82+ return true ;
83+ };
84+
85+ $ result = $ service ->can ($ user , 'withService ' , new Article (), $ innerService );
86+ $ this ->assertTrue ($ result );
87+ }
88+
89+ public function testCanWithAdditionalNamedParams ()
90+ {
91+ $ resolver = new MapResolver ([
92+ Article::class => ArticlePolicy::class,
93+ ]);
94+
95+ $ service = new AuthorizationService ($ resolver );
96+
97+ $ user = new IdentityDecorator ($ service , [
98+ 'role ' => 'admin ' ,
99+ ]);
100+
101+ $ innerService1 = function () {
102+ return true ;
103+ };
104+
105+ $ innerService2 = function () {
106+ return false ;
107+ };
108+
109+ $ result = $ service ->can (user: $ user , action: 'withMultipleServices ' , resource: new Article (), service2: $ innerService2 , service1: $ innerService1 );
110+ $ this ->assertFalse ($ result );
111+ }
112+
69113 public function testCanWithResult ()
70114 {
71115 $ resolver = new MapResolver ([
@@ -82,6 +126,50 @@ public function testCanWithResult()
82126 $ this ->assertInstanceOf (ResultInterface::class, $ result );
83127 }
84128
129+ public function testCanWithResultAndAdditionalParams ()
130+ {
131+ $ resolver = new MapResolver ([
132+ Article::class => ArticlePolicy::class,
133+ ]);
134+
135+ $ service = new AuthorizationService ($ resolver );
136+
137+ $ user = new IdentityDecorator ($ service , [
138+ 'role ' => 'admin ' ,
139+ ]);
140+
141+ $ innerService = function () {
142+ return true ;
143+ };
144+
145+ $ result = $ service ->canResult ($ user , 'withService ' , new Article (), $ innerService );
146+ $ this ->assertInstanceOf (ResultInterface::class, $ result );
147+ }
148+
149+ public function testCanWithResultAndAdditionalNamedParams ()
150+ {
151+ $ resolver = new MapResolver ([
152+ Article::class => ArticlePolicy::class,
153+ ]);
154+
155+ $ service = new AuthorizationService ($ resolver );
156+
157+ $ user = new IdentityDecorator ($ service , [
158+ 'role ' => 'admin ' ,
159+ ]);
160+
161+ $ innerService1 = function () {
162+ return true ;
163+ };
164+
165+ $ innerService2 = function () {
166+ return false ;
167+ };
168+
169+ $ result = $ service ->canResult (user: $ user , action: 'withMultipleServices ' , resource: new Article (), service2: $ innerService2 , service1: $ innerService1 );
170+ $ this ->assertInstanceOf (ResultInterface::class, $ result );
171+ }
172+
85173 public function testAuthorizationCheckedWithCan ()
86174 {
87175 $ resolver = new MapResolver ([
0 commit comments