@@ -714,7 +714,7 @@ public function testGetAccessToken(string $method): void
714714 ->once ()
715715 ->with (
716716 ['client_id ' => 'mock_client_id ' , 'client_secret ' => 'mock_secret ' , 'redirect_uri ' => 'none ' ],
717- ['code ' => 'mock_authorization_code ' , ' scope ' => ' test ' ],
717+ ['code ' => 'mock_authorization_code ' ],
718718 )
719719 ->andReturn ([]);
720720
@@ -755,6 +755,61 @@ public function testGetAccessToken(string $method): void
755755 && (string ) $ request ->getUri () === $ provider ->getBaseAccessTokenUrl ([]));
756756 }
757757
758+ #[DataProvider('getAccessTokenMethodProvider ' )]
759+ public function testGetAccessTokenWithScope (string $ method ): void
760+ {
761+ $ provider = $ this ->getMockProvider ();
762+ $ provider ->setAccessTokenMethod ($ method );
763+
764+ $ rawResponse = ['access_token ' => 'okay ' , 'expires ' => time () + 3600 , 'resource_owner_id ' => 3 ];
765+
766+ $ grant = Mockery::mock (AbstractGrant::class);
767+ $ grant
768+ ->shouldReceive ('prepareRequestParameters ' )
769+ ->once ()
770+ ->with (
771+ ['client_id ' => 'mock_client_id ' , 'client_secret ' => 'mock_secret ' , 'redirect_uri ' => 'none ' ],
772+ ['code ' => 'mock_authorization_code ' , 'scope ' => 'foo,bar ' ],
773+ )
774+ ->andReturn ([]);
775+
776+ $ stream = Mockery::mock (StreamInterface::class);
777+ $ stream
778+ ->shouldReceive ('__toString ' )
779+ ->once ()
780+ ->andReturn (json_encode ($ rawResponse ));
781+
782+ $ response = Mockery::mock (ResponseInterface::class);
783+ $ response
784+ ->shouldReceive ('getBody ' )
785+ ->once ()
786+ ->andReturn ($ stream );
787+ $ response
788+ ->shouldReceive ('getHeader ' )
789+ ->once ()
790+ ->with ('content-type ' )
791+ ->andReturn (['application/json ' ]);
792+
793+ $ client = Mockery::spy (ClientInterface::class, [
794+ 'sendRequest ' => $ response ,
795+ ]);
796+
797+ $ provider ->setHttpClient ($ client );
798+ $ token = $ provider ->getAccessToken ($ grant , ['code ' => 'mock_authorization_code ' , 'scope ' => ['foo ' , 'bar ' ]]);
799+
800+ $ this ->assertInstanceOf (ResourceOwnerAccessTokenInterface::class, $ token );
801+
802+ $ this ->assertSame ($ rawResponse ['resource_owner_id ' ], $ token ->getResourceOwnerId ());
803+ $ this ->assertSame ($ rawResponse ['access_token ' ], $ token ->getToken ());
804+ $ this ->assertSame ($ rawResponse ['expires ' ], $ token ->getExpires ());
805+
806+ $ client
807+ ->shouldHaveReceived ('sendRequest ' )
808+ ->once ()
809+ ->withArgs (fn (RequestInterface $ request ) => $ request ->getMethod () === $ provider ->getAccessTokenMethod ()
810+ && (string ) $ request ->getUri () === $ provider ->getBaseAccessTokenUrl ([]));
811+ }
812+
758813 public function testGetAccessTokenWithNonJsonResponse (): void
759814 {
760815 $ provider = $ this ->getMockProvider ();
0 commit comments