summaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2018-06-14 21:12:29 +0200
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2018-06-14 21:36:04 +0200
commit00c3a7eb4c8eb7442705dc11d87d7bda3c69bd57 (patch)
treeedcb315d7f0d466c91f07e7bcbc49cdb933cbc97 /tests/lib
parent479e31997f0ecde8d3cf59cc54c5f8ac4b1f80d8 (diff)
downloadnextcloud-server-00c3a7eb4c8eb7442705dc11d87d7bda3c69bd57.tar.gz
nextcloud-server-00c3a7eb4c8eb7442705dc11d87d7bda3c69bd57.zip
Fix HTTP client given options being overriden by default options
According to the array_merge documentation, "If the input arrays have the same string keys, then the later value for that key will overwrite the previous one." Thus, the default options must be the first parameter passed to array_merge. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/Http/Client/ClientTest.php127
1 files changed, 127 insertions, 0 deletions
diff --git a/tests/lib/Http/Client/ClientTest.php b/tests/lib/Http/Client/ClientTest.php
index ec4ca6ec90c..7f12a824d17 100644
--- a/tests/lib/Http/Client/ClientTest.php
+++ b/tests/lib/Http/Client/ClientTest.php
@@ -27,6 +27,8 @@ class ClientTest extends \Test\TestCase {
private $client;
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
private $config;
+ /** @var array */
+ private $defaultRequestOptions;
public function setUp() {
parent::setUp();
@@ -85,42 +87,167 @@ class ClientTest extends \Test\TestCase {
$this->assertSame('username:password@foo', self::invokePrivate($this->client, 'getProxyUri'));
}
+ private function setUpDefaultRequestOptions() {
+ $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->certificateManager
+ ->expects($this->once())
+ ->method('getAbsoluteBundlePath')
+ ->with(null)
+ ->willReturn('/my/path.crt');
+
+ $this->defaultRequestOptions = [
+ 'verify' => '/my/path.crt',
+ 'proxy' => 'foo'
+ ];
+ }
+
public function testGet() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('get', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->get('http://localhost/', [])->getStatusCode());
}
+ public function testGetWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('get', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->get('http://localhost/', $options)->getStatusCode());
+ }
+
public function testPost() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('post', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->post('http://localhost/', [])->getStatusCode());
}
+ public function testPostWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('post', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->post('http://localhost/', $options)->getStatusCode());
+ }
+
public function testPut() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('put', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->put('http://localhost/', [])->getStatusCode());
}
+ public function testPutWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('put', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->put('http://localhost/', $options)->getStatusCode());
+ }
+
public function testDelete() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('delete', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->delete('http://localhost/', [])->getStatusCode());
}
+ public function testDeleteWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('delete', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->delete('http://localhost/', $options)->getStatusCode());
+ }
+
public function testOptions() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('options', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->options('http://localhost/', [])->getStatusCode());
}
+ public function testOptionsWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('options', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->options('http://localhost/', $options)->getStatusCode());
+ }
+
public function testHead() {
+ $this->setUpDefaultRequestOptions();
+
$this->guzzleClient->method('request')
+ ->with('head', 'http://localhost/', $this->defaultRequestOptions)
->willReturn(new Response(1337));
$this->assertEquals(1337, $this->client->head('http://localhost/', [])->getStatusCode());
}
+ public function testHeadWithOptions() {
+ $this->setUpDefaultRequestOptions();
+
+ $options = [
+ 'verify' => false,
+ 'proxy' => 'bar'
+ ];
+
+ $this->guzzleClient->method('request')
+ ->with('head', 'http://localhost/', $options)
+ ->willReturn(new Response(1337));
+ $this->assertEquals(1337, $this->client->head('http://localhost/', $options)->getStatusCode());
+ }
+
public function testSetDefaultOptionsWithNotInstalled() {
$this->config
->expects($this->at(0))