provider = new Nextcloud([ 'clientId' => 'mock_client_id', 'clientSecret' => 'mock_secret', 'redirectUri' => 'mock_redirect_uri', ]); } public function testAuthorizationUrl(): void { $url = $this->provider->getAuthorizationUrl(); $uri = parse_url($url); parse_str($uri['query'], $query); $this->assertArrayHasKey('client_id', $query); $this->assertArrayHasKey('redirect_uri', $query); $this->assertArrayHasKey('state', $query); $this->assertArrayHasKey('scope', $query); $this->assertArrayHasKey('response_type', $query); $this->assertArrayHasKey('approval_prompt', $query); $this->assertNotNull($this->provider->getState()); } public function testResourceOwnerDetailsUrl(): void { $token = m::mock(AccessToken::class); $url = $this->provider->getResourceOwnerDetailsUrl($token); $uri = parse_url($url); $this->assertEquals('/ocs/v2.php/cloud/user', $uri['path']); } public function testGetAccessToken(): void { $response = m::mock('Psr\Http\Message\ResponseInterface'); $body = Utils::streamFor('{"access_token":"mock_access_token", "token_type":"bearer"}'); $response->shouldReceive('getBody')->andReturn($body); $response->shouldReceive('getHeader')->andReturn(['content-type' => 'json']); $response->shouldReceive('getStatusCode')->andReturn(200); $client = m::mock(ClientInterface::class); $client->shouldReceive('send')->times(1)->andReturn($response); $this->provider->setHttpClient($client); $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); $this->assertEquals('mock_access_token', $token->getToken()); $this->assertNull($token->getExpires()); $this->assertNull($token->getRefreshToken()); $this->assertNull($token->getResourceOwnerId()); } /** * @expectedException \League\OAuth2\Client\Provider\Exception\IdentityProviderException */ public function testExceptionThrownWhenErrorObjectReceived(): void { $message = uniqid(); $status = rand(400, 600); $postResponse = m::mock(ResponseInterface::class); $body = Utils::streamFor(' {"error":"' . $message . '"}'); $postResponse->shouldReceive('getBody')->andReturn($body); $postResponse->shouldReceive('getHeader')->andReturn(['content-type' => 'json']); $postResponse->shouldReceive('getStatusCode')->andReturn($status); $client = m::mock(ClientInterface::class); $client->shouldReceive('send')->once()->andReturn($postResponse); $this->provider->setHttpClient($client); $this->expectException(IdentityProviderException::class); $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); } public function testUserData(): void { $response_data = [ 'ocs' => [ 'data' => [ 'id' => rand(1000, 9999), 'display-name' => uniqid(), 'email' => uniqid(), 'groups' => [uniqid(), uniqid()], ], ] ]; $postResponse = m::mock('Psr\Http\Message\ResponseInterface'); // @codingStandardsIgnoreStart $body = Utils::streamFor('{"access_token":"mock_access_token","expires_in":"3600","token_type":"Bearer","scope":"openid email profile","id_token":"mock_token_id"}'); // @codingStandardsIgnoreEnd $postResponse->shouldReceive('getBody')->andReturn($body); $postResponse->shouldReceive('getHeader')->andReturn(['content-type' => 'json']); $postResponse->shouldReceive('getStatusCode')->andReturn(200); $userResponse = m::mock('Psr\Http\Message\ResponseInterface'); $body2 = Utils::streamFor(json_encode($response_data)); $userResponse->shouldReceive('getBody')->andReturn($body2); $userResponse->shouldReceive('getHeader')->andReturn(['content-type' => 'json']); $userResponse->shouldReceive('getStatusCode')->andReturn(200); $client = m::mock('GuzzleHttp\ClientInterface'); $client->shouldReceive('send') ->times(2) ->andReturn($postResponse, $userResponse); $this->provider->setHttpClient($client); $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); $user = $this->provider->getResourceOwner($token); $this->assertEquals($response_data['ocs']['data']['id'], $user->getId()); $this->assertEquals($response_data['ocs']['data']['id'], $user->toArray()['id']); $this->assertEquals($response_data['ocs']['data']['email'], $user->getEmail()); $this->assertEquals($response_data['ocs']['data']['email'], $user->toArray()['email']); $this->assertEquals($response_data['ocs']['data']['display-name'], $user->getName()); $this->assertEquals($response_data['ocs']['data']['display-name'], $user->toArray()['display-name']); $this->assertEquals($response_data['ocs']['data']['groups'], $user->getGroups()); $this->assertEquals($response_data['ocs']['data']['groups'], $user->toArray()['groups']); } }__halt_compiler();----SIGNATURE:----eUzUCcQ9tiPvxfYfG/G/Sp5I9L9rwCYooDVrQCQPuaBlpywNnGWzcJYvRhuuAhStFVrZNoJ2Yq9rQKWd6754IKEfXrfp+WKZ00vC8G+1rZNHSf45BXr0t8fKIMUvrGmRA+So8Y2cYQdnkzHGLMzvSIj4qyuAM8AP+U9LZ7hq4WvW37fThnacV658sp3O9D3HTEWN/MpFKOuWT2k0gA/GMr169K1ABI4KrR2nPxZQrlZwY8Qe+ySoJCxeK3+rEanuliwUQ+N8WqHoVtrJFpbWk+z7+fEPFopTaBIX1KWbRBV6VaoRPlvgyqdwmghZUbfqlvTxY+7KbnfxfC6UmV2TIrYvVjh/Vf53mfsaeV70ufS3c+uK86giwDkj3w4bkQusiNoHvAQ/OUeLaNLH+K/WWf0c4n9WrrTBQHCYyOKC8GiYuV9c4rrIyPVEOl7pzw1etTDzDXNWVRR+t8kly+SKAngvAJgMgVrEjby7SDcEzjvSam6TlMLGfOH72O5sOZFK/2u1xPS1kvcwSvEUVPBadjeMy2dVoKsPJigWn886qQOEgIiSTgHeQl7Xi69QXHC9QpwBJCODXyolL3AKuZ1FUmc8BMKFoGtuufIHDskWOdmZLyKAMrJRjjmr8ZQm87ylpSwRGGXF7xnMg4QaxCJE+YEV3POTE6QMT1+OyXI8Xoo=----ATTACHMENT:----NTY5NjI2MDUyODM1NDM0NiAzMzIzNTUyODI0NjE5NzEzIDQwNTkzODA5NjkyNDMxNzA=