Skip to content

Commit 53c8991

Browse files
tmdkrenatomefi
authored andcommitted
Always override request method if CURLOPT_CUSTOMREQUEST is set
1 parent 41827cc commit 53c8991

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

src/VCR/Request.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ public function getBody()
148148
*/
149149
public function getMethod()
150150
{
151+
if ($this->getCurlOption(CURLOPT_CUSTOMREQUEST) !== null) {
152+
return $this->getCurlOption(CURLOPT_CUSTOMREQUEST);
153+
}
154+
151155
return $this->method;
152156
}
153157

src/VCR/Util/CurlHelper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public static function setCurlOptionOnRequest(Request $request, $option, $value,
140140
$request->setUrl($value);
141141
break;
142142
case CURLOPT_CUSTOMREQUEST:
143-
$request->setMethod($value);
143+
$request->setCurlOption(CURLOPT_CUSTOMREQUEST, $value);
144144
break;
145145
case CURLOPT_POST:
146146
if ($value == true) {

tests/VCR/RequestTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,19 @@ public function testGetHostReturnsBothHostAndPort()
215215
$request = new Request('GET', 'http://example.com:5000/foo?param=key');
216216
$this->assertEquals('example.com:5000', $request->getHost());
217217
}
218+
219+
public function testCurlCustomRequestOverridesMethod()
220+
{
221+
$postRequest = new Request('POST', 'http://example.com');
222+
$getRequest = new Request('GET', 'http://example.com');
223+
224+
$this->assertEquals('POST', $postRequest->getMethod());
225+
$this->assertEquals('GET', $getRequest->getMethod());
226+
227+
$postRequest->setCurlOption(CURLOPT_CUSTOMREQUEST, 'PUT');
228+
$getRequest->setCurlOption(CURLOPT_CUSTOMREQUEST, 'POST');
229+
230+
$this->assertEquals('PUT', $postRequest->getMethod());
231+
$this->assertEquals('POST', $getRequest->getMethod());
232+
}
218233
}

tests/VCR/Util/CurlHelperTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,4 +402,26 @@ public function getCurlOptionProvider()
402402
),
403403
);
404404
}
405+
406+
public function testSetCurlOptionCustomRequest()
407+
{
408+
$request = new Request('POST', 'http://example.com');
409+
410+
CurlHelper::setCurlOptionOnRequest($request, CURLOPT_CUSTOMREQUEST, 'PUT');
411+
412+
$this->assertEquals('PUT', $request->getCurlOption(CURLOPT_CUSTOMREQUEST));
413+
}
414+
415+
public function testCurlCustomRequestAlwaysOverridesMethod()
416+
{
417+
$request = new Request('POST', 'http://example.com');
418+
419+
CurlHelper::setCurlOptionOnRequest($request, CURLOPT_CUSTOMREQUEST, 'DELETE');
420+
421+
$this->assertEquals('DELETE', $request->getMethod());
422+
423+
CurlHelper::setCurlOptionOnRequest($request, CURLOPT_POSTFIELDS, array('some' => 'test'));
424+
425+
$this->assertEquals('DELETE', $request->getMethod());
426+
}
405427
}

0 commit comments

Comments
 (0)