diff --git a/tests/PHPCurlClass/PHPCurlClassTest.php b/tests/PHPCurlClass/PHPCurlClassTest.php index 7adcc54..ae0c06f 100644 --- a/tests/PHPCurlClass/PHPCurlClassTest.php +++ b/tests/PHPCurlClass/PHPCurlClassTest.php @@ -124,6 +124,11 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->server('server', 'PATCH', $data); $this->assertEquals(Test::TEST_URL, $test->curl->url); + // curl -v --request SEARCH "http://127.0.0.1:8000/" --data "foo=bar" + $test = new Test(); + $test->server('server', 'SEARCH', $data); + $this->assertEquals(Test::TEST_URL, $test->curl->url); + // curl -v --request DELETE "http://127.0.0.1:8000/?foo=bar" $test = new Test(); $test->server('server', 'DELETE', $data); @@ -183,6 +188,11 @@ class CurlTest extends \PHPUnit\Framework\TestCase $curl->setHeader('X-DEBUG-TEST', 'put'); $curl->put($data); $this->assertEquals('key=value', $curl->response); + + $curl = new Curl(Test::TEST_URL); + $curl->setHeader('X-DEBUG-TEST', 'search'); + $curl->search($data); + $this->assertEquals('key=value', $curl->response); } public function testSetUrl() @@ -230,6 +240,12 @@ class CurlTest extends \PHPUnit\Framework\TestCase $curl->put($data); $this->assertEquals('PUT / HTTP/1.1', $curl->requestHeaders['Request-Line']); $this->assertEquals(Test::TEST_URL, $curl->effectiveUrl); + + $curl = new Curl(); + $curl->setUrl(Test::TEST_URL); + $curl->search($data); + $this->assertEquals('SEARCH / HTTP/1.1', $curl->requestHeaders['Request-Line']); + $this->assertEquals(Test::TEST_URL, $curl->effectiveUrl); } public function testEffectiveUrl() @@ -995,6 +1011,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase 'POST' => 'OK', 'PUT' => 'OK', 'PATCH' => 'OK', + 'SEARCH' => 'OK', 'DELETE' => 'OK', 'HEAD' => '', 'OPTIONS' => 'OK', @@ -1267,6 +1284,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test = new Test(); $this->assertFalse(substr($test->server('request_uri', 'PATCH'), -1) === '?'); $test = new Test(); + $this->assertFalse(substr($test->server('request_uri', 'SEARCH'), -1) === '?'); + $test = new Test(); $this->assertFalse(substr($test->server('request_uri', 'DELETE'), -1) === '?'); } @@ -3025,6 +3044,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('GET', 'DELETE'); $test->chainRequests('GET', 'HEAD'); $test->chainRequests('GET', 'OPTIONS'); + $test->chainRequests('GET', 'SEARCH'); $test->chainRequests('GET', 'GET'); $test = new Test(); @@ -3034,7 +3054,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('GET', 'DELETE', array('d' => '4444')); $test->chainRequests('GET', 'HEAD', array('e' => '55555')); $test->chainRequests('GET', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('GET', 'GET', array('g' => '7777777')); + $test->chainRequests('GET', 'SEARCH', array('h' => '7777777')); + $test->chainRequests('GET', 'GET', array('g' => '88888888')); } public function testRequestMethodSuccessivePostRequests() @@ -3046,6 +3067,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('POST', 'DELETE'); $test->chainRequests('POST', 'HEAD'); $test->chainRequests('POST', 'OPTIONS'); + $test->chainRequests('POST', 'SEARCH'); $test->chainRequests('POST', 'POST'); $test = new Test(); @@ -3055,7 +3077,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('POST', 'DELETE', array('d' => '4444')); $test->chainRequests('POST', 'HEAD', array('e' => '55555')); $test->chainRequests('POST', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('POST', 'POST', array('g' => '7777777')); + $test->chainRequests('POST', 'SEARCH', array('g' => '7777777')); + $test->chainRequests('POST', 'POST', array('g' => '88888888')); } public function testRequestMethodSuccessivePutRequests() @@ -3067,6 +3090,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('PUT', 'DELETE'); $test->chainRequests('PUT', 'HEAD'); $test->chainRequests('PUT', 'OPTIONS'); + $test->chainRequests('PUT', 'SEARCH'); $test->chainRequests('PUT', 'PUT'); $test = new Test(); @@ -3076,7 +3100,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('PUT', 'DELETE', array('d' => '4444')); $test->chainRequests('PUT', 'HEAD', array('e' => '55555')); $test->chainRequests('PUT', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('PUT', 'PUT', array('g' => '7777777')); + $test->chainRequests('PUT', 'SEARCH', array('f' => '7777777')); + $test->chainRequests('PUT', 'PUT', array('g' => '88888888')); } public function testRequestMethodSuccessivePatchRequests() @@ -3088,6 +3113,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('PATCH', 'DELETE'); $test->chainRequests('PATCH', 'HEAD'); $test->chainRequests('PATCH', 'OPTIONS'); + $test->chainRequests('PATCH', 'SEARCH'); $test->chainRequests('PATCH', 'PATCH'); $test = new Test(); @@ -3097,7 +3123,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('PATCH', 'DELETE', array('d' => '4444')); $test->chainRequests('PATCH', 'HEAD', array('e' => '55555')); $test->chainRequests('PATCH', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('PATCH', 'PATCH', array('g' => '7777777')); + $test->chainRequests('PATCH', 'SEARCH', array('f' => '7777777')); + $test->chainRequests('PATCH', 'PATCH', array('g' => '88888888')); } public function testRequestMethodSuccessiveDeleteRequests() @@ -3109,6 +3136,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('DELETE', 'PATCH'); $test->chainRequests('DELETE', 'HEAD'); $test->chainRequests('DELETE', 'OPTIONS'); + $test->chainRequests('DELETE', 'SEARCH'); $test->chainRequests('DELETE', 'DELETE'); $test = new Test(); @@ -3118,7 +3146,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('DELETE', 'PATCH', array('d' => '4444')); $test->chainRequests('DELETE', 'HEAD', array('e' => '55555')); $test->chainRequests('DELETE', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('DELETE', 'DELETE', array('g' => '7777777')); + $test->chainRequests('DELETE', 'SEARCH', array('f' => '7777777')); + $test->chainRequests('DELETE', 'DELETE', array('g' => '88888888')); } public function testRequestMethodSuccessiveHeadRequests() @@ -3130,6 +3159,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('HEAD', 'PATCH'); $test->chainRequests('HEAD', 'DELETE'); $test->chainRequests('HEAD', 'OPTIONS'); + $test->chainRequests('HEAD', 'SEARCH'); $test->chainRequests('HEAD', 'HEAD'); $test = new Test(); @@ -3139,7 +3169,8 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('HEAD', 'PATCH', array('d' => '4444')); $test->chainRequests('HEAD', 'DELETE', array('e' => '55555')); $test->chainRequests('HEAD', 'OPTIONS', array('f' => '666666')); - $test->chainRequests('HEAD', 'HEAD', array('g' => '7777777')); + $test->chainRequests('HEAD', 'SEARCH', array('g' => '7777777')); + $test->chainRequests('HEAD', 'HEAD', array('g' => '88888888')); } public function testRequestMethodSuccessiveOptionsRequests() @@ -3150,6 +3181,7 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('OPTIONS', 'PUT'); $test->chainRequests('OPTIONS', 'PATCH'); $test->chainRequests('OPTIONS', 'DELETE'); + $test->chainRequests('OPTIONS', 'SEARCH'); $test->chainRequests('OPTIONS', 'HEAD'); $test->chainRequests('OPTIONS', 'OPTIONS'); @@ -3159,8 +3191,32 @@ class CurlTest extends \PHPUnit\Framework\TestCase $test->chainRequests('OPTIONS', 'PUT', array('c' => '333')); $test->chainRequests('OPTIONS', 'PATCH', array('d' => '4444')); $test->chainRequests('OPTIONS', 'DELETE', array('e' => '55555')); - $test->chainRequests('OPTIONS', 'HEAD', array('f' => '666666')); - $test->chainRequests('OPTIONS', 'OPTIONS', array('g' => '7777777')); + $test->chainRequests('OPTIONS', 'SEARCH', array('g' => '666666')); + $test->chainRequests('OPTIONS', 'HEAD', array('f' => '7777777')); + $test->chainRequests('OPTIONS', 'OPTIONS', array('g' => '88888888')); + } + + public function testRequestMethodSuccessiveSearchRequests() + { + $test = new Test(); + $test->chainRequests('SEARCH', 'GET'); + $test->chainRequests('SEARCH', 'POST'); + $test->chainRequests('SEARCH', 'PUT'); + $test->chainRequests('SEARCH', 'PATCH'); + $test->chainRequests('SEARCH', 'DELETE'); + $test->chainRequests('SEARCH', 'HEAD'); + $test->chainRequests('SEARCH', 'OPTIONS'); + $test->chainRequests('SEARCH', 'SEARCH'); + + $test = new Test(); + $test->chainRequests('SEARCH', 'GET', array('a' => '1')); + $test->chainRequests('SEARCH', 'POST', array('b' => '22')); + $test->chainRequests('SEARCH', 'PUT', array('c' => '333')); + $test->chainRequests('SEARCH', 'PATCH', array('d' => '4444')); + $test->chainRequests('SEARCH', 'DELETE', array('e' => '55555')); + $test->chainRequests('SEARCH', 'HEAD', array('f' => '666666')); + $test->chainRequests('SEARCH', 'OPTIONS', array('g' => '7777777')); + $test->chainRequests('SEARCH', 'SEARCH', array('g' => '88888888')); } public function testMemoryLeak() diff --git a/tests/PHPCurlClass/PHPMultiCurlClassTest.php b/tests/PHPCurlClass/PHPMultiCurlClassTest.php index d9d9a59..58d25e5 100644 --- a/tests/PHPCurlClass/PHPMultiCurlClassTest.php +++ b/tests/PHPCurlClass/PHPMultiCurlClassTest.php @@ -50,6 +50,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $put_error_called = false; $put_complete_called = false; + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $multi_curl = new MultiCurl(); $multi_curl->beforeSend(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -60,7 +65,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -119,6 +125,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_before_send_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertFalse($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_before_send_called = true; + } }); $multi_curl->success(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -129,7 +142,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -188,6 +202,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_success_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_success_called = true; + } }); $multi_curl->error(function ($instance) use ( &$delete_error_called, @@ -197,7 +218,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_error_called, &$patch_error_called, &$post_error_called, - &$put_error_called + &$put_error_called, + &$search_error_called ) { $delete_error_called = true; $download_error_called = true; @@ -207,6 +229,7 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $patch_error_called = true; $post_error_called = true; $put_error_called = true; + $search_error_called = true; }); $multi_curl->complete(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -217,7 +240,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -276,6 +300,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_complete_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertTrue($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_complete_called = true; + } }); $multi_curl->addDelete(Test::TEST_URL); @@ -287,6 +318,7 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $multi_curl->addPatch(Test::TEST_URL); $multi_curl->addPost(Test::TEST_URL); $multi_curl->addPut(Test::TEST_URL); + $multi_curl->addSearch(Test::TEST_URL); $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -329,6 +361,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertTrue($put_success_called); $this->assertFalse($put_error_called); $this->assertTrue($put_complete_called); + + $this->assertTrue($search_before_send_called); + $this->assertTrue($search_success_called); + $this->assertFalse($search_error_called); + $this->assertTrue($search_complete_called); } public function testMultiCurlCallbackError() @@ -373,6 +410,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $put_error_called = false; $put_complete_called = false; + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $multi_curl = new MultiCurl(); $multi_curl->beforeSend(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -383,7 +425,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -442,6 +485,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_before_send_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertFalse($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_before_send_called = true; + } }); $multi_curl->success(function ($instance) use ( &$delete_success_called, @@ -451,7 +501,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_success_called, &$patch_success_called, &$post_success_called, - &$put_success_called + &$put_success_called, + &$search_success_called ) { $delete_success_called = true; $get_success_called = true; @@ -460,6 +511,7 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $patch_success_called = true; $post_success_called = true; $put_success_called = true; + $search_success_called = true; }); $multi_curl->error(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -470,7 +522,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -529,6 +582,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_error_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_error_called = true; + } }); $multi_curl->complete(function ($instance) use ( &$delete_before_send_called, &$delete_success_called, &$delete_error_called, &$delete_complete_called, @@ -539,7 +599,8 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase &$options_before_send_called, &$options_success_called, &$options_error_called, &$options_complete_called, &$patch_before_send_called, &$patch_success_called, &$patch_error_called, &$patch_complete_called, &$post_before_send_called, &$post_success_called, &$post_error_called, &$post_complete_called, - &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called + &$put_before_send_called, &$put_success_called, &$put_error_called, &$put_complete_called, + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called ) { \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); $request_method = $instance->getOpt(CURLOPT_CUSTOMREQUEST); @@ -598,6 +659,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertFalse($put_complete_called); $put_complete_called = true; } + if ($request_method === 'SEARCH') { + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertTrue($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_complete_called = true; + } \PHPUnit\Framework\Assert::assertTrue($instance->error); \PHPUnit\Framework\Assert::assertTrue($instance->curlError); \PHPUnit\Framework\Assert::assertFalse($instance->httpError); @@ -622,6 +690,7 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $multi_curl->addPatch(Test::ERROR_URL); $multi_curl->addPost(Test::ERROR_URL); $multi_curl->addPut(Test::ERROR_URL); + $multi_curl->addSearch(Test::ERROR_URL); $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -664,6 +733,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertFalse($put_success_called); $this->assertTrue($put_error_called); $this->assertTrue($put_complete_called); + + $this->assertTrue($search_before_send_called); + $this->assertFalse($search_success_called); + $this->assertTrue($search_error_called); + $this->assertTrue($search_complete_called); } public function testCurlCallback() @@ -1002,6 +1076,47 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $put_complete_called = true; }); + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $search = $multi_curl->addSearch(Test::TEST_URL); + $search->beforeSend(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertFalse($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_before_send_called = true; + }); + $search->success(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_success_called = true; + }); + $search->error(function ($instance) use ( + &$search_error_called + ) { + $search_error_called = true; + }); + $search->complete(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertTrue($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_complete_called = true; + }); + $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -1044,6 +1159,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertTrue($put_success_called); $this->assertFalse($put_error_called); $this->assertTrue($put_complete_called); + + $this->assertTrue($search_before_send_called); + $this->assertTrue($search_success_called); + $this->assertFalse($search_error_called); + $this->assertTrue($search_complete_called); } public function testCurlCallbackError() @@ -1382,6 +1502,47 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $put_complete_called = true; }); + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $search = $multi_curl->addSearch(Test::ERROR_URL); + $search->beforeSend(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertFalse($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_before_send_called = true; + }); + $search->success(function ($instance) use ( + &$search_success_called + ) { + $search_success_called = true; + }); + $search->error(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertFalse($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_error_called = true; + }); + $search->complete(function ($instance) use ( + &$search_before_send_called, &$search_success_called, &$search_error_called, &$search_complete_called + ) { + \PHPUnit\Framework\Assert::assertInstanceOf('Curl\Curl', $instance); + \PHPUnit\Framework\Assert::assertTrue($search_before_send_called); + \PHPUnit\Framework\Assert::assertFalse($search_success_called); + \PHPUnit\Framework\Assert::assertTrue($search_error_called); + \PHPUnit\Framework\Assert::assertFalse($search_complete_called); + $search_complete_called = true; + }); + $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -1424,6 +1585,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertFalse($put_success_called); $this->assertTrue($put_error_called); $this->assertTrue($put_complete_called); + + $this->assertTrue($search_before_send_called); + $this->assertFalse($search_success_called); + $this->assertTrue($search_error_called); + $this->assertTrue($search_complete_called); } public function testCurlCallbackOverride() @@ -1587,6 +1753,24 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $put_complete_called = true; }); + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $search = $multi_curl->addsearch(Test::TEST_URL); + $search->beforeSend(function ($instance) use (&$search_before_send_called) { + $search_before_send_called = true; + }); + $search->success(function ($instance) use (&$search_success_called) { + $search_success_called = true; + }); + $search->error(function ($instance) use (&$search_error_called) { + $search_error_called = true; + }); + $search->complete(function ($instance) use (&$search_complete_called) { + $search_complete_called = true; + }); + $multi_curl->start(); $this->assertTrue($delete_before_send_called); @@ -1629,6 +1813,11 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertTrue($put_success_called); $this->assertFalse($put_error_called); $this->assertTrue($put_complete_called); + + $this->assertTrue($search_before_send_called); + $this->assertTrue($search_success_called); + $this->assertFalse($search_error_called); + $this->assertTrue($search_complete_called); } public function testCurlCallbackAddedAfter() @@ -1826,6 +2015,30 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase $this->assertTrue($put_success_called); $this->assertFalse($put_error_called); $this->assertTrue($put_complete_called); + + $search_before_send_called = false; + $search_success_called = false; + $search_error_called = false; + $search_complete_called = false; + $multi_curl = new MultiCurl(); + $multi_curl->addSearch(Test::TEST_URL); + $multi_curl->beforeSend(function ($instance) use (&$search_before_send_called) { + $search_before_send_called = true; + }); + $multi_curl->success(function ($instance) use (&$search_success_called) { + $search_success_called = true; + }); + $multi_curl->error(function ($instance) use (&$search_error_called) { + $search_error_called = true; + }); + $multi_curl->complete(function ($instance) use (&$search_complete_called) { + $search_complete_called = true; + }); + $multi_curl->start(); + $this->assertTrue($search_before_send_called); + $this->assertTrue($search_success_called); + $this->assertFalse($search_error_called); + $this->assertTrue($search_complete_called); } public function testSetOptAndSetOptOverride() @@ -2469,6 +2682,13 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase \PHPUnit\Framework\Assert::assertEquals('key=value', $instance->response); }); $multi_curl->start(); + + $multi_curl = new MultiCurl(Test::TEST_URL); + $multi_curl->setHeader('X-DEBUG-TEST', 'search'); + $multi_curl->addSearch($data)->complete(function ($instance) { + \PHPUnit\Framework\Assert::assertEquals('key=value', $instance->response); + }); + $multi_curl->start(); } public function testSetUrl() @@ -2547,6 +2767,16 @@ class MultiCurlTest extends \PHPUnit\Framework\TestCase ); \PHPUnit\Framework\Assert::assertEquals(Test::TEST_URL, $instance->effectiveUrl); }); + + $multi_curl = new MultiCurl(); + $multi_curl->setUrl(Test::TEST_URL); + $multi_curl->addSearch($data)->complete(function ($instance) { + \PHPUnit\Framework\Assert::assertEquals( + 'SEARCH / HTTP/1.1', + $instance->requestHeaders['Request-Line'] + ); + \PHPUnit\Framework\Assert::assertEquals(Test::TEST_URL, $instance->effectiveUrl); + }); } public function testAddRequestAfterStart() diff --git a/tests/PHPCurlClass/server.php b/tests/PHPCurlClass/server.php index 3ef0c75..4f5186a 100644 --- a/tests/PHPCurlClass/server.php +++ b/tests/PHPCurlClass/server.php @@ -133,6 +133,9 @@ if ($test === 'http_basic_auth') { } elseif ($test === 'patch') { echo $http_raw_post_data; exit; +} elseif ($test === 'search') { + echo $http_raw_post_data; + exit; } elseif ($test === 'post_multidimensional' || $test === 'post_multidimensional_with_file') { header('Content-Type: application/json'); echo json_encode(array(