parent
13904a7f89
commit
5f044ebf1b
@ -1 +1 @@ |
||||
Subproject commit 244f75dc8d4552bb73a4aa93a1c6eeafdeb801d8 |
||||
Subproject commit e4f341066a2f9740cabffd20aa76742ce7cd8bfd |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,268 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use GuzzleHttp\Client as GuzzleClient; |
||||
use OCP\Http\Client\IClient; |
||||
use OCP\ICertificateManager; |
||||
use OCP\IConfig; |
||||
|
||||
/** |
||||
* Class Client |
||||
* |
||||
* @package OC\Http |
||||
*/ |
||||
class Client implements IClient { |
||||
/** @var GuzzleClient */ |
||||
private $client; |
||||
/** @var IConfig */ |
||||
private $config; |
||||
/** @var ICertificateManager */ |
||||
private $certificateManager; |
||||
|
||||
/** |
||||
* @param IConfig $config |
||||
* @param ICertificateManager $certificateManager |
||||
* @param GuzzleClient $client |
||||
*/ |
||||
public function __construct(IConfig $config, |
||||
ICertificateManager $certificateManager, |
||||
GuzzleClient $client) { |
||||
$this->config = $config; |
||||
$this->client = $client; |
||||
$this->certificateManager = $certificateManager; |
||||
$this->setDefaultOptions(); |
||||
} |
||||
|
||||
/** |
||||
* Sets the default options to the client |
||||
*/ |
||||
private function setDefaultOptions() { |
||||
// Either use default bundle or the user bundle if nothing is specified |
||||
if($this->certificateManager->listCertificates() !== []) { |
||||
$dataDir = $this->config->getSystemValue('datadirectory'); |
||||
$this->client->setDefaultOption('verify', $dataDir.'/'.$this->certificateManager->getCertificateBundle()); |
||||
} else { |
||||
$this->client->setDefaultOption('verify', \OC::$SERVERROOT . '/config/ca-bundle.crt'); |
||||
} |
||||
|
||||
$this->client->setDefaultOption('headers/User-Agent', 'ownCloud Server Crawler'); |
||||
if($this->getProxyUri() !== '') { |
||||
$this->client->setDefaultOption('proxy', $this->getProxyUri()); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Get the proxy URI |
||||
* @return string |
||||
*/ |
||||
private function getProxyUri() { |
||||
$proxyHost = $this->config->getSystemValue('proxy', null); |
||||
$proxyUserPwd = $this->config->getSystemValue('proxyuserpwd', null); |
||||
$proxyUri = ''; |
||||
|
||||
if(!is_null($proxyUserPwd)) { |
||||
$proxyUri .= $proxyUserPwd.'@'; |
||||
} |
||||
if(!is_null($proxyHost)) { |
||||
$proxyUri .= $proxyHost; |
||||
} |
||||
|
||||
return $proxyUri; |
||||
} |
||||
|
||||
/** |
||||
* Sends a GET request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'query' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
* @throws \Exception If the request could not get completed |
||||
*/ |
||||
public function get($uri, array $options = []) { |
||||
$response = $this->client->get($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
|
||||
/** |
||||
* Sends a HEAD request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
*/ |
||||
public function head($uri, $options = []) { |
||||
$response = $this->client->head($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
|
||||
/** |
||||
* Sends a POST request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
*/ |
||||
public function post($uri, array $options = []) { |
||||
$response = $this->client->post($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
|
||||
/** |
||||
* Sends a PUT request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
*/ |
||||
public function put($uri, array $options = []) { |
||||
$response = $this->client->put($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
|
||||
/** |
||||
* Sends a DELETE request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
*/ |
||||
public function delete($uri, array $options = []) { |
||||
$response = $this->client->delete($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Sends a options request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* 'timeout' => 5, |
||||
* @return Response |
||||
*/ |
||||
public function options($uri, array $options = []) { |
||||
$response = $this->client->options($uri, $options); |
||||
return new Response($response); |
||||
} |
||||
} |
@ -0,0 +1,43 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use GuzzleHttp\Client as GuzzleClient; |
||||
use OCP\Http\Client\IClientService; |
||||
use OCP\ICertificateManager; |
||||
use OCP\IConfig; |
||||
|
||||
/** |
||||
* Class ClientService |
||||
* |
||||
* @package OC\Http |
||||
*/ |
||||
class ClientService implements IClientService { |
||||
/** @var IConfig */ |
||||
private $config; |
||||
/** @var ICertificateManager */ |
||||
private $certificateManager; |
||||
|
||||
/** |
||||
* @param IConfig $config |
||||
* @param ICertificateManager $certificateManager |
||||
*/ |
||||
public function __construct(IConfig $config, |
||||
ICertificateManager $certificateManager) { |
||||
$this->config = $config; |
||||
$this->certificateManager = $certificateManager; |
||||
} |
||||
|
||||
/** |
||||
* @return Client |
||||
*/ |
||||
public function newClient() { |
||||
return new Client($this->config, $this->certificateManager, new GuzzleClient()); |
||||
} |
||||
} |
@ -0,0 +1,58 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use OCP\Http\Client\IResponse; |
||||
use GuzzleHttp\Message\Response as GuzzleResponse; |
||||
|
||||
/** |
||||
* Class Response |
||||
* |
||||
* @package OC\Http |
||||
*/ |
||||
class Response implements IResponse { |
||||
/** @var GuzzleResponse */ |
||||
private $response; |
||||
|
||||
/** |
||||
* @param GuzzleResponse $response |
||||
*/ |
||||
public function __construct(GuzzleResponse $response) { |
||||
$this->response = $response; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function getBody() { |
||||
return $this->response->getBody()->getContents(); |
||||
} |
||||
|
||||
/** |
||||
* @return int |
||||
*/ |
||||
public function getStatusCode() { |
||||
return $this->response->getStatusCode(); |
||||
} |
||||
|
||||
/** |
||||
* @param $key |
||||
* @return string |
||||
*/ |
||||
public function getHeader($key) { |
||||
return $this->response->getHeader($key); |
||||
} |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getHeaders() { |
||||
return $this->response->getHeaders(); |
||||
} |
||||
} |
@ -0,0 +1,181 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OCP\Http\Client; |
||||
|
||||
/** |
||||
* Interface IClient |
||||
* |
||||
* @package OCP\Http |
||||
*/ |
||||
interface IClient { |
||||
|
||||
/** |
||||
* Sends a GET request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'query' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
* @throws \Exception If the request could not get completed |
||||
*/ |
||||
public function get($uri, array $options = []); |
||||
|
||||
/** |
||||
* Sends a HEAD request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
*/ |
||||
public function head($uri, $options = []); |
||||
|
||||
/** |
||||
* Sends a POST request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
*/ |
||||
public function post($uri, array $options = []); |
||||
|
||||
/** |
||||
* Sends a PUT request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
*/ |
||||
public function put($uri, array $options = []); |
||||
|
||||
/** |
||||
* Sends a DELETE request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
*/ |
||||
public function delete($uri, array $options = []); |
||||
|
||||
/** |
||||
* Sends a options request |
||||
* @param string $uri |
||||
* @param array $options Array such as |
||||
* 'body' => [ |
||||
* 'field' => 'abc', |
||||
* 'other_field' => '123', |
||||
* 'file_name' => fopen('/path/to/file', 'r'), |
||||
* ], |
||||
* 'headers' => [ |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'cookies' => [' |
||||
* 'foo' => 'bar', |
||||
* ], |
||||
* 'allow_redirects' => [ |
||||
* 'max' => 10, // allow at most 10 redirects. |
||||
* 'strict' => true, // use "strict" RFC compliant redirects. |
||||
* 'referer' => true, // add a Referer header |
||||
* 'protocols' => ['https'] // only allow https URLs |
||||
* ], |
||||
* 'save_to' => '/path/to/file', // save to a file or a stream |
||||
* 'verify' => true, // bool or string to CA file |
||||
* 'debug' => true, |
||||
* @return IResponse |
||||
*/ |
||||
public function options($uri, array $options = []); |
||||
} |
@ -0,0 +1,21 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OCP\Http\Client; |
||||
|
||||
/** |
||||
* Interface IClientService |
||||
* |
||||
* @package OCP\Http |
||||
*/ |
||||
interface IClientService { |
||||
/** |
||||
* @return IClient |
||||
*/ |
||||
public function newClient(); |
||||
} |
@ -0,0 +1,37 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OCP\Http\Client; |
||||
|
||||
/** |
||||
* Interface IResponse |
||||
* |
||||
* @package OCP\Http |
||||
*/ |
||||
interface IResponse { |
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function getBody(); |
||||
|
||||
/** |
||||
* @return int |
||||
*/ |
||||
public function getStatusCode(); |
||||
|
||||
/** |
||||
* @param $key |
||||
* @return string |
||||
*/ |
||||
public function getHeader($key); |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getHeaders(); |
||||
} |
@ -0,0 +1,77 @@ |
||||
<?php |
||||
/** |
||||
* @author Lukas Reschke |
||||
* @copyright 2015 Lukas Reschke lukas@owncloud.com |
||||
* |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Repair; |
||||
|
||||
use OC\Files\View; |
||||
use OC\Hooks\BasicEmitter; |
||||
use OC\RepairStep; |
||||
use OC\Server; |
||||
use OCP\IConfig; |
||||
|
||||
/** |
||||
* Class UpdateCertificateStore rewrites the user specific certificate store after |
||||
* an update has been performed. This is done because a new root certificate file |
||||
* might have been added. |
||||
* |
||||
* @package OC\Repair |
||||
*/ |
||||
class UpdateCertificateStore extends BasicEmitter implements RepairStep { |
||||
/** |
||||
* FIXME: The certificate manager does only allow specifying the user |
||||
* within the constructor. This makes DI impossible. |
||||
* @var Server |
||||
*/ |
||||
protected $server; |
||||
/** @var IConfig */ |
||||
protected $config; |
||||
|
||||
/** |
||||
* @param Server $server |
||||
* @param IConfig $config |
||||
*/ |
||||
public function __construct(Server $server, |
||||
IConfig $config) { |
||||
$this->server = $server; |
||||
$this->config = $config; |
||||
} |
||||
|
||||
/** {@inheritDoc} */ |
||||
public function getName() { |
||||
return 'Update user certificate stores with new root certificates'; |
||||
} |
||||
|
||||
/** {@inheritDoc} */ |
||||
public function run() { |
||||
$rootView = new View(); |
||||
$dataDirectory = $this->config->getSystemValue('datadirectory', null); |
||||
if(is_null($dataDirectory)) { |
||||
throw new \Exception('No data directory specified'); |
||||
} |
||||
|
||||
$pathToRootCerts = '/files_external/rootcerts.crt'; |
||||
|
||||
foreach($rootView->getDirectoryContent('', 'httpd/unix-directory') as $fileInfo) { |
||||
$uid = trim($fileInfo->getPath(), '/'); |
||||
if($rootView->file_exists($uid . $pathToRootCerts)) { |
||||
// Delete the existing root certificate |
||||
$rootView->unlink($uid . $pathToRootCerts); |
||||
|
||||
/** |
||||
* FIXME: The certificate manager does only allow specifying the user |
||||
* within the constructor. This makes DI impossible. |
||||
*/ |
||||
// Regenerate the certificates |
||||
$certificateManager = $this->server->getCertificateManager($uid); |
||||
$certificateManager->createCertificateBundle(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,25 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use GuzzleHttp\Client as GuzzleClient; |
||||
|
||||
/** |
||||
* Class ClientServiceTest |
||||
*/ |
||||
class ClientServiceTest extends \Test\TestCase { |
||||
public function testNewClient() { |
||||
$config = $this->getMock('\OCP\IConfig'); |
||||
$certificateManager = $this->getMock('\OCP\ICertificateManager'); |
||||
|
||||
$expected = new Client($config, $certificateManager, new GuzzleClient()); |
||||
$clientService = new ClientService($config, $certificateManager); |
||||
$this->assertEquals($expected, $clientService->newClient()); |
||||
} |
||||
} |
@ -0,0 +1,110 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use GuzzleHttp\Message\Response; |
||||
use OCP\IConfig; |
||||
|
||||
/** |
||||
* Class ClientTest |
||||
*/ |
||||
class ClientTest extends \Test\TestCase { |
||||
/** @var \GuzzleHttp\Client */ |
||||
private $guzzleClient; |
||||
/** @var Client */ |
||||
private $client; |
||||
/** @var IConfig */ |
||||
private $config; |
||||
|
||||
public function setUp() { |
||||
parent::setUp(); |
||||
$this->config = $this->getMock('\OCP\IConfig'); |
||||
$this->guzzleClient = $this->getMockBuilder('\GuzzleHttp\Client') |
||||
->disableOriginalConstructor() |
||||
->getMock(); |
||||
$certificateManager = $this->getMock('\OCP\ICertificateManager'); |
||||
$this->client = new Client( |
||||
$this->config, |
||||
$certificateManager, |
||||
$this->guzzleClient |
||||
); |
||||
} |
||||
|
||||
public function testGetProxyUri() { |
||||
$this->config |
||||
->expects($this->at(0)) |
||||
->method('getSystemValue') |
||||
->with('proxy', null) |
||||
->willReturn(null); |
||||
$this->config |
||||
->expects($this->at(1)) |
||||
->method('getSystemValue') |
||||
->with('proxyuserpwd', null) |
||||
->willReturn(null); |
||||
$this->assertSame('', \Test_Helper::invokePrivate($this->client, 'getProxyUri')); |
||||
} |
||||
|
||||
public function testGetProxyUriProxyHostEmptyPassword() { |
||||
$this->config |
||||
->expects($this->at(0)) |
||||
->method('getSystemValue') |
||||
->with('proxy', null) |
||||
->willReturn('foo'); |
||||
$this->config |
||||
->expects($this->at(1)) |
||||
->method('getSystemValue') |
||||
->with('proxyuserpwd', null) |
||||
->willReturn(null); |
||||
$this->assertSame('foo', \Test_Helper::invokePrivate($this->client, 'getProxyUri')); |
||||
} |
||||
|
||||
public function testGetProxyUriProxyHostWithPassword() { |
||||
$this->config |
||||
->expects($this->at(0)) |
||||
->method('getSystemValue') |
||||
->with('proxy', null) |
||||
->willReturn('foo'); |
||||
$this->config |
||||
->expects($this->at(1)) |
||||
->method('getSystemValue') |
||||
->with('proxyuserpwd', null) |
||||
->willReturn('username:password'); |
||||
$this->assertSame('username:password@foo', \Test_Helper::invokePrivate($this->client, 'getProxyUri')); |
||||
} |
||||
|
||||
public function testGet() { |
||||
$this->guzzleClient->method('get') |
||||
->willReturn(new Response(1337)); |
||||
$this->assertEquals(1337, $this->client->get('http://localhost/', [])->getStatusCode()); |
||||
} |
||||
|
||||
public function testPost() { |
||||
$this->guzzleClient->method('post') |
||||
->willReturn(new Response(1337)); |
||||
$this->assertEquals(1337, $this->client->post('http://localhost/', [])->getStatusCode()); |
||||
} |
||||
|
||||
public function testPut() { |
||||
$this->guzzleClient->method('put') |
||||
->willReturn(new Response(1337)); |
||||
$this->assertEquals(1337, $this->client->put('http://localhost/', [])->getStatusCode()); |
||||
} |
||||
|
||||
public function testDelete() { |
||||
$this->guzzleClient->method('delete') |
||||
->willReturn(new Response(1337)); |
||||
$this->assertEquals(1337, $this->client->delete('http://localhost/', [])->getStatusCode()); |
||||
} |
||||
|
||||
public function testOptions() { |
||||
$this->guzzleClient->method('options') |
||||
->willReturn(new Response(1337)); |
||||
$this->assertEquals(1337, $this->client->options('http://localhost/', [])->getStatusCode()); |
||||
} |
||||
} |
@ -0,0 +1,37 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2015 Lukas Reschke <lukas@owncloud.com> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
namespace OC\Http\Client; |
||||
|
||||
use Guzzle\Stream\Stream; |
||||
use GuzzleHttp\Message\Response as GuzzleResponse; |
||||
|
||||
/** |
||||
* Class ResponseTest |
||||
*/ |
||||
class ResponseTest extends \Test\TestCase { |
||||
/** @var Response */ |
||||
private $response; |
||||
/** @var GuzzleResponse */ |
||||
private $guzzleResponse; |
||||
|
||||
public function setUp() { |
||||
parent::setUp(); |
||||
$this->guzzleResponse = new GuzzleResponse(1337); |
||||
$this->response = new Response($this->guzzleResponse); |
||||
} |
||||
|
||||
public function testGetStatusCode() { |
||||
$this->assertEquals(1337, $this->response->getStatusCode()); |
||||
} |
||||
|
||||
public function testGetHeader() { |
||||
$this->guzzleResponse->setHeader('bar', 'foo'); |
||||
$this->assertEquals('foo', $this->response->getHeader('bar')); |
||||
} |
||||
} |
Loading…
Reference in new issue