Skip to content

Commit

Permalink
Adapting library for Guzzle lib version 5.3
Browse files Browse the repository at this point in the history
  • Loading branch information
davicente committed Jun 5, 2017
1 parent 1047c78 commit 8006005
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 74 deletions.
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"homepage": "https://github.com/davicente/flysystem-onedrive",
"require": {
"league/flysystem": "^1.0",
"guzzlehttp/guzzle": "^6.1",
"stevenmaguire/oauth2-microsoft": "^2.0"
"davicente/oauth2-microsoft": "^2.2",
"guzzlehttp/guzzle": "^5.3"
},
"require-dev": {
"phpunit/phpunit": "^5.2"
Expand All @@ -19,7 +19,7 @@
},
{
"name": "David Vicente",
"email": "dvicente@solidgeargroup.com"
"email": "davicentes@gmail.com"
}
],
"autoload": {
Expand Down
13 changes: 8 additions & 5 deletions src/Client/OneDriveClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

namespace JacekBarecki\FlysystemOneDrive\Client;

use League\OAuth2\Client\Tool\QueryBuilderTrait;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Message\Request;
use GuzzleHttp\Psr7\Stream;

class OneDriveClient
{
use QueryBuilderTrait;

/**
* @var string
*/
Expand Down Expand Up @@ -206,14 +209,13 @@ public function copy($oldPath, $newPath)
'Content-Type' => 'application/json',
'Prefer' => 'respond-async',
];

$response = $this->getResponse('POST', $url, json_encode($payload), $headers);
$asyncStatusLocation = $response->getHeader('Location');

//check for the status of an async operation
$completed = false;
while (!$completed) {
$statusResponse = $this->getResponse('GET', $asyncStatusLocation[0]);
$statusResponse = $this->getResponse('GET', $asyncStatusLocation);

$statusCode = $statusResponse->getStatusCode();
if ($statusCode == '303' || $statusCode == '200') {
Expand All @@ -229,7 +231,6 @@ public function copy($oldPath, $newPath)
sleep(0.5);
}
}

return $this->getMetadata($newPath);
}

Expand Down Expand Up @@ -510,8 +511,10 @@ private function getResponse($method, $path, $body = null, $headers = [])
$allHeaders = array_merge($this->getAuthorizationHeader(), $headers);
$uri = $path;

if(is_string($body)) {
$body = $this->buildQueryStringAsStream($body);
}
$request = new Request($method, $uri, $allHeaders, $body);

return $this->guzzle->send($request);
}

Expand Down
135 changes: 69 additions & 66 deletions tests/OneDriveClientTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,38 @@
namespace JacekBarecki\FlysystemOneDrive\Tests;

use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;
use GuzzleHttp\Message\Request;
use GuzzleHttp\Message\Response;
use GuzzleHttp\Psr7\Stream;
use JacekBarecki\FlysystemOneDrive\Client\OneDriveClient;
use League\OAuth2\Client\Tool\QueryBuilderTrait;

class OneDriveClientTest extends \PHPUnit_Framework_TestCase
{
use QueryBuilderTrait;

public function testDownload()
{
$client = $this->getMockBuilder('\GuzzleHttp\Client')->getMock();

$accessToken = '123456789';
$content = 'downloaded file content';
$content = $this->buildQueryStringAsStream('downloaded file content');

$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/some%20pdf%20document.pdf')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/some%20pdf%20document.pdf')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};
$response = $this->getResponseWithFileMetadata();

$assertRequestFileDownload = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'example.org')
&& ($request->getUri()->getPath() == '/some/download/url')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'example.org')
&& ($request->getPath() == '/some/download/url')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};
$responseFileDownload = new Response('200', [], $content);

Expand All @@ -42,7 +45,7 @@ public function testDownload()

$oneDriveClient = new OneDriveClient($accessToken, $client);
$response = $oneDriveClient->download('some pdf document.pdf');
$this->assertEquals($content, (string) $response->getBody());
$this->assertEquals((string) $content, (string) $response->getBody());
}

public function testDownloadStream()
Expand All @@ -54,9 +57,9 @@ public function testDownloadStream()
$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/some%20document.txt')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/some%20document.txt')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};
$response = $this->getResponseWithFileMetadata();

