Add connection timeout to default POST options

Fixes https://github.com/owncloud/core/issues/16560
This commit is contained in:
Lukas Reschke 2015-05-26 11:22:50 +02:00
parent b82d902e18
commit dff361dc5c
2 changed files with 80 additions and 3 deletions

View File

@ -102,7 +102,13 @@ class HTTPHelper {
$client = $this->clientService->newClient();
try {
$response = $client->post($url, ['body' => $fields]);
$response = $client->post(
$url,
[
'body' => $fields,
'connect_timeout' => 10,
]
);
} catch (\Exception $e) {
return ['success' => false, 'result' => $e->getMessage()];
}

View File

@ -12,15 +12,17 @@ class TestHTTPHelper extends \Test\TestCase {
private $config;
/** @var \OC\HTTPHelper */
private $httpHelperMock;
/** @var \OCP\Http\Client\IClientService */
private $clientService;
protected function setUp() {
parent::setUp();
$this->config = $this->getMockBuilder('\OCP\IConfig')
->disableOriginalConstructor()->getMock();
$clientService = $this->getMock('\OCP\Http\Client\IClientService');
$this->clientService = $this->getMock('\OCP\Http\Client\IClientService');
$this->httpHelperMock = $this->getMockBuilder('\OC\HTTPHelper')
->setConstructorArgs(array($this->config, $clientService))
->setConstructorArgs(array($this->config, $this->clientService))
->setMethods(array('getHeaders'))
->getMock();
}
@ -44,4 +46,73 @@ class TestHTTPHelper extends \Test\TestCase {
public function testIsHTTP($url, $expected) {
$this->assertSame($expected, $this->httpHelperMock->isHTTPURL($url));
}
public function testPostSuccess() {
$client = $this->getMockBuilder('\OCP\Http\Client\IClient')
->disableOriginalConstructor()->getMock();
$this->clientService
->expects($this->once())
->method('newClient')
->will($this->returnValue($client));
$response = $this->getMockBuilder('\OCP\Http\Client\IResponse')
->disableOriginalConstructor()->getMock();
$client
->expects($this->once())
->method('post')
->with(
'https://owncloud.org',
[
'body' => [
'Foo' => 'Bar',
],
'connect_timeout' => 10,
]
)
->will($this->returnValue($response));
$response
->expects($this->once())
->method('getBody')
->will($this->returnValue('Body of the requested page'));
$response = $this->httpHelperMock->post('https://owncloud.org', ['Foo' => 'Bar']);
$expected = [
'success' => true,
'result' => 'Body of the requested page'
];
$this->assertSame($expected, $response);
}
public function testPostException() {
$client = $this->getMockBuilder('\OCP\Http\Client\IClient')
->disableOriginalConstructor()->getMock();
$this->clientService
->expects($this->once())
->method('newClient')
->will($this->returnValue($client));
$client
->expects($this->once())
->method('post')
->with(
'https://owncloud.org',
[
'body' => [
'Foo' => 'Bar',
],
'connect_timeout' => 10,
]
)
->will($this->throwException(new \Exception('Something failed')));
$response = $this->httpHelperMock->post('https://owncloud.org', ['Foo' => 'Bar']);
$expected = [
'success' => false,
'result' => 'Something failed'
];
$this->assertSame($expected, $response);
}
}