diff --git a/src/Provider/Apple.php b/src/Provider/Apple.php index 79c810b..f8afdf4 100644 --- a/src/Provider/Apple.php +++ b/src/Provider/Apple.php @@ -218,6 +218,7 @@ protected function createResourceOwner(array $response, AccessToken $token) { return new AppleResourceOwner( array_merge( + ['sub' => $token->getResourceOwnerId()], $response, [ 'email' => isset($token->getValues()['email']) diff --git a/test/src/Provider/AppleTest.php b/test/src/Provider/AppleTest.php index 7684c75..6c6f902 100644 --- a/test/src/Provider/AppleTest.php +++ b/test/src/Provider/AppleTest.php @@ -296,6 +296,40 @@ public function testCheckResponse() ]]); } + public function testResourceToArrayHasAttributes() + { + $provider = $this->getProvider(); + $class = new \ReflectionClass($provider); + $method = $class->getMethod('createResourceOwner'); + $method->setAccessible(true); + + /** @var AppleResourceOwner $data */ + $data = $method->invokeArgs($provider, [ + [ + 'email' => 'john@doe.com',// <- Fake E-Mail from user input + 'name' => [ + 'firstName' => 'John', + 'lastName' => 'Doe' + ] + ], + new AccessToken([ + 'access_token' => 'hello', + 'email' => 'john@doe.de', + 'resource_owner_id' => '123.4.567' + ]) + ]); + $expectedArray = [ + 'email' => 'john@doe.de', + 'sub' => '123.4.567', + 'name' => [ + 'firstName' => 'John', + 'lastName' => 'Doe' + ], + 'isPrivateEmail' => null + ]; + $this->assertEquals($expectedArray, $data->toArray()); + } + public function testCreationOfResourceOwnerWithName() { $provider = $this->getProvider();