Expand Down Expand Up @@ -90,13 +93,13 @@ public function testGetMetadata()
$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/some%20pdf%20document.pdf')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/some%20pdf%20document.pdf')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ((string) $request->getBody() == '');
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -113,14 +116,14 @@ public function testCreateFile()
$assertRequest = function ($request) use ($accessToken, $content) {
return ($request instanceof Request)
&& ($request->getMethod() == 'PUT')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/new%20file.txt:/content')
&& ($request->getUri()->getQuery() == '@name.conflictBehavior=fail')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/new%20file.txt:/content')
&& ($request->getQuery() == '%40name.conflictBehavior=fail')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ((string) $request->getBody() == $content);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -137,14 +140,14 @@ public function testUpdateFile()
$assertRequest = function ($request) use ($accessToken, $content) {
return ($request instanceof Request)
&& ($request->getMethod() == 'PUT')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/updated%20file.txt:/content')
&& ($request->getUri()->getQuery() == '@name.conflictBehavior=replace')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/updated%20file.txt:/content')
&& ($request->getQuery() == '%40name.conflictBehavior=replace')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ((string) $request->getBody() == $content);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -161,14 +164,14 @@ public function testRename()
$assertRequest = function ($request) use ($accessToken, $content) {
return ($request instanceof Request)
&& ($request->getMethod() == 'PATCH')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/old%20filename.txt')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHeader('content-type') == ['application/json'])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/old%20filename.txt')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ($request->getHeader('content-type') == 'application/json')
&& ((string) $request->getBody() == $content);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -188,31 +191,31 @@ public function testCopy()
$assertRequestCopy = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'POST')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/source.pdf:/action.copy')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]
&& ($request->getHeader('content-type') == ['application/json'])
&& ($request->getHeader('prefer') == ['respond-async'])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/source.pdf:/action.copy')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken
&& ($request->getHeader('content-type') == 'application/json')
&& ($request->getHeader('prefer') == 'respond-async')
);
};
$responseCopy = new Response(202, ['Location' => 'http://example.org/monitor/some_url']);

$assertRequestMonitor = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'example.org')
&& ($request->getUri()->getPath() == '/monitor/some_url')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'example.org')
&& ($request->getPath() == '/monitor/some_url')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};

$responseMonitor = new Response(303);

$assertRequestMetadata = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/folder/destination.pdf')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/folder/destination.pdf')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ((string) $request->getBody() == '');
};
$responseMetadata = $this->getResponseWithFileMetadata();
Expand All @@ -236,14 +239,14 @@ public function testUpdateMetadata()
$assertRequest = function ($request) use ($accessToken, $content) {
return ($request instanceof Request)
&& ($request->getMethod() == 'PATCH')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/old%20filename.txt')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHeader('content-type') == ['application/json'])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/old%20filename.txt')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ($request->getHeader('content-type') == 'application/json')
&& ((string) $request->getBody() == json_encode($content));
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -260,14 +263,14 @@ public function testCreateFolder()
$assertRequest = function ($request) use ($accessToken, $content) {
return ($request instanceof Request)
&& ($request->getMethod() == 'POST')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/documents:/children')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken])
&& ($request->getHeader('content-type') == ['application/json'])
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/documents:/children')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken)
&& ($request->getHeader('content-type') == 'application/json')
&& ((string) $request->getBody() == $content);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -283,12 +286,12 @@ public function testListChildren()
$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/documents/pictures:/children')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/documents/pictures:/children')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -304,12 +307,12 @@ public function testDelete()
$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'DELETE')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/documents/pictures/some%20picture.jpg')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/documents/pictures/some%20picture.jpg')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};

$response = new Response(204, [], 'successful response');
$response = new Response(204, [], $this->buildQueryStringAsStream('successful response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand Down Expand Up @@ -339,12 +342,12 @@ public function testItemExists()
$assertRequest = function ($request) use ($accessToken) {
return ($request instanceof Request)
&& ($request->getMethod() == 'GET')
&& ($request->getUri()->getHost() == 'api.onedrive.com')
&& ($request->getUri()->getPath() == '/v1.0/drive/root:/some%20file.txt')
&& ($request->getHeader('authorization') == ['bearer '.$accessToken]);
&& ($request->getHost() == 'api.onedrive.com')
&& ($request->getPath() == '/v1.0/drive/root:/some%20file.txt')
&& ($request->getHeader('authorization') == 'bearer '.$accessToken);
};

$response = new Response(200, [], 'test response');
$response = new Response(200, [], $this->buildQueryStringAsStream('test response'));
$client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);

$oneDriveClient = new OneDriveClient($accessToken, $client);
Expand All @@ -371,7 +374,7 @@ public function testItemExistsWhenItDoesntExist()
*/
private function getResponseWithFileMetadata()
{
$body = file_get_contents(__DIR__.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'fileMetadata.json');
$body = $this->buildQueryStringAsStream(file_get_contents(__DIR__.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'fileMetadata.json'));
$response = new Response(200, [], $body);

return $response;
Expand Down

0 comments on commit 8006005

Please sign in to comment.