diff --git a/lib/AktiveMerchant/Http/Adapter/cUrl.php b/lib/AktiveMerchant/Http/Adapter/cUrl.php index f51887c..a647b54 100644 --- a/lib/AktiveMerchant/Http/Adapter/cUrl.php +++ b/lib/AktiveMerchant/Http/Adapter/cUrl.php @@ -228,7 +228,7 @@ protected function apply_options(RequestInterface $request) ); $config = $this->map_config($request->getConfig()); - $this->options = $this->options + $config + $default; + $this->options = array_replace($this->options, $config, $default); curl_setopt_array($this->ch, $this->options); } diff --git a/tests/AktiveMerchant/Http/Adapter/cUrlTest.php b/tests/AktiveMerchant/Http/Adapter/cUrlTest.php index fc80b85..d82ec46 100644 --- a/tests/AktiveMerchant/Http/Adapter/cUrlTest.php +++ b/tests/AktiveMerchant/Http/Adapter/cUrlTest.php @@ -5,8 +5,9 @@ namespace AktiveMerchant\Http\Adapter; use AktiveMerchant\Mock\Request; +use PHPUnit_Framework_TestCase; -class cUrlTest extends \PHPUnit_Framework_TestCase +class cUrlTest extends PHPUnit_Framework_TestCase { public function testAdapterConfig() { @@ -26,4 +27,26 @@ public function testAdapterConfig() $this->assertEquals(20, $options[CURLOPT_CONNECTTIMEOUT]); } + + /** + * @throws Exception + */ + public function testItShouldOverrideOptionsOnConcurrentRequests() + { + $request = new Request(); + $adapter = new cUrl(); + + $request->setUrl('http://www.httpbin.org/get'); + $adapter->sendRequest($request); + + $concurrentRequestUrl = 'https://www.examples.com/'; + $request->setUrl($concurrentRequestUrl); + $adapter->sendRequest($request); + $concurrentOptions = $adapter->getOptions(); + + $this->assertEquals( + $concurrentRequestUrl, + $concurrentOptions[10002] + ); + } }