@@ -36,11 +36,12 @@ public function testExceptionThrownWhenNoScopesProvided()
3636
3737 $ route = m::mock ('Dingo\Api\Routing\Route ' );
3838 $ route ->shouldReceive ('scopes ' )->once ()->andReturn (['foo ' ]);
39+ $ route ->shouldReceive ('requiresAllScopes ' )->once ()->andReturn (false );
3940
4041 $ this ->provider ->authenticate ($ request , $ route );
4142 }
4243
43- public function testOnlyOneScopeRequiredToValidateCorrectly ()
44+ public function testOnlyOneScopeRequiredToValidateCorrectlyIfRequiredAllSetToFalse ()
4445 {
4546 $ request = Request::create ('GET ' , '/ ' , [], [], [], ['HTTP_AUTHORIZATION ' => 'Bearer 12345 ' ]);
4647
@@ -62,10 +63,36 @@ public function testOnlyOneScopeRequiredToValidateCorrectly()
6263
6364 $ route = m::mock ('Dingo\Api\Routing\Route ' );
6465 $ route ->shouldReceive ('scopes ' )->once ()->andReturn (['foo ' , 'bar ' ]);
66+ $ route ->shouldReceive ('requiresAllScopes ' )->once ()->andReturn (false );
6567
6668 $ this ->assertNull ($ this ->provider ->authenticate ($ request , $ route ));
6769 }
6870
71+ /**
72+ * @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException
73+ */
74+ public function testAllScopeRequiredToValidateCorrectlyIfRequiredAllSetToTrue ()
75+ {
76+ $ request = Request::create ('GET ' , '/ ' , [], [], [], ['HTTP_AUTHORIZATION ' => 'Bearer 12345 ' ]);
77+
78+ $ this ->server ->shouldReceive ('isValidRequest ' )->once ()->andReturn (true );
79+
80+ $ token = m::mock ('League\OAuth2\Server\Entity\AccessTokenEntity ' );
81+ $ token ->shouldReceive ('hasScope ' )->once ()->with ('foo ' )->andReturn (true );
82+ $ token ->shouldReceive ('hasScope ' )->once ()->with ('bar ' )->andReturn (false );
83+ $ this ->server ->shouldReceive ('getAccessToken ' )->once ()->andReturn ($ token );
84+
85+ $ this ->provider ->setClientResolver (function ($ id ) {
86+ //
87+ });
88+
89+ $ route = m::mock ('Dingo\Api\Routing\Route ' );
90+ $ route ->shouldReceive ('scopes ' )->once ()->andReturn (['foo ' , 'bar ' ]);
91+ $ route ->shouldReceive ('requiresAllScopes ' )->once ()->andReturn (true );
92+
93+ $ this ->provider ->authenticate ($ request , $ route );
94+ }
95+
6996 public function testClientIsResolved ()
7097 {
7198 $ request = Request::create ('GET ' , '/ ' , [], [], [], ['HTTP_AUTHORIZATION ' => 'Bearer 12345 ' ]);
@@ -87,6 +114,7 @@ public function testClientIsResolved()
87114
88115 $ route = m::mock ('Dingo\Api\Routing\Route ' );
89116 $ route ->shouldReceive ('scopes ' )->once ()->andReturn ([]);
117+ $ route ->shouldReceive ('requiresAllScopes ' )->once ()->andReturn (false );
90118
91119 $ this ->assertEquals ('foo ' , $ this ->provider ->authenticate ($ request , $ route ));
92120 }
@@ -112,6 +140,7 @@ public function testUserIsResolved()
112140
113141 $ route = m::mock ('Dingo\Api\Routing\Route ' );
114142 $ route ->shouldReceive ('scopes ' )->once ()->andReturn ([]);
143+ $ route ->shouldReceive ('requiresAllScopes ' )->once ()->andReturn (false );
115144
116145 $ this ->assertEquals ('foo ' , $ this ->provider ->authenticate ($ request , $ route ));
117146 }
0 commit comments