diff options
Diffstat (limited to 'ext/curl/tests')
79 files changed, 3203 insertions, 0 deletions
diff --git a/ext/curl/tests/bug27023.phpt b/ext/curl/tests/bug27023.phpt new file mode 100644 index 0000000..b738c95 --- /dev/null +++ b/ext/curl/tests/bug27023.phpt @@ -0,0 +1,48 @@ +--TEST-- +Bug #27023 (CURLOPT_POSTFIELDS does not parse content types for files) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); +$ch = curl_init(); +curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file"); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + +$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt'); +curl_setopt($ch, CURLOPT_POSTFIELDS, $params); +var_dump(curl_exec($ch)); + +$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;type=text/plain'); +curl_setopt($ch, CURLOPT_POSTFIELDS, $params); +var_dump(curl_exec($ch)); + +$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;filename=foo.txt'); +curl_setopt($ch, CURLOPT_POSTFIELDS, $params); +var_dump(curl_exec($ch)); + +$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;type=text/plain;filename=foo.txt'); +curl_setopt($ch, CURLOPT_POSTFIELDS, $params); +var_dump(curl_exec($ch)); + +$params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt;filename=foo.txt;type=text/plain'); +curl_setopt($ch, CURLOPT_POSTFIELDS, $params); +var_dump(curl_exec($ch)); + + +curl_close($ch); +?> +--EXPECTF-- +string(%d) "curl_testdata1.txt|application/octet-stream" +string(%d) "curl_testdata1.txt|text/plain" +string(%d) "foo.txt|application/octet-stream" +string(%d) "foo.txt|text/plain" +string(%d) "foo.txt|text/plain" diff --git a/ext/curl/tests/bug45161.phpt b/ext/curl/tests/bug45161.phpt new file mode 100644 index 0000000..9fdc7a7 --- /dev/null +++ b/ext/curl/tests/bug45161.phpt @@ -0,0 +1,52 @@ +--TEST-- +Bug #45161 (Reusing a curl handle leaks memory) +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) == 'WIN') { + exit("skip not for Windows"); +} +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +$curl_version = curl_version(); +if ($curl_version['version_number'] < 0x071100) { + exit("skip: test works only with curl >= 7.17.0"); +} +?> +--FILE-- +<?php + +// Fill memory for test +$ch = curl_init(); +$fp = fopen('/dev/null', 'w'); + +/* +$i = $start = $end = 100000.00; +for ($i = 0; $i < 100; $i++) { + curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:9/'); + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_exec($ch); +} +*/ + +// Start actual test +$start = memory_get_usage() + 1024; +for($i = 0; $i < 1024; $i++) { + curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:9/'); + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_exec($ch); +} +if ($start < memory_get_usage()) { + echo 'FAIL'; +} else { + echo 'PASS'; +} +echo "\n"; +fclose($fp); +unset($fp); +?> +--EXPECT-- +PASS diff --git a/ext/curl/tests/bug46711.phpt b/ext/curl/tests/bug46711.phpt new file mode 100644 index 0000000..8eef556 --- /dev/null +++ b/ext/curl/tests/bug46711.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #46711 (lost memory when foreach is used for values passed to curl_setopt()) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php +$ch = curl_init(); + +$opt = array( + CURLOPT_AUTOREFERER => TRUE, + CURLOPT_BINARYTRANSFER => TRUE +); + +curl_setopt( $ch, CURLOPT_AUTOREFERER , TRUE ); + +foreach( $opt as $option => $value ) { + curl_setopt( $ch, $option, $value ); +} + +var_dump($opt); // with this bug, $opt[58] becomes NULL + +?> +--EXPECT-- +array(2) { + [58]=> + bool(true) + [19914]=> + bool(true) +} diff --git a/ext/curl/tests/bug46739.phpt b/ext/curl/tests/bug46739.phpt new file mode 100644 index 0000000..895bba7 --- /dev/null +++ b/ext/curl/tests/bug46739.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #46739 (array returned by curl_getinfo should contain content_type key) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +?> +--FILE-- +<?php +$ch = curl_init('http://127.0.0.1:9/'); + +curl_exec($ch); +$info = curl_getinfo($ch); + +echo (array_key_exists('content_type', $info)) ? "set" : "not set"; +?> +--EXPECT-- +set diff --git a/ext/curl/tests/bug48203.phpt b/ext/curl/tests/bug48203.phpt new file mode 100644 index 0000000..d8f4d22 --- /dev/null +++ b/ext/curl/tests/bug48203.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #48203 (Crash when CURLOPT_STDERR is set to regular file) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php + +$fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w'); + +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_VERBOSE, 1); +curl_setopt($ch, CURLOPT_STDERR, $fp); +curl_setopt($ch, CURLOPT_URL, getenv('PHP_CURL_HTTP_REMOTE_SERVER')); + +fclose($fp); // <-- premature close of $fp caused a crash! + +curl_exec($ch); +curl_close($ch); + +echo "Ok\n"; + +?> +--CLEAN-- +<?php @unlink(dirname(__FILE__) . '/bug48203.tmp'); ?> +--EXPECTF-- +Warning: curl_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203.php on line %d +%A +Ok diff --git a/ext/curl/tests/bug48203_multi.phpt b/ext/curl/tests/bug48203_multi.phpt new file mode 100644 index 0000000..7d4ee47 --- /dev/null +++ b/ext/curl/tests/bug48203_multi.phpt @@ -0,0 +1,90 @@ +--TEST-- +Variation of bug #48203 with curl_multi_exec (Crash when file pointers passed to curl are closed before calling curl_multi_exec) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php + +function checkForClosedFilePointer($curl_option, $description) { + $fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w'); + + $ch1 = curl_init(); + $ch2 = curl_init(); + + $options = array( + CURLOPT_RETURNTRANSFER => 1, + $curl_option => $fp, + CURLOPT_URL => getenv("PHP_CURL_HTTP_REMOTE_SERVER") + ); + + // we also need to set CURLOPT_VERBOSE to test CURLOPT_STDERR properly + if (CURLOPT_STDERR == $curl_option) { + $options[CURLOPT_VERBOSE] = 1; + } + + if (CURLOPT_INFILE == $curl_option) { + $options[CURLOPT_UPLOAD] = 1; + } + + curl_setopt_array($ch1, $options); + curl_setopt_array($ch2, $options); + + fclose($fp); // <-- premature close of $fp caused a crash! + + $mh = curl_multi_init(); + + curl_multi_add_handle($mh, $ch1); + curl_multi_add_handle($mh, $ch2); + + $active = 0; + do { + curl_multi_exec($mh, $active); + } while ($active > 0); + + curl_multi_remove_handle($mh, $ch1); + curl_multi_remove_handle($mh, $ch2); + curl_multi_close($mh); + + echo "Ok for $description\n"; +} + +$options_to_check = array( + "CURLOPT_STDERR", "CURLOPT_WRITEHEADER", "CURLOPT_FILE", "CURLOPT_INFILE" +); + +foreach($options_to_check as $option) { + checkForClosedFilePointer(constant($option), $option); +} + +?> +--CLEAN-- +<?php @unlink(dirname(__FILE__) . '/bug48203.tmp'); ?> +--EXPECTF-- +Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36 + +Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36 +%A +Ok for CURLOPT_STDERR +%A +Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36 + +Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36 +Ok for CURLOPT_WRITEHEADER + +Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36 + +Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36 +%A +Ok for CURLOPT_FILE + +Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36 + +Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36 +Ok for CURLOPT_INFILE diff --git a/ext/curl/tests/bug48207.phpt b/ext/curl/tests/bug48207.phpt new file mode 100644 index 0000000..6ac16f5 --- /dev/null +++ b/ext/curl/tests/bug48207.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test curl_setopt() CURLOPT_FILE readonly file handle +--CREDITS-- +Mark van der Velden +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php +/* + * Description : Adds a file which stores the received data from curl_exec(); + * Source code : ext/curl/multi.c + * Test documentation: http://wiki.php.net/qa/temp/ext/curl + */ + +// Figure out what handler to use +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); +if(!empty($host)) { + + // Use the set Environment variable + $url = "$host/get.php?test=1"; + +} else { + + // Create a temporary file for the test + $tempname = tempnam(sys_get_temp_dir(), 'CURL_HANDLE'); + $url = 'file://'. $tempname; + + // add the test data to the file + file_put_contents($tempname, "Hello World!\nHello World!"); +} + + +$tempfile = tempnam(sys_get_temp_dir(), 'CURL_FILE_HANDLE'); + +$ch = curl_init($url); +$fp = fopen($tempfile, "r"); // Opening 'fubar' with the incorrect readonly flag +curl_setopt($ch, CURLOPT_FILE, $fp); +curl_exec($ch); +curl_close($ch); +is_file($tempfile) and @unlink($tempfile); +isset($tempname) and is_file($tempname) and @unlink($tempname); +?> +--EXPECTF-- +Warning: curl_setopt(): the provided file handle is not writable in %s on line %d +Hello World! +Hello World! diff --git a/ext/curl/tests/bug48514.phpt b/ext/curl/tests/bug48514.phpt new file mode 100644 index 0000000..0ea2575 --- /dev/null +++ b/ext/curl/tests/bug48514.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #48514 (cURL extension uses same resource name for simple and multi APIs) +--SKIPIF-- +<?php + +if (!extension_loaded('curl')) { + exit("skip curl extension not loaded"); +} + +?> +--FILE-- +<?php + +$ch1 = curl_init(); +var_dump($ch1); +var_dump(get_resource_type($ch1)); + +$ch2 = curl_multi_init(); +var_dump($ch2); +var_dump(get_resource_type($ch2)); + +?> +--EXPECTF-- +resource(%d) of type (curl) +%string|unicode%(4) "curl" +resource(%d) of type (curl_multi) +%string|unicode%(10) "curl_multi" diff --git a/ext/curl/tests/bug52202.phpt b/ext/curl/tests/bug52202.phpt new file mode 100644 index 0000000..a304d7f --- /dev/null +++ b/ext/curl/tests/bug52202.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #52202 (CURLOPT_PRIVATE gets clobbered) +--SKIPIF-- +<?php +if (!extension_loaded('curl')) exit("skip curl extension not loaded"); +?> +--FILE-- +<?php +$curl = curl_init("http://www.google.com"); +curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); +curl_setopt($curl, CURLOPT_PRIVATE, "123"); +curl_exec($curl); + +var_dump(curl_getinfo($curl, CURLINFO_PRIVATE)); +--EXPECT-- +string(3) "123" diff --git a/ext/curl/tests/bug52827.phpt b/ext/curl/tests/bug52827.phpt new file mode 100644 index 0000000..85a73fa --- /dev/null +++ b/ext/curl/tests/bug52827.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #52827 (curl_setopt with CURLOPT_STDERR erroneously increments the resource refcount) +--SKIPIF-- +<?php + +if (!extension_loaded('curl')) { + exit("skip curl extension not loaded"); +} + +?> +--FILE-- +<?php +$s = fopen('php://temp/maxmemory=1024','wb+'); + +/* force conversion of inner stream to STDIO. + * This is not necessary in Windows because the + * cast to a FILE* handle in curl_setopt already + * forces the conversion in that platform. The + * reason for this conversion is that the memory + * stream has an ugly but working mechanism to + * prevent being double freed when it's encapsulated, + * while STDIO streams don't. */ +$i = 0; +while ($i++ < 5000) { +fwrite($s, str_repeat('a',1024)); +} +$handle=curl_init('http://www.example.com'); +curl_setopt($handle, CURLOPT_STDERR, $s); + +echo "Done."; +--EXPECTF-- +Done. diff --git a/ext/curl/tests/bug54798.phpt b/ext/curl/tests/bug54798.phpt new file mode 100644 index 0000000..7ec84ad --- /dev/null +++ b/ext/curl/tests/bug54798.phpt @@ -0,0 +1,72 @@ +--TEST-- +Bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed before calling curl_exec) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php + +function checkForClosedFilePointer($host, $curl_option, $description) { + $fp = fopen(dirname(__FILE__) . '/bug54798.tmp', 'w+'); + + $ch = curl_init(); + + // we also need CURLOPT_VERBOSE to be set to test CURLOPT_STDERR properly + if (CURLOPT_STDERR == $curl_option) { + curl_setopt($ch, CURLOPT_VERBOSE, 1); + } + + if (CURLOPT_INFILE == $curl_option) { + curl_setopt($ch, CURLOPT_UPLOAD, 1); + } + + curl_setopt($ch, $curl_option, $fp); + + curl_setopt($ch, CURLOPT_URL, $host); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + + fclose($fp); // <-- premature close of $fp caused a crash! + + curl_exec($ch); + + curl_close($ch); + + echo "Ok for $description\n"; +} + +$options_to_check = array( + "CURLOPT_STDERR", + "CURLOPT_WRITEHEADER", + "CURLOPT_FILE", + "CURLOPT_INFILE" +); + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); +foreach($options_to_check as $option) { + checkForClosedFilePointer($host, constant($option), $option); +} + +?> +--CLEAN-- +<?php @unlink(dirname(__FILE__) . '/bug54798.tmp'); ?> +--EXPECTF-- +Warning: curl_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug54798.php on line %d +* About to connect() %a +* Closing connection #%d +Ok for CURLOPT_STDERR + +Warning: curl_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug54798.php on line 24 +Ok for CURLOPT_WRITEHEADER + +Warning: curl_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug54798.php on line 24 +%a +Ok for CURLOPT_FILE + +Warning: curl_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug54798.php on line %d +Ok for CURLOPT_INFILE diff --git a/ext/curl/tests/bug55767.phpt b/ext/curl/tests/bug55767.phpt new file mode 100644 index 0000000..321f67b --- /dev/null +++ b/ext/curl/tests/bug55767.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test curl_opt() function with POST params from array with a numeric key +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl sending through GET an POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, array('Hello'=>'World','Foo'=>'Bar',100=>'John Doe')); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl sending through GET an POST *** +string(203) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + [100]=> + string(8) "John Doe" +} +" +===DONE=== diff --git a/ext/curl/tests/bug61948-win32.phpt b/ext/curl/tests/bug61948-win32.phpt new file mode 100644 index 0000000..dc86526 --- /dev/null +++ b/ext/curl/tests/bug61948-win32.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction) +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; +if(substr(PHP_OS, 0, 3) != 'WIN' ) + die("skip Not Valid for Linux"); +?> +--INI-- +open_basedir="c:/tmp" +--FILE-- +<?php + $ch = curl_init(); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "")); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/tmp/foo")); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/xxx/bar")); + curl_close($ch); +?> +--EXPECTF-- +%a + +Warning: curl_setopt(): open_basedir restriction in effect. File(c:/tmp/foo) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d +bool(false) + +Warning: curl_setopt(): open_basedir restriction in effect. File(c:/xxx/bar) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d +bool(false) diff --git a/ext/curl/tests/bug61948.phpt b/ext/curl/tests/bug61948.phpt new file mode 100644 index 0000000..00df07d --- /dev/null +++ b/ext/curl/tests/bug61948.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction) +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; +if(substr(PHP_OS, 0, 3) == 'WIN' ) + die("skip Not Valid for Windows"); +?> +--INI-- +open_basedir="/tmp" +--FILE-- +<?php + $ch = curl_init(); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "")); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/foo")); + var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "/xxx/bar")); + curl_close($ch); +?> +--EXPECTF-- +bool(true) +bool(true) + +Warning: curl_setopt(): open_basedir restriction in effect. File(/xxx/bar) is not within the allowed path(s): (/tmp) in %sbug61948.php on line %d +bool(false) diff --git a/ext/curl/tests/bug62839.phpt b/ext/curl/tests/bug62839.phpt new file mode 100644 index 0000000..e6988d6 --- /dev/null +++ b/ext/curl/tests/bug62839.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #62839 (curl_copy_handle segfault with CURLOPT_FILE) +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; +?> +--FILE-- +<?php +$curl = curl_init(); + +$fd = tmpfile(); +curl_setopt($curl, CURLOPT_FILE, $fd); + +curl_copy_handle($curl); + +echo 'DONE!'; +?> +--EXPECTF-- +DONE! diff --git a/ext/curl/tests/bug63363.phpt b/ext/curl/tests/bug63363.phpt new file mode 100644 index 0000000..36abc5e --- /dev/null +++ b/ext/curl/tests/bug63363.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #63363 (CURL silently accepts boolean value for SSL_VERIFYHOST) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +$curl_version = curl_version(); +if ($curl_version['version_number'] >= 0x071c01) { + exit("skip: test valid for libcurl < 7.28.1"); +} +?> +--FILE-- +<?php +$ch = curl_init(); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false)); +/* Case that should throw an error */ +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2)); + +curl_close($ch); +?> +--EXPECTF-- +bool(true) + +Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in %s on line %d +bool(true) +bool(true) + +Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in %s on line %d +bool(true) +bool(true) diff --git a/ext/curl/tests/bug63795.phpt b/ext/curl/tests/bug63795.phpt new file mode 100644 index 0000000..798faa6 --- /dev/null +++ b/ext/curl/tests/bug63795.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #63795 (CURL >= 7.28.0 no longer support value 1 for CURLOPT_SSL_VERIFYHOST) +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + exit("skip curl extension not loaded"); +} +$curl_version = curl_version(); +if ($curl_version['version_number'] < 0x071c01) { + exit("skip: test valid for libcurl >= 7.28.1"); +} +?> +--FILE-- +<?php +$ch = curl_init(); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false)); +/* Case that should throw an error */ +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1)); +var_dump(curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2)); + +curl_close($ch); +?> +--EXPECTF-- +bool(true) + +Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead in %s on line %d +bool(true) +bool(true) + +Notice: curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used instead in %s on line %d +bool(true) +bool(true) diff --git a/ext/curl/tests/curl_CURLOPT_READDATA.phpt b/ext/curl/tests/curl_CURLOPT_READDATA.phpt new file mode 100644 index 0000000..ea63d44 --- /dev/null +++ b/ext/curl/tests/curl_CURLOPT_READDATA.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test CURLOPT_READDATA without a callback function +--CREDITS-- +Mattijs Hoitink mattijshoitink@gmail.com +#Testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + +// The URL to POST to +$url = getenv('PHP_CURL_HTTP_REMOTE_SERVER') . '/get.php?test=post'; + +// Create a temporary file to read the data from +$tempname = tempnam(sys_get_temp_dir(), 'CURL_DATA'); +$datalen = file_put_contents($tempname, "hello=world&smurf=blue"); + +ob_start(); + +$ch = curl_init($url); +curl_setopt($ch, CURLOPT_URL, $url); +curl_setopt($ch, CURLOPT_POST, true); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +curl_setopt($ch, CURLOPT_READDATA, fopen($tempname, 'rb')); +curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:', "Content-Length: {$datalen}")); + +if (false === $response = curl_exec($ch)) { + echo 'Error #' . curl_errno($ch) . ': ' . curl_error($ch); +} else { + echo $response; +} + +curl_close($ch); + +// Clean the temporary file +@unlink($tempname); + +--EXPECT-- +array(2) { + ["hello"]=> + string(5) "world" + ["smurf"]=> + string(4) "blue" +} diff --git a/ext/curl/tests/curl_basic_001.phpt b/ext/curl/tests/curl_basic_001.phpt new file mode 100644 index 0000000..fa362b3 --- /dev/null +++ b/ext/curl/tests/curl_basic_001.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test curl_exec() function with basic functionality +--CREDITS-- +Sebastian Deutsch <sebastian.deutsch@9elements.com> +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_exec(resource ch) + * Description: Perform a cURL session + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo "*** Testing curl_exec() : basic functionality ***\n"; + + $url = "{$host}/get.php?test=get"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + $ok = curl_exec($ch); + curl_close($ch); + $curl_content = ob_get_contents(); + ob_end_clean(); + + if($ok) { + var_dump( $curl_content ); + } else { + echo "curl_exec returned false"; + } +?> +===DONE=== +--EXPECTF-- +*** Testing curl_exec() : basic functionality *** +string(25) "Hello World! +Hello World!" +===DONE=== diff --git a/ext/curl/tests/curl_basic_002.phpt b/ext/curl/tests/curl_basic_002.phpt new file mode 100644 index 0000000..e46f323 --- /dev/null +++ b/ext/curl/tests/curl_basic_002.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test curl_opt() function with CURLOPT_RETURNTRANSFER parameter set to 1 +--CREDITS-- +Sebastian Deutsch <sebastian.deutsch@9elements.com> +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ***' . "\n"; + + $url = "{$host}/get.php?test=get"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); *** +string(25) "Hello World! +Hello World!" +===DONE=== diff --git a/ext/curl/tests/curl_basic_003.phpt b/ext/curl/tests/curl_basic_003.phpt new file mode 100644 index 0000000..eb2aecd --- /dev/null +++ b/ext/curl/tests/curl_basic_003.phpt @@ -0,0 +1,56 @@ +--TEST-- +Test curl_opt() function with POST parameters +--CREDITS-- +Sebastian Deutsch <sebastian.deutsch@9elements.com> +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl sending through GET an POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "Hello=World&Foo=Bar&Person=John%20Doe"); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl sending through GET an POST *** +string(208) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + ["Person"]=> + string(8) "John Doe" +} +" +===DONE=== diff --git a/ext/curl/tests/curl_basic_004.phpt b/ext/curl/tests/curl_basic_004.phpt new file mode 100644 index 0000000..ea2eeca --- /dev/null +++ b/ext/curl/tests/curl_basic_004.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test curl_opt() function with setting referer +--CREDITS-- +Sebastian Deutsch <sebastian.deutsch@9elements.com> +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl setting referer ***' . "\n"; + + $url = "{$host}/get.php?test=referer"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_REFERER, 'http://www.refer.er'); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl setting referer *** +string(19) "http://www.refer.er" +===DONE=== diff --git a/ext/curl/tests/curl_basic_005.phpt b/ext/curl/tests/curl_basic_005.phpt new file mode 100644 index 0000000..9285c10 --- /dev/null +++ b/ext/curl/tests/curl_basic_005.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test curl_opt() function with user agent +--CREDITS-- +Sebastian Deutsch <sebastian.deutsch@9elements.com> +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl with user agent ***' . "\n"; + + $url = "{$host}/get.php?test=useragent"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_USERAGENT, 'cURL phpt'); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl with user agent *** +string(9) "cURL phpt" +===DONE=== diff --git a/ext/curl/tests/curl_basic_006.phpt b/ext/curl/tests/curl_basic_006.phpt new file mode 100644 index 0000000..5f1a4f4 --- /dev/null +++ b/ext/curl/tests/curl_basic_006.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test curl_opt() function with CURLOPT_WRITEFUNCTION parameter set to a closure +--CREDITS-- +? +TestFest 2009 - AFUP - Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl_setopt($ch, CURLOPT_WRITEFUNCTION, <closure>); ***' . "\n"; + + $url = "{$host}/get.php?test=get"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) { + echo 'Data: '.$data; + return strlen ($data); + }); + + curl_exec($ch); + curl_close($ch); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_setopt($ch, CURLOPT_WRITEFUNCTION, <closure>); *** +Data: Hello World! +Hello World!===DONE=== diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt new file mode 100644 index 0000000..b7eba4b --- /dev/null +++ b/ext/curl/tests/curl_basic_007.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test curl_error() & curl_errno() function without url +--CREDITS-- +TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net> +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +//In January 2008 , level 7.18.0 of the curl lib, many of the messages changed. +//The final crlf was removed. This test is coded to work with or without the crlf. + +$ch = curl_init(); + +curl_exec($ch); +var_dump(curl_error($ch)); +var_dump(curl_errno($ch)); +curl_close($ch); + + +?> +--EXPECTF-- +%string|unicode%(%d) "No URL set!%w" +int(3) diff --git a/ext/curl/tests/curl_basic_008.phpt b/ext/curl/tests/curl_basic_008.phpt new file mode 100644 index 0000000..29e3343 --- /dev/null +++ b/ext/curl/tests/curl_basic_008.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test curl_error() & curl_errno() function with problematic host +--CREDITS-- +TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net> +--SKIPIF-- +<?php + if (!extension_loaded("curl")) print "skip"; + $addr = "www.".uniqid().".".uniqid(); + if (gethostbyname($addr) != $addr) { + print "skip catch all dns"; + } +?> +--FILE-- +<?php + +$url = "http://www.".uniqid().".".uniqid(); +$ch = curl_init(); +curl_setopt($ch, CURLOPT_URL, $url); + +curl_exec($ch); +var_dump(curl_error($ch)); +var_dump(curl_errno($ch)); +curl_close($ch); + + +?> +--EXPECTF-- +%unicode|string%(%d) "%r(Couldn't resolve host|Could not resolve host:)%r %Swww.%s" +int(6) diff --git a/ext/curl/tests/curl_basic_009.phpt b/ext/curl/tests/curl_basic_009.phpt new file mode 100644 index 0000000..529e590 --- /dev/null +++ b/ext/curl/tests/curl_basic_009.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test curl_error() & curl_errno() function with problematic protocol +--CREDITS-- +TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net> +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +$url = uniqid()."://www.".uniqid().".".uniqid(); +$ch = curl_init(); +curl_setopt($ch, CURLOPT_URL, $url); + +curl_exec($ch); +var_dump(curl_error($ch)); +var_dump(curl_errno($ch)); +curl_close($ch); + + +?> +--EXPECTF-- +%unicode|string%(%d) "%Srotocol%s" +int(1) diff --git a/ext/curl/tests/curl_basic_010.phpt b/ext/curl/tests/curl_basic_010.phpt new file mode 100644 index 0000000..0fc2fe6 --- /dev/null +++ b/ext/curl/tests/curl_basic_010.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test curl_error() & curl_errno() function with problematic proxy +--CREDITS-- +TestFest 2009 - AFUP - Perrick Penet <perrick@noparking.net> +--SKIPIF-- +<?php + if (!extension_loaded("curl")) print "skip"; + $addr = "www.".uniqid().".".uniqid(); + if (gethostbyname($addr) != $addr) { + print "skip catch all dns"; + } +?> +--FILE-- +<?php + +$url = "http://www.example.org"; +$ch = curl_init(); +curl_setopt($ch, CURLOPT_PROXY, uniqid().":".uniqid()); +curl_setopt($ch, CURLOPT_URL, $url); + +curl_exec($ch); +var_dump(curl_error($ch)); +var_dump(curl_errno($ch)); +curl_close($ch); + + +?> +--EXPECTF-- +%unicode|string%(%d) "%r(Couldn't resolve proxy|Could not resolve proxy:|Could not resolve host:)%r %s" +int(5) diff --git a/ext/curl/tests/curl_basic_011.phpt b/ext/curl/tests/curl_basic_011.phpt new file mode 100644 index 0000000..10c90b1 --- /dev/null +++ b/ext/curl/tests/curl_basic_011.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test curl_opt() function with COOKIE +--CREDITS-- +TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl with cookie ***' . "\n"; + + $url = "{$host}/get.php?test=cookie"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_COOKIE, 'foo=bar'); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl with cookie *** +string(3) "bar" +===DONE=== + diff --git a/ext/curl/tests/curl_basic_012.phpt b/ext/curl/tests/curl_basic_012.phpt new file mode 100644 index 0000000..e4706fa --- /dev/null +++ b/ext/curl/tests/curl_basic_012.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test curl_opt() function with CURLOPT_HTTP_VERSION/CURL_HTTP_VERSION_1_0 +--CREDITS-- +TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl with HTTP/1.0 ***' . "\n"; + + $url = "{$host}/get.php?test=httpversion"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl with HTTP/1.0 *** +string(8) "HTTP/1.0" +===DONE=== +
\ No newline at end of file diff --git a/ext/curl/tests/curl_basic_013.phpt b/ext/curl/tests/curl_basic_013.phpt new file mode 100644 index 0000000..c49d187 --- /dev/null +++ b/ext/curl/tests/curl_basic_013.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test curl_opt() function with CURLOPT_HTTP_VERSION/CURL_HTTP_VERSION_1_1 +--CREDITS-- +TestFest 2009 - AFUP - Xavier Gorse <xgorse@elao.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv(b'PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl with HTTP/1.1 ***' . "\n"; + + $url = "{$host}/get.php?test=httpversion"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl with HTTP/1.1 *** +string(8) "HTTP/1.1" +===DONE=== +
\ No newline at end of file diff --git a/ext/curl/tests/curl_basic_014.phpt b/ext/curl/tests/curl_basic_014.phpt new file mode 100644 index 0000000..4037970 --- /dev/null +++ b/ext/curl/tests/curl_basic_014.phpt @@ -0,0 +1,15 @@ +--TEST-- +Test curl_init() function with basic functionality +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php if (!extension_loaded("curl")) exit("skip curl extension not loaded"); ?> +--FILE-- +<?php + $ch = curl_init(); + var_dump($ch); +?> +===DONE=== +--EXPECTF-- +resource(%d) of type (curl) +===DONE=== diff --git a/ext/curl/tests/curl_basic_015.phpt b/ext/curl/tests/curl_basic_015.phpt new file mode 100644 index 0000000..e8e43e5 --- /dev/null +++ b/ext/curl/tests/curl_basic_015.phpt @@ -0,0 +1,16 @@ +--TEST-- +Test curl_init() function with $url parameter defined +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php if (!extension_loaded("curl")) exit("skip curl extension not loaded"); ?> +--FILE-- +<?php + $url = 'http://www.example.com/'; + $ch = curl_init($url); + var_dump($url == curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); +?> +===DONE=== +--EXPECTF-- +bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_basic_016.phpt b/ext/curl/tests/curl_basic_016.phpt new file mode 100644 index 0000000..b5890c0 --- /dev/null +++ b/ext/curl/tests/curl_basic_016.phpt @@ -0,0 +1,63 @@ +--TEST-- +Test curl_getinfo() function with basic functionality +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +$curl_version = curl_version(); +if ($curl_version['version_number'] > 0x071201) { + exit("skip: tests works only on older versions of curl"); +} +?> +--FILE-- +<?php + $ch = curl_init(); + $info = curl_getinfo($ch); + var_dump($info); +?> +===DONE=== +--EXPECTF-- +array(2%d) { + [%u|b%"url"]=> + string(0) "" + ["content_type"]=> + NULL + ["http_code"]=> + int(0) + ["header_size"]=> + int(0) + ["request_size"]=> + int(0) + ["filetime"]=> + int(0) + ["ssl_verify_result"]=> + int(0) + ["redirect_count"]=> + int(0) + ["total_time"]=> + float(0) + ["namelookup_time"]=> + float(0) + ["connect_time"]=> + float(0) + ["pretransfer_time"]=> + float(0) + ["size_upload"]=> + float(0) + ["size_download"]=> + float(0) + ["speed_download"]=> + float(0) + ["speed_upload"]=> + float(0) + ["download_content_length"]=> + float(%f) + ["upload_content_length"]=> + float(%f) + ["starttransfer_time"]=> + float(0) + ["redirect_time"]=> + float(0) +} +===DONE=== diff --git a/ext/curl/tests/curl_basic_017.phpt b/ext/curl/tests/curl_basic_017.phpt new file mode 100644 index 0000000..09247b2 --- /dev/null +++ b/ext/curl/tests/curl_basic_017.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test curl_multi_exec() function with basic functionality +--CREDITS-- +TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?> +--FILE-- +<?php +/* Prototype : bool curl_multi_exec(resource ch) + * Description: Perform a cURL session + * Source code: ext/curl/multi.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo "*** Testing curl_exec() : basic functionality ***\n"; + + $url = "{$host}/get.php?test=get"; + $chs = array( + 0 => curl_init(), + 1 => curl_init(), + 2 => curl_init(), + ); + + ob_start(); // start output buffering + + curl_setopt($chs[0], CURLOPT_URL, $url); //set the url we want to use + curl_setopt($chs[1], CURLOPT_URL, $url); //set the url we want to use + curl_setopt($chs[2], CURLOPT_URL, $url); //set the url we want to use + + $mh = curl_multi_init(); + + // add handlers + curl_multi_add_handle($mh, $chs[0]); + curl_multi_add_handle($mh, $chs[1]); + curl_multi_add_handle($mh, $chs[2]); + + $running=null; + //execute the handles + $state = null; + do { + $state = curl_multi_exec($mh, $running); + } while ($running > 0); + + //close the handles + curl_multi_remove_handle($mh, $chs[0]); + curl_multi_remove_handle($mh, $chs[1]); + curl_multi_remove_handle($mh, $chs[2]); + curl_multi_close($mh); + + $curl_content = ob_get_contents(); + ob_end_clean(); + + if($state === CURLM_OK) { + var_dump( $curl_content ); + } else { + echo "curl_exec returned false"; + } +?> +===DONE=== +--EXPECTF-- +*** Testing curl_exec() : basic functionality *** +string(75) "Hello World! +Hello World!Hello World! +Hello World!Hello World! +Hello World!" +===DONE=== diff --git a/ext/curl/tests/curl_basic_018.phpt b/ext/curl/tests/curl_basic_018.phpt new file mode 100644 index 0000000..7cffb89 --- /dev/null +++ b/ext/curl/tests/curl_basic_018.phpt @@ -0,0 +1,72 @@ +--TEST-- +Test curl_setopt() with curl_multi function with basic functionality +--CREDITS-- +TestFest 2009 - AFUP - Thomas Rabaix <thomas.rabaix@gmail.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo "*** Testing curl_exec() : basic functionality ***\n"; + + $url = "{$host}/get.php?test=get"; + $chs = array( + 0 => curl_init(), + 1 => curl_init(), + 2 => curl_init(), + ); + + ob_start(); // start output buffering + + $options = array( + CURLOPT_RETURNTRANSFER => 1, + CURLOPT_URL => $url, + ); + + curl_setopt_array($chs[0], $options); //set the options + curl_setopt_array($chs[1], $options); //set the options + curl_setopt_array($chs[2], $options); //set the options + + $mh = curl_multi_init(); + + // add handlers + curl_multi_add_handle($mh, $chs[0]); + curl_multi_add_handle($mh, $chs[1]); + curl_multi_add_handle($mh, $chs[2]); + + $running=null; + //execute the handles + do { + curl_multi_exec($mh, $running); + } while ($running > 0); + + $curl_content = ''; + $curl_content .= curl_multi_getcontent($chs[0]); + $curl_content .= curl_multi_getcontent($chs[1]); + $curl_content .= curl_multi_getcontent($chs[2]); + + //close the handles + curl_multi_remove_handle($mh, $chs[0]); + curl_multi_remove_handle($mh, $chs[1]); + curl_multi_remove_handle($mh, $chs[2]); + curl_multi_close($mh); + + var_dump( $curl_content ); + +?> +===DONE=== +--EXPECTF-- +*** Testing curl_exec() : basic functionality *** +%unicode|string%(75) "Hello World! +Hello World!Hello World! +Hello World!Hello World! +Hello World!" +===DONE=== diff --git a/ext/curl/tests/curl_basic_019.phpt b/ext/curl/tests/curl_basic_019.phpt new file mode 100644 index 0000000..ab605a8 --- /dev/null +++ b/ext/curl/tests/curl_basic_019.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test curl_getinfo() function with CURLINFO_EFFECTIVE_URL parameter +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + $url = "{$host}/get.php?test="; + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $url); + curl_exec($ch); + $info = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); + var_dump($url == $info); + + curl_close($ch); +?> +===DONE=== +--EXPECTF-- +Hello World! +Hello World!bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_basic_020.phpt b/ext/curl/tests/curl_basic_020.phpt new file mode 100644 index 0000000..d622053 --- /dev/null +++ b/ext/curl/tests/curl_basic_020.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test curl_getinfo() function with CURLINFO_HTTP_CODE parameter +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + $url = "{$host}/get.php?test="; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_exec($ch); + var_dump(curl_getinfo($ch, CURLINFO_HTTP_CODE)); + curl_close($ch); +?> +===DONE=== +--EXPECTF-- +Hello World! +Hello World!int(200) +===DONE=== diff --git a/ext/curl/tests/curl_basic_021.phpt b/ext/curl/tests/curl_basic_021.phpt new file mode 100644 index 0000000..3b4798d --- /dev/null +++ b/ext/curl/tests/curl_basic_021.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test curl_getinfo() function with CURLINFO_CONTENT_TYPE parameter +--CREDITS-- +Jean-Marc Fontaine <jmf@durcommefaire.net> +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + $url = "{$host}/get.php?test=contenttype"; + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_exec($ch); + var_dump(curl_getinfo($ch, CURLINFO_CONTENT_TYPE)); + curl_close($ch); +?> +===DONE=== +--EXPECTF-- +%unicode|string%(24) "text/plain;charset=utf-8" +===DONE=== diff --git a/ext/curl/tests/curl_close_basic.phpt b/ext/curl/tests/curl_close_basic.phpt new file mode 100644 index 0000000..9c01b02 --- /dev/null +++ b/ext/curl/tests/curl_close_basic.phpt @@ -0,0 +1,19 @@ +--TEST-- +curl_close +--CREDITS-- +Stefan Koopmanschap <stefan@php.net> +#testfest Utrecht 2009 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php +$ch = curl_init(); +curl_close($ch); +var_dump($ch); +?> +===DONE=== +--EXPECTF-- +resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic.phpt b/ext/curl/tests/curl_copy_handle_basic.phpt new file mode 100644 index 0000000..1a6ff41 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test curl_copy_handle() function with basic functionality +--CREDITS-- +Francesco Fullone ff@ideato.it +#PHPTestFest Cesena Italia on 2009-06-20 +--SKIPIF-- +<?php + if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +?> +--FILE-- +<?php +echo "*** Testing curl_copy_handle(): basic ***\n"; + +// create a new cURL resource +$ch = curl_init(); + +// set URL and other appropriate options +curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/'); +curl_setopt($ch, CURLOPT_HEADER, 0); + +// copy the handle +$ch2 = curl_copy_handle($ch); + +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_copy_handle(): basic *** +bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_001.phpt b/ext/curl/tests/curl_copy_handle_basic_001.phpt new file mode 100644 index 0000000..f1b4db3 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_001.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test curl_copy_handle() with simple get +--CREDITS-- +Rick Buitenman <rick@meritos.nl> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Testing curl copy handle with simple GET ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $copy = curl_copy_handle($ch); + curl_close($ch); + + $curl_content = curl_exec($copy); + curl_close($copy); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl copy handle with simple GET *** +string(106) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(0) { +} +" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_002.phpt b/ext/curl/tests/curl_copy_handle_basic_002.phpt new file mode 100644 index 0000000..9ab3363 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_002.phpt @@ -0,0 +1,47 @@ +--TEST-- +Test curl_copy_handle() with simple POST +--CREDITS-- +Rick Buitenman <rick@meritos.nl> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Testing curl copy handle with simple POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "Hello=World&Foo=Bar&Person=John%20Doe"); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $copy = curl_copy_handle($ch); + curl_close($ch); + + $curl_content = curl_exec($copy); + curl_close($copy); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl copy handle with simple POST *** +string(163) "array(1) { + ["test"]=> + string(7) "getpost" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + ["Person"]=> + string(8) "John Doe" +} +" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_004.phpt b/ext/curl/tests/curl_copy_handle_basic_004.phpt new file mode 100644 index 0000000..9b794e9 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_004.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test curl_copy_handle() after exec() +--CREDITS-- +Rick Buitenman <rick@meritos.nl> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Test curl_copy_handle() after exec() ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + + $curl_content = curl_exec($ch); + $copy = curl_copy_handle($ch); + curl_close($ch); + + $curl_content_copy = curl_exec($copy); + curl_close($copy); + + var_dump( $curl_content_copy ); +?> +===DONE=== +--EXPECTF-- +*** Test curl_copy_handle() after exec() *** +string(106) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(0) { +} +" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_005.phpt b/ext/curl/tests/curl_copy_handle_basic_005.phpt new file mode 100644 index 0000000..aa9e2fa --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_005.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test curl_copy_handle() after exec() with POST +--CREDITS-- +Rick Buitenman <rick@meritos.nl> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Test curl_copy_handle() after exec() with POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "Hello=World&Foo=Bar&Person=John%20Doe"); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + + $curl_content = curl_exec($ch); + $copy = curl_copy_handle($ch); + curl_close($ch); + + $curl_content_copy = curl_exec($copy); + curl_close($copy); + + var_dump( $curl_content_copy ); +?> +===DONE=== +--EXPECTF-- +*** Test curl_copy_handle() after exec() with POST *** +string(163) "array(1) { + ["test"]=> + string(7) "getpost" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + ["Person"]=> + string(8) "John Doe" +} +" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_006.phpt b/ext/curl/tests/curl_copy_handle_basic_006.phpt new file mode 100644 index 0000000..defc0f2 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_006.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test curl_copy_handle() with User Agent +--CREDITS-- +Rick Buitenman <rick@meritos.nl> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Testing curl copy handle with User Agent ***' . "\n"; + + $url = "{$host}/get.php?test=useragent"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_USERAGENT, 'cURL phpt'); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $copy = curl_copy_handle($ch); + + var_dump( curl_exec($ch) ); + var_dump( curl_exec($copy) ); + + curl_close($ch); // can not close original handle before curl_exec($copy) since it causes char * inputs to be invalid (see also: http://curl.haxx.se/libcurl/c/curl_easy_duphandle.html) + curl_close($copy); + +?> +===DONE=== +--EXPECTF-- +*** Testing curl copy handle with User Agent *** +string(9) "cURL phpt" +string(9) "cURL phpt" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_007.phpt b/ext/curl/tests/curl_copy_handle_basic_007.phpt new file mode 100644 index 0000000..aa7306c --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_007.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test curl_copy_handle() with simple POST +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + echo '*** Testing curl copy handle with simple POST using array as arguments ***' . "\n"; + + $url = "{$host}/get.php?test=getpost"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, array("Hello" => "World", "Foo" => "Bar", "Person" => "John Doe")); + curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); // Disable Expect: header (lighttpd does not support it :) + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $copy = curl_copy_handle($ch); + curl_close($ch); + + $curl_content = curl_exec($copy); + curl_close($copy); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl copy handle with simple POST using array as arguments *** +string(163) "array(1) { + ["test"]=> + string(7) "getpost" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + ["Person"]=> + string(8) "John Doe" +} +" +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_basic_008.phpt b/ext/curl/tests/curl_copy_handle_basic_008.phpt new file mode 100644 index 0000000..692c2df --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_basic_008.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test curl_copy_handle() with CURLOPT_PROGRESSFUNCTION +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + $url = "{$host}/get.php"; + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_NOPROGRESS, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function() { }); + $ch2 = curl_copy_handle($ch); + echo curl_exec($ch), PHP_EOL; + unset($ch); + echo curl_exec($ch2); + +?> +--EXPECTF-- +Hello World! +Hello World! +Hello World! +Hello World! diff --git a/ext/curl/tests/curl_copy_handle_variation1.phpt b/ext/curl/tests/curl_copy_handle_variation1.phpt new file mode 100644 index 0000000..da45221 --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_variation1.phpt @@ -0,0 +1,32 @@ +--TEST-- +Test curl_copy_handle() change options in one handle +--CREDITS-- +Francesco Fullone ff@ideato.it +#PHPTestFest Cesena Italia on 2009-06-20 +--SKIPIF-- +<?php + if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +?> +--FILE-- +<?php +echo "*** Testing curl_copy_handle(): basic ***\n"; + +// create a new cURL resource +$ch = curl_init(); + +// set URL and other appropriate options +curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/'); + +// copy the handle +$ch2 = curl_copy_handle($ch); + +// change the CURLOPT_URL for the second handle +curl_setopt($ch2, CURLOPT_URL, 'http://www.bar.com/'); + +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_copy_handle(): basic *** +bool(false) +===DONE=== diff --git a/ext/curl/tests/curl_copy_handle_variation2.phpt b/ext/curl/tests/curl_copy_handle_variation2.phpt new file mode 100644 index 0000000..924bf6a --- /dev/null +++ b/ext/curl/tests/curl_copy_handle_variation2.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test curl_copy_handle() add options to the handles +--CREDITS-- +Francesco Fullone ff@ideato.it +#PHPTestFest Cesena Italia on 2009-06-20 +--SKIPIF-- +<?php + if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +?> +--COMMENT-- +the only way to test if a option is setten on a curl handle is using the curl_getinfo() function. +but this can only check on a limited amount of options... +--FILE-- +<?php +echo "*** Testing curl_copy_handle(): add options after copy ***\n"; + +// create a new cURL resource +$ch = curl_init(); + +// copy the handle +$ch2 = curl_copy_handle($ch); +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); + +// add some CURLOPT to the second handle +curl_setopt($ch2, CURLOPT_URL, 'http://www.example.com/'); + +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); + +// add same CURLOPT to the first handle +curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/'); +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); + +// change a CURLOPT in the second handle +curl_setopt($ch2, CURLOPT_URL, 'http://www.bar.com/'); +var_dump(curl_getinfo($ch) === curl_getinfo($ch2)); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_copy_handle(): add options after copy *** +bool(true) +bool(false) +bool(true) +bool(false) +===DONE=== diff --git a/ext/curl/tests/curl_error_basic.phpt b/ext/curl/tests/curl_error_basic.phpt new file mode 100644 index 0000000..3d35023 --- /dev/null +++ b/ext/curl/tests/curl_error_basic.phpt @@ -0,0 +1,41 @@ +--TEST-- +curl_error() function - basic test for curl_error using a fake url +--CREDITS-- +Mattijs Hoitink mattijshoitink@gmail.com +#Testfest Utrecht 2009 +--SKIPIF-- +<?php + +if (!extension_loaded("curl")) die("skip\n"); + +$url = "fakeURL"; +$ip = gethostbyname($url); +if ($ip != $url) die("skip 'fakeURL' resolves to $ip\n"); + +?> +--FILE-- +<?php +/* + * Prototype: string curl_error(resource $ch) + * Description: Returns a clear text error message for the last cURL operation. + * Source: ext/curl/interface.c + * Documentation: http://wiki.php.net/qa/temp/ext/curl + */ + +// Fake URL to trigger an error +$url = "fakeURL"; + +echo "== Testing curl_error with a fake URL ==\n"; + +// cURL handler +$ch = curl_init($url); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + +curl_exec($ch); +var_dump(curl_error($ch)); +curl_close($ch); + +?> +--EXPECTF-- +== Testing curl_error with a fake URL == +string(%d) "%sfakeURL%S" diff --git a/ext/curl/tests/curl_file_deleted_before_curl_close.phpt b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt new file mode 100644 index 0000000..592f110 --- /dev/null +++ b/ext/curl/tests/curl_file_deleted_before_curl_close.phpt @@ -0,0 +1,38 @@ +--TEST-- +Memory corruption error if fp of just created file is closed before curl_close. +--CREDITS-- +Alexey Shein <confik@gmail.com> +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?> +--FILE-- +<?php + +$ch = curl_init(getenv('PHP_CURL_HTTP_REMOTE_SERVER')); + +$temp_file = dirname(__FILE__) . '/curl_file_deleted_before_curl_close.tmp'; +if (file_exists($temp_file)) { + unlink($temp_file); // file should not exist before test +} + +$handle = fopen($temp_file, 'w'); + +curl_setopt($ch, CURLOPT_STDERR, $handle); +curl_setopt($ch, CURLOPT_VERBOSE, 1); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + +curl_exec($ch); + +fclose($handle); // causes glibc memory error + +//unlink($temp_file); // uncomment to test segfault (file not found on iowrite.c) + +curl_close($ch); +echo "Closed correctly\n"; +?> +--CLEAN-- +<?php +unlink(dirname(__FILE__) . '/curl_file_deleted_before_curl_close.tmp'); +?> +--EXPECTF-- +* Closing connection #%d +Closed correctly diff --git a/ext/curl/tests/curl_ftp_pasv.phpt b/ext/curl/tests/curl_ftp_pasv.phpt new file mode 100644 index 0000000..6cd7429 --- /dev/null +++ b/ext/curl/tests/curl_ftp_pasv.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test curl_exec() function with basic functionality +--CREDITS-- +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_FTP_REMOTE_SERVER')) exit("skip PHP_CURL_FTP_REMOTE_SERVER env variable is not defined"); +if (false === getenv('PHP_CURL_FTP_REMOTE_USER')) exit("skip PHP_CURL_FTP_REMOTE_USER env variable is not defined"); +if (false === getenv('PHP_CURL_FTP_REMOTE_PASSWD')) exit("skip PHP_CURL_FTP_REMOTE_PASSWD env variable is not defined"); +?> +--FILE-- +<?php + $host = getenv('PHP_CURL_FTP_REMOTE_SERVER'); + $username = getenv('PHP_CURL_FTP_REMOTE_USER'); + $password = getenv('PHP_CURL_FTP_REMOTE_PASSWD'); + + // FTP this script to a server + $fp = fopen ( __FILE__ , "r" ); + $url = "ftp://$username:$password@$host/test.phpt" ; + + $ch = curl_init (); + + // enable below to get the output in verbose mode. + // curl_setopt ( $ch , CURLOPT_VERBOSE, 1 ); + + /* Without enabling SKIP_PASV_IP flag, the following output will be seen.. + < 227 Entering Passive Mode (10,5,80,146,100,199) + * Trying 10.5.80.146... * connected + * Connecting to 10.5.80.146 (10.5.80.146) port 25799 + */ + + /* After enabling SKIP_PASV_IP flag, the following output will be seen.. + < 227 Entering Passive Mode (10,5,80,146,50,229) + * Skips 10.5.80.146 for data connection, uses 10.5.80.146 instead + * Trying 10.5.80.146... * connected + */ + + curl_setopt ( $ch , CURLOPT_URL, $url ); + curl_setopt ( $ch , CURLOPT_TRANSFERTEXT, 1 ); + + //force passive connection + curl_setopt ( $ch , CURLOPT_FTP_USE_EPSV, 0 ); + curl_setopt ( $ch , CURLOPT_FTP_SKIP_PASV_IP, 1 ); + + // mark the file for upload.. + curl_setopt ( $ch , CURLOPT_INFILE, $fp ); + curl_setopt ( $ch , CURLOPT_INFILESIZE, filesize(__FILE__) ); + curl_setopt ( $ch , CURLOPT_PUT, 1 ); + curl_setopt ( $ch , CURLOPT_UPLOAD, 1 ); + + $result = curl_exec ( $ch ); + var_dump ( $result ); + curl_close ( $ch ); + +?> +===DONE=== +--EXPECTF-- +bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_multi_close_basic.phpt b/ext/curl/tests/curl_multi_close_basic.phpt new file mode 100644 index 0000000..28865bc --- /dev/null +++ b/ext/curl/tests/curl_multi_close_basic.phpt @@ -0,0 +1,19 @@ +--TEST-- +curl_multi_close +--CREDITS-- +Stefan Koopmanschap <stefan@php.net> +#testfest Utrecht 2009 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php +$ch = curl_multi_init(); +curl_multi_close($ch); +var_dump($ch); +?> +===DONE=== +--EXPECTF-- +resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/curl/tests/curl_multi_getcontent_basic3.phpt b/ext/curl/tests/curl_multi_getcontent_basic3.phpt new file mode 100644 index 0000000..ac2a371 --- /dev/null +++ b/ext/curl/tests/curl_multi_getcontent_basic3.phpt @@ -0,0 +1,62 @@ +--TEST-- +Curl_multi_getcontent() basic test with different sources (local file/http) +--CREDITS-- +Rein Velt (rein@velt.org) +#TestFest Utrecht 20090509 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip need ext/curl'; +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +} +?> +--FILE-- +<?php + //CURL_MULTI_GETCONTENT TEST + + //CREATE RESOURCES + $ch1=curl_init(); + $ch2=curl_init(); + + //SET URL AND OTHER OPTIONS + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + curl_setopt($ch1, CURLOPT_URL, "{$host}/get.php?test=getpost&get_param=Hello%20World"); + curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt"); + curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); + + //CREATE MULTIPLE CURL HANDLE + $mh=curl_multi_init(); + + //ADD THE 2 HANDLES + curl_multi_add_handle($mh,$ch1); + curl_multi_add_handle($mh,$ch2); + + //EXECUTE + $running=0; + do { + curl_multi_exec($mh,$running); + } while ($running>0); + + $results1=curl_multi_getcontent($ch1); + $results2=curl_multi_getcontent($ch2); + + //CLOSE + curl_multi_remove_handle($mh,$ch1); + curl_multi_remove_handle($mh,$ch2); + curl_multi_close($mh); + + echo $results1; + echo $results2; + +?> +--EXPECTF-- +array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(0) { +} +CURL2 diff --git a/ext/curl/tests/curl_multi_getcontent_error1.phpt b/ext/curl/tests/curl_multi_getcontent_error1.phpt new file mode 100644 index 0000000..2fb11b3 --- /dev/null +++ b/ext/curl/tests/curl_multi_getcontent_error1.phpt @@ -0,0 +1,51 @@ +--TEST-- +Curl_multi_getcontent() error test +--CREDITS-- +Rein Velt (rein@velt.org) +#TestFest Utrecht 20090509 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php + //CURL_MULTI_GETCONTENT TEST + + //CREATE RESOURCES + $ch1=curl_init(); + $ch2=curl_init(); + + //SET URL AND OTHER OPTIONS + curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata1.txt"); + curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt"); + curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); + + //CREATE MULTIPLE CURL HANDLE + $mh=curl_multi_init(); + + //ADD THE 2 HANDLES + curl_multi_add_handle($mh,$ch1); + curl_multi_add_handle($mh,$ch2); + + //EXECUTE + $running=0; + do { + curl_multi_exec($mh,$running); + } while ($running>0); + + $results1=curl_multi_getcontent(); //no parameter + $results2=curl_multi_getcontent($ch2); + + //CLOSE + curl_multi_remove_handle($mh,$ch1); + curl_multi_remove_handle($mh,$ch2); + curl_multi_close($mh); + + echo $results1; + echo $results2; + +?> +--EXPECTF-- +Warning: curl_multi_getcontent() expects exactly 1 parameter, 0 given in %s on line %d +CURL2 diff --git a/ext/curl/tests/curl_multi_getcontent_error2.phpt b/ext/curl/tests/curl_multi_getcontent_error2.phpt new file mode 100644 index 0000000..0145d6a --- /dev/null +++ b/ext/curl/tests/curl_multi_getcontent_error2.phpt @@ -0,0 +1,51 @@ +--TEST-- +Curl_multi_getcontent() error test +--CREDITS-- +Rein Velt (rein@velt.org) +#TestFest Utrecht 20090509 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php + //CURL_MULTI_GETCONTENT TEST + + //CREATE RESOURCES + $ch1=curl_init(); + $ch2=curl_init(); + + //SET URL AND OTHER OPTIONS + curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata1.txt"); + curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt"); + curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); + + //CREATE MULTIPLE CURL HANDLE + $mh=curl_multi_init(); + + //ADD THE 2 HANDLES + curl_multi_add_handle($mh,$ch1); + curl_multi_add_handle($mh,$ch2); + + //EXECUTE + $running=0; + do { + curl_multi_exec($mh,$running); + } while ($running>0); + + $results1=curl_multi_getcontent($ch1,$ch2); //no parameter + $results2=curl_multi_getcontent($ch2); + + //CLOSE + curl_multi_remove_handle($mh,$ch1); + curl_multi_remove_handle($mh,$ch2); + curl_multi_close($mh); + + echo $results1; + echo $results2; + +?> +--EXPECTF-- +Warning: curl_multi_getcontent() expects exactly 1 parameter, 2 given in %s on line %d +CURL2 diff --git a/ext/curl/tests/curl_multi_getcontent_error3.phpt b/ext/curl/tests/curl_multi_getcontent_error3.phpt new file mode 100644 index 0000000..2ad1480 --- /dev/null +++ b/ext/curl/tests/curl_multi_getcontent_error3.phpt @@ -0,0 +1,53 @@ +--TEST-- +Curl_multi_getcontent() error test +--CREDITS-- +Rein Velt (rein@velt.org) +#TestFest Utrecht 20090509 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php + //CURL_MULTI_GETCONTENT TEST + + //CREATE RESOURCES + $ch1=curl_init(); + $ch2=curl_init(); + + //SET URL AND OTHER OPTIONS + curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata1.txt"); + curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt"); + curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); + + //CREATE MULTIPLE CURL HANDLE + $mh=curl_multi_init(); + + //ADD THE 2 HANDLES + curl_multi_add_handle($mh,$ch1); + curl_multi_add_handle($mh,$ch2); + + //EXECUTE + $running=0; + do { + curl_multi_exec($mh,$running); + } while ($running>0); + + $ch1="string"; + + $results1=curl_multi_getcontent($ch1); //incorrect parameter type + $results2=curl_multi_getcontent($ch2); + + //CLOSE + //curl_multi_remove_handle($mh,$ch1); + curl_multi_remove_handle($mh,$ch2); + curl_multi_close($mh); + + echo $results1; + echo $results2; + +?> +--EXPECTF-- +Warning: curl_multi_getcontent() expects parameter 1 to be resource, %unicode_string_optional% given in %s on line %d +CURL2 diff --git a/ext/curl/tests/curl_multi_getcontent_error4.phpt b/ext/curl/tests/curl_multi_getcontent_error4.phpt new file mode 100644 index 0000000..68bda37 --- /dev/null +++ b/ext/curl/tests/curl_multi_getcontent_error4.phpt @@ -0,0 +1,66 @@ +--TEST-- +Curl_multi_getcontent() error test with undefined handle +--CREDITS-- +Rein Velt (rein@velt.org) +#TestFest Utrecht 20090509 +--SKIPIF-- +<?php +if (!extension_loaded('curl')) print 'skip'; +?> +--FILE-- +<?php + //CURL_MULTI_GETCONTENT TEST + + //CREATE RESOURCES + //$ch1=undefined; + $ch2=curl_init(); + + //SET URL AND OTHER OPTIONS + curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata1.txt"); + curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__). DIRECTORY_SEPARATOR . "curl_testdata2.txt"); + curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); + + //CREATE MULTIPLE CURL HANDLE + $mh=curl_multi_init(); + + //ADD THE 2 HANDLES + curl_multi_add_handle($mh,$ch1); + curl_multi_add_handle($mh,$ch2); + + //EXECUTE + $running=0; + do { + curl_multi_exec($mh,$running); + } while ($running>0); + + + $results1=curl_multi_getcontent($ch1); //incorrect parameter type + $results2=curl_multi_getcontent($ch2); + + //CLOSE + //curl_multi_remove_handle($mh,$ch1); + curl_multi_remove_handle($mh,$ch2); + curl_multi_close($mh); + + echo $results1; + echo $results2; + +?> +--EXPECTF-- +Notice: Undefined variable: ch1 in %s on line %d + +Warning: curl_setopt() expects parameter 1 to be resource, null given in %s on line %d + +Notice: Undefined variable: ch1 in %s on line %d + +Warning: curl_setopt() expects parameter 1 to be resource, null given in %s on line %d + +Notice: Undefined variable: ch1 in %s on line %d + +Warning: curl_multi_add_handle() expects parameter 2 to be resource, null given in %s on line %d + +Notice: Undefined variable: ch1 in %s on line %d + +Warning: curl_multi_getcontent() expects parameter 1 to be resource, null given in %s on line %d +CURL2 diff --git a/ext/curl/tests/curl_multi_init_basic.phpt b/ext/curl/tests/curl_multi_init_basic.phpt new file mode 100644 index 0000000..0fd865d --- /dev/null +++ b/ext/curl/tests/curl_multi_init_basic.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test curl_multi_init() +--CREDITS-- +Mark van der Velden +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php +/* Prototype : resource curl_multi_init(void) + * Description : Returns a new cURL multi handle + * Source code : ext/curl/multi.c + * Test documentation: http://wiki.php.net/qa/temp/ext/curl + */ + +// start testing +echo "*** Testing curl_multi_init(void); ***\n"; + +//create the multiple cURL handle +$mh = curl_multi_init(); +var_dump($mh); + +curl_multi_close($mh); +var_dump($mh); +?> +===DONE=== +--EXPECTF-- +*** Testing curl_multi_init(void); *** +resource(%d) of type (curl_multi) +resource(%d) of type (Unknown) +===DONE=== diff --git a/ext/curl/tests/curl_multi_segfault.phpt b/ext/curl/tests/curl_multi_segfault.phpt new file mode 100644 index 0000000..dde8189 --- /dev/null +++ b/ext/curl/tests/curl_multi_segfault.phpt @@ -0,0 +1,56 @@ +--TEST-- +Segfault due to libcurl connection caching +--CREDITS-- +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_FTP_REMOTE_SERVER')) exit("skip PHP_CURL_FTP_REMOTE_SERVER env variable is not defined"); +if (false === getenv('PHP_CURL_FTP_REMOTE_USER')) exit("skip PHP_CURL_FTP_REMOTE_USER env variable is not defined"); +if (false === getenv('PHP_CURL_FTP_REMOTE_PASSWD')) exit("skip PHP_CURL_FTP_REMOTE_PASSWD env variable is not defined"); +?> +--FILE-- +<?php + $host = getenv('PHP_CURL_FTP_REMOTE_SERVER'); + $username = getenv('PHP_CURL_FTP_REMOTE_USER'); + $password = getenv('PHP_CURL_FTP_REMOTE_PASSWD'); + + // FTP this script to a server + $fp = fopen ( __FILE__ , "r" ); + $url = "ftp://$username:$password@$host/" ; + + $ch = curl_init (); + + curl_setopt ( $ch , CURLOPT_URL, $url ); + curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1 ); + + //force passive connection + curl_setopt ( $ch , CURLOPT_FTP_USE_EPSV, 0 ); + curl_setopt ( $ch , CURLOPT_FTP_SKIP_PASV_IP, 1 ); + + $cmh = curl_multi_init(); + curl_multi_add_handle($cmh, $ch); + + $active = null; + + do { + $mrc = curl_multi_exec($cmh, $active); + } while ($mrc == CURLM_CALL_MULTI_PERFORM); + + + while ($active && $mrc == CURLM_OK) { + if (curl_multi_select($cmh) != -1) { + do { + $mrc = curl_multi_exec($cmh, $active); + } while ($mrc == CURLM_CALL_MULTI_PERFORM); + } + } + + var_dump(is_string(curl_multi_getcontent($ch))); + curl_multi_remove_handle($cmh, $ch); + curl_close($ch); + curl_multi_close($cmh); +?> +===DONE=== +--EXPECTF-- +bool(true) +===DONE=== diff --git a/ext/curl/tests/curl_multi_select_basic1.phpt b/ext/curl/tests/curl_multi_select_basic1.phpt new file mode 100644 index 0000000..7ae8124 --- /dev/null +++ b/ext/curl/tests/curl_multi_select_basic1.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test curl_multi_select() +--CREDITS-- +Ivo Jansch <ivo@ibuildings.com> +#testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php +/* Prototype : resource curl_multi_select($mh, $timeout=1.0]) + * Description : Get all the sockets associated with the cURL extension, which can then be + * "selected" + * Source code : ? + * Test documentation: http://wiki.php.net/qa/temp/ext/curl + */ + + +//create the multiple cURL handle +$mh = curl_multi_init(); +echo curl_multi_select($mh)."\n"; + +curl_multi_close($mh); +?> +===DONE=== +--EXPECTF-- +%r(0|-1)%r +===DONE=== diff --git a/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt b/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt new file mode 100644 index 0000000..7a778f3 --- /dev/null +++ b/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt @@ -0,0 +1,22 @@ +--TEST-- +CURLOPT_FOLLOWLOCATION case check open_basedir +--CREDITS-- +WHITE new media architects - Dennis +--INI-- +open_basedir = DIRECTORY_SEPARATOR."tmp"; +--SKIPIF-- +<?php +if (!extension_loaded("curl")) print "skip cURL not loaded"; +?> +--FILE-- +<?php +print (ini_get("OPEN_BASEDIR")); +$ch = curl_init(); +$succes = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); +curl_close($ch); +var_dump($succes); +?> +--EXPECTF-- +Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set in %s.php on line %d +bool(false) + diff --git a/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt b/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt new file mode 100644 index 0000000..9de2c0f --- /dev/null +++ b/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt @@ -0,0 +1,54 @@ +--TEST-- +cURL option CURLOPT_READFUNCTION +--CREDITS-- +WHITE new media architects - Jeroen Vermeulen +#testfest Utrecht 2009 +--SKIPIF-- +<?php +if (!extension_loaded("curl")) print "skip cURL extension not loaded"; +?> +--FILE-- +<?php +function custom_readfunction($oCurl, $hReadHandle, $iMaxOut) +{ + $sData = fread($hReadHandle,$iMaxOut-10); # -10 to have space to add "custom:" + if (!empty($sData)) + { + $sData = "custom:".$sData; + } + return $sData; +} + +$sFileBase = dirname(__FILE__).DIRECTORY_SEPARATOR.'curl_opt_CURLOPT_READFUNCTION'; +$sReadFile = $sFileBase.'_in.tmp'; +$sWriteFile = $sFileBase.'_out.tmp'; +$sWriteUrl = 'file://'.$sWriteFile; + +file_put_contents($sReadFile,'contents of tempfile'); +$hReadHandle = fopen($sReadFile, 'r'); + +$oCurl = curl_init(); +curl_setopt($oCurl, CURLOPT_URL, $sWriteUrl); +curl_setopt($oCurl, CURLOPT_UPLOAD, 1); +curl_setopt($oCurl, CURLOPT_READFUNCTION, "custom_readfunction" ); +curl_setopt($oCurl, CURLOPT_INFILE, $hReadHandle ); +curl_exec($oCurl); +curl_close($oCurl); + +fclose ($hReadHandle); + +$sOutput = file_get_contents($sWriteFile); +var_dump($sOutput); +?> +===DONE=== +--CLEAN-- +<?php +$sFileBase = dirname(__FILE__).DIRECTORY_SEPARATOR.'curl_opt_CURLOPT_READFUNCTION'; +$sReadFile = $sFileBase.'_in.tmp'; +$sWriteFile = $sFileBase.'_out.tmp'; +unlink($sReadFile); +unlink($sWriteFile); +?> +--EXPECT-- +string(27) "custom:contents of tempfile" +===DONE=== diff --git a/ext/curl/tests/curl_setopt_array_basic.phpt b/ext/curl/tests/curl_setopt_array_basic.phpt new file mode 100644 index 0000000..427de7f --- /dev/null +++ b/ext/curl/tests/curl_setopt_array_basic.phpt @@ -0,0 +1,56 @@ +--TEST-- +curl_setopt_array() function - tests setting multiple cURL options with curl_setopt_array() +--CREDITS-- +Mattijs Hoitink mattijshoitink@gmail.com +#Testfest Utrecht 2009 +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php +/* + * Prototype: bool curl_setopt_array(resource $ch, array $options) + * Description: Sets multiple options for a cURL session. + * Source: ext/curl/interface.c + * Documentation: http://wiki.php.net/qa/temp/ext/curl + */ + +// Figure out what handler to use +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); +if (!empty($host)) { + // Use the set Environment variable + $url = "{$host}/get.php?test=get"; +} else { + // Create a temporary file for the test + $tempname = tempnam(sys_get_temp_dir(), 'CURL_HANDLE'); + $url = 'file://'. $tempname; + // add the test data to the file + file_put_contents($tempname, "Hello World!\nHello World!"); +} + +// Start the test +echo '== Starting test curl_setopt_array($ch, $options); ==' . "\n"; + +// curl handler +$ch = curl_init(); + +// options for the curl handler +$options = array ( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => 1 +); + +ob_start(); // start output buffering + +curl_setopt_array($ch, $options); +$returnContent = curl_exec($ch); +curl_close($ch); + +var_dump($returnContent); +isset($tempname) and is_file($tempname) and @unlink($tempname); + +?> +--EXPECT-- +== Starting test curl_setopt_array($ch, $options); == +string(25) "Hello World! +Hello World!" + diff --git a/ext/curl/tests/curl_setopt_basic002.phpt b/ext/curl/tests/curl_setopt_basic002.phpt new file mode 100644 index 0000000..d90ecb7 --- /dev/null +++ b/ext/curl/tests/curl_setopt_basic002.phpt @@ -0,0 +1,52 @@ +--TEST-- +curl_setopt basic tests with CURLOPT_STDERR. +--CREDITS-- +Paul Sohier +#phptestfest utrecht +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + +// start testing +echo "*** Testing curl_setopt with CURLOPT_STDERR\n"; + +$temp_file = tempnam(sys_get_temp_dir(), 'CURL_STDERR'); + +$handle = fopen($temp_file, 'w'); + +$url = "{$host}/"; +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_VERBOSE, 1); +curl_setopt($ch, CURLOPT_STDERR, $handle); +$curl_content = curl_exec($ch); + +fclose($handle); +unset($handle); +var_dump(preg_replace('/[\r\n]/', ' ', file_get_contents($temp_file))); +@unlink($temp_file); + +ob_start(); // start output buffering +$handle = fopen($temp_file, 'w'); +curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use +curl_setopt($ch, CURLOPT_STDERR, $handle); +$data = curl_exec($ch); +ob_end_clean(); + +fclose($handle); +unset($handle); +var_dump(preg_replace('/[\r\n]/', ' ', file_get_contents($temp_file))); +@unlink($temp_file); + +curl_close($ch); + +?> +--EXPECTF-- +*** Testing curl_setopt with CURLOPT_STDERR +string(%d) "%S" +string(%d) "%S" +* Closing connection #%d + diff --git a/ext/curl/tests/curl_setopt_basic003.phpt b/ext/curl/tests/curl_setopt_basic003.phpt new file mode 100644 index 0000000..7849140 --- /dev/null +++ b/ext/curl/tests/curl_setopt_basic003.phpt @@ -0,0 +1,43 @@ +--TEST-- +curl_setopt() call with CURLOPT_HTTPHEADER +--CREDITS-- +Paul Sohier +#phptestfest utrecht +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + +// start testing +echo "*** curl_setopt() call with CURLOPT_HTTPHEADER\n"; + +$url = "{$host}/"; +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_HTTPHEADER, 1); + +$curl_content = curl_exec($ch); +curl_close($ch); + +var_dump( $curl_content ); + +$ch = curl_init(); + +ob_start(); // start output buffering +curl_setopt($ch, CURLOPT_HTTPHEADER, array()); +curl_setopt($ch, CURLOPT_URL, $host); + +$curl_content = curl_exec($ch); +ob_end_clean(); +curl_close($ch); + +var_dump( $curl_content ); +?> +--EXPECTF-- +*** curl_setopt() call with CURLOPT_HTTPHEADER + +Warning: curl_setopt(): You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments in %s on line %d +bool(false) +bool(true) diff --git a/ext/curl/tests/curl_setopt_basic004.phpt b/ext/curl/tests/curl_setopt_basic004.phpt new file mode 100644 index 0000000..97b4115 --- /dev/null +++ b/ext/curl/tests/curl_setopt_basic004.phpt @@ -0,0 +1,44 @@ +--TEST-- +curl_setopt() call with CURLOPT_RETURNTRANSFER +--CREDITS-- +Paul Sohier +#phptestfest utrecht +--SKIPIF-- +<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; ?> +--FILE-- +<?php + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + +// start testing +echo "*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 1\n"; + +$url = "{$host}/"; +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +curl_setopt($ch, CURLOPT_URL, $url); + +$curl_content = curl_exec($ch); +curl_close($ch); + +var_dump( $curl_content ); + +echo "*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 0\n"; + +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); +curl_setopt($ch, CURLOPT_URL, $url); +ob_start(); +$curl_content = curl_exec($ch); +ob_end_clean(); +curl_close($ch); + +var_dump( $curl_content ); +?> +--EXPECTF-- +*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 1 +string(%d) "%a" +*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 0 +bool(true) diff --git a/ext/curl/tests/curl_setopt_error.phpt b/ext/curl/tests/curl_setopt_error.phpt new file mode 100644 index 0000000..ad73318 --- /dev/null +++ b/ext/curl/tests/curl_setopt_error.phpt @@ -0,0 +1,45 @@ +--TEST-- +curl_setopt() basic parameter test +--CREDITS-- +Paul Sohier +#phptestfest utrecht +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php +echo "*** curl_setopt() call with incorrect parameters\n"; +$ch = curl_init(); +curl_setopt(); +curl_setopt(false); + +curl_setopt($ch); +curl_setopt($ch, false); +curl_setopt($ch, -1); +curl_setopt($ch, ''); +curl_setopt($ch, 1, false); + +curl_setopt(false, false, false); +curl_setopt($ch, '', false); +curl_setopt($ch, 1, ''); +curl_setopt($ch, -1, 0); +?> +--EXPECTF-- +*** curl_setopt() call with incorrect parameters + +Warning: curl_setopt() expects exactly 3 parameters, 0 given in %s on line %d + +Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d + +Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d + +Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d + +Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d + +Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d + +Warning: curl_setopt() expects parameter 1 to be resource, boolean given in %s on line %d + +Warning: curl_setopt() expects parameter 2 to be long, %unicode_string_optional% given in %s on line %d + +Warning: curl_setopt(): Invalid curl configuration option in %scurl_setopt_error.php on line %d diff --git a/ext/curl/tests/curl_testdata1.txt b/ext/curl/tests/curl_testdata1.txt new file mode 100644 index 0000000..dc1e446 --- /dev/null +++ b/ext/curl/tests/curl_testdata1.txt @@ -0,0 +1 @@ +CURL1 diff --git a/ext/curl/tests/curl_testdata2.txt b/ext/curl/tests/curl_testdata2.txt new file mode 100644 index 0000000..3b9f76f --- /dev/null +++ b/ext/curl/tests/curl_testdata2.txt @@ -0,0 +1 @@ +CURL2 diff --git a/ext/curl/tests/curl_version_error.phpt b/ext/curl/tests/curl_version_error.phpt new file mode 100644 index 0000000..fb4793a --- /dev/null +++ b/ext/curl/tests/curl_version_error.phpt @@ -0,0 +1,35 @@ +--TEST--
+Test curl_version() function : error conditions
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ die('skip - curl extension not available in this build');
+}
+if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
+}
+?>
+--FILE--
+<?php
+
+/* Prototype : array curl_version ([ int $age ] )
+ * Description: Returns information about the cURL version.
+ * Source code: ext/curl/interface.c
+*/
+
+echo "*** Testing curl_version() : error conditions ***\n";
+
+echo "\n-- Testing curl_version() function with more than expected no. of arguments --\n";
+$extra_arg = 10;
+var_dump( curl_version(1, $extra_arg) );
+
+?>
+===Done===
+--EXPECTF--
+*** Testing curl_version() : error conditions ***
+
+-- Testing curl_version() function with more than expected no. of arguments --
+
+Warning: curl_version() expects at most 1 parameter, 2 given in %s on line %d
+NULL
+===Done===
diff --git a/ext/curl/tests/curl_version_variation1.phpt b/ext/curl/tests/curl_version_variation1.phpt new file mode 100644 index 0000000..cd912c4 --- /dev/null +++ b/ext/curl/tests/curl_version_variation1.phpt @@ -0,0 +1,165 @@ +--TEST--
+Test curl_version() function : usage variations - test values for $ascii argument
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+ echo "skip - curl extension not available in this build";
+}
+if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable";
+}
+?>
+--FILE--
+<?php
+
+/* Prototype : array curl_version ([ int $age ] )
+ * Description: Returns information about the cURL version.
+ * Source code: ext/curl/interface.c
+*/
+
+echo "*** Testing curl_version() function: with unexpected inputs for 'age' argument ***\n";
+
+//get an unset variable
+$unset_var = 'string_val';
+unset($unset_var);
+
+//defining a class
+class sample {
+ public function __toString() {
+ return "sample object";
+ }
+}
+
+//getting the resource
+$file_handle = fopen(__FILE__, "r");
+
+// array with different values for $input
+$inputs = array (
+
+ // integer values
+ 0,
+ 1,
+ 255,
+ 256,
+ PHP_INT_MAX,
+ -PHP_INT_MAX,
+
+ // float values
+ 10.5,
+ -20.5,
+ 10.1234567e10,
+
+ // array values
+ array(),
+ array(0),
+ array(1, 2),
+
+ //string values
+ "ABC",
+ 'abc',
+ "2abc",
+
+ // boolean values
+ true,
+ false,
+ TRUE,
+ FALSE,
+
+ // null values
+ NULL,
+ null,
+
+ // objects
+ new sample(),
+
+ // resource
+ $file_handle,
+
+ // undefined variable
+ @$undefined_var,
+
+ // unset variable
+ @$unset_var
+);
+
+// loop through with each element of the $inputs array to test curl_version() function
+$count = 1;
+foreach($inputs as $input) {
+ echo "-- Iteration $count --\n";
+ var_dump( is_array(curl_version($input)) );
+ $count ++;
+}
+
+fclose($file_handle); //closing the file handle
+
+?>
+===Done===
+--EXPECTF--
+*** Testing curl_version() function: with unexpected inputs for 'age' argument ***
+-- Iteration 1 --
+bool(true)
+-- Iteration 2 --
+bool(true)
+-- Iteration 3 --
+bool(true)
+-- Iteration 4 --
+bool(true)
+-- Iteration 5 --
+bool(true)
+-- Iteration 6 --
+bool(true)
+-- Iteration 7 --
+bool(true)
+-- Iteration 8 --
+bool(true)
+-- Iteration 9 --
+bool(true)
+-- Iteration 10 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 11 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 12 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 13 --
+
+Warning: curl_version() expects parameter 1 to be long, string given in %s on line %d
+bool(false)
+-- Iteration 14 --
+
+Warning: curl_version() expects parameter 1 to be long, string given in %s on line %d
+bool(false)
+-- Iteration 15 --
+
+Notice: A non well formed numeric value encountered in %s on line %d
+bool(true)
+-- Iteration 16 --
+bool(true)
+-- Iteration 17 --
+bool(true)
+-- Iteration 18 --
+bool(true)
+-- Iteration 19 --
+bool(true)
+-- Iteration 20 --
+bool(true)
+-- Iteration 21 --
+bool(true)
+-- Iteration 22 --
+
+Warning: curl_version() expects parameter 1 to be long, object given in %s on line %d
+bool(false)
+-- Iteration 23 --
+
+Warning: curl_version() expects parameter 1 to be long, resource given in %s on line %d
+bool(false)
+-- Iteration 24 --
+bool(true)
+-- Iteration 25 --
+bool(true)
+===Done===
diff --git a/ext/curl/tests/curl_write_callback.phpt b/ext/curl/tests/curl_write_callback.phpt new file mode 100644 index 0000000..c0b733e --- /dev/null +++ b/ext/curl/tests/curl_write_callback.phpt @@ -0,0 +1,36 @@ +--TEST-- +Test curl option CURLOPT_WRITEFUNCTION +--CREDITS-- +Mathieu Kooiman <mathieuk@gmail.com> +Dutch UG, TestFest 2009, Utrecht +--DESCRIPTION-- +Writes the value 'test' to a temporary file. Use curl to access this file, passing the output into a callback. Tests the PHP_CURL_USER case in curl_write. +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +function curl_callback($curl_handle, $received_data) +{ + echo $received_data; + return strlen($received_data); +} + +$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test'); + +$fp = fopen($log_file, 'w+'); +fwrite($fp, "test"); +fclose($fp); + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curl_callback'); +curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file); +curl_exec($ch); +curl_close($ch); + +// cleanup +unlink($log_file); + +?> +--EXPECT-- +test diff --git a/ext/curl/tests/curl_write_file.phpt b/ext/curl/tests/curl_write_file.phpt new file mode 100644 index 0000000..95d2b0e --- /dev/null +++ b/ext/curl/tests/curl_write_file.phpt @@ -0,0 +1,38 @@ +--TEST-- +Test curl option CURLOPT_FILE +--CREDITS-- +Mathieu Kooiman <mathieuk@gmail.com> +Dutch UG, TestFest 2009, Utrecht +--DESCRIPTION-- +Writes the value 'test' to a temporary file. Use curl to access this file and store the output in another temporary file. Tests the PHP_CURL_FILE case in curl_write(). +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +$test_file = tempnam(sys_get_temp_dir(), 'php-curl-test'); +$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test'); + +$fp = fopen($log_file, 'w+'); +fwrite($fp, "test"); +fclose($fp); + +$testfile_fp = fopen($test_file, 'w+'); + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_FILE, $testfile_fp); +curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file); +curl_exec($ch); +curl_close($ch); + +fclose($testfile_fp); + +echo file_get_contents($test_file); + +// cleanup +unlink($test_file); +unlink($log_file); + +?> +--EXPECT-- +test diff --git a/ext/curl/tests/curl_write_return.phpt b/ext/curl/tests/curl_write_return.phpt new file mode 100644 index 0000000..1ddc551 --- /dev/null +++ b/ext/curl/tests/curl_write_return.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test curl option CURLOPT_RETURNTRANSFER +--CREDITS-- +Mathieu Kooiman <mathieuk@gmail.com> +Dutch UG, TestFest 2009, Utrecht +--DESCRIPTION-- +Writes the value 'test' to a temporary file. Use curl to access this file and have it return the content from curl_exec(). Tests the PHP_CURL_RETURN case +of curl_write(). +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test'); + +$fp = fopen($log_file, 'w+'); +fwrite($fp, "test"); +fclose($fp); + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file); +$result = curl_exec($ch); +curl_close($ch); + +echo $result; + +// cleanup +unlink($log_file); + +?> +--EXPECT-- +test diff --git a/ext/curl/tests/curl_write_stdout.phpt b/ext/curl/tests/curl_write_stdout.phpt new file mode 100644 index 0000000..893b27e --- /dev/null +++ b/ext/curl/tests/curl_write_stdout.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test curl option CURLOPT_FILE with STDOUT handle +--CREDITS-- +Mathieu Kooiman <mathieuk@gmail.com> +Dutch UG, TestFest 2009, Utrecht +--DESCRIPTION-- +Writes the value 'test' to a temporary file. Use curl to access this file and store the output in another temporary file. Tests the PHP_CURL_FILE case in curl_write(). +--SKIPIF-- +<?php if (!extension_loaded("curl")) print "skip"; ?> +--FILE-- +<?php + +$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test'); + +$fp = fopen($log_file, 'w+'); +fwrite($fp, "test"); +fclose($fp); + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_FILE, STDOUT); +curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file); +curl_exec($ch); +curl_close($ch); + +// cleanup +unlink($log_file); + +?> +--EXPECT-- +test diff --git a/ext/curl/tests/curl_writeheader_callback.phpt b/ext/curl/tests/curl_writeheader_callback.phpt new file mode 100644 index 0000000..fa27363 --- /dev/null +++ b/ext/curl/tests/curl_writeheader_callback.phpt @@ -0,0 +1,37 @@ +--TEST-- +Test curl option CURLOPT_HEADERFUNCTION +--CREDITS-- +Mathieu Kooiman <mathieuk@gmail.com> +Dutch UG, TestFest 2009, Utrecht +--DESCRIPTION-- +Hit the host identified by PHP_CURL_HTTP_REMOTE_SERVER and determine that the headers are sent to the callback specified for CURLOPT_HEADERFUNCTION. Different test servers specified for PHP_CURL_HTTP_REMOTE_SERVER might return different sets of headers. Just test for HTTP/1.1 200 OK. +--SKIPIF-- +<?php +if (!extension_loaded("curl")) { + echo "skip - curl extension not available in this build"; +} +if (!getenv('PHP_CURL_HTTP_REMOTE_SERVER')) { + echo "skip need PHP_CURL_HTTP_REMOTE_SERVER environment variable"; +} +?> +--FILE-- +<?php + +function curl_header_callback($curl_handle, $data) +{ + if (strtolower(substr($data,0, 4)) == 'http') + echo $data; +} + +$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + +$ch = curl_init(); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'curl_header_callback'); +curl_setopt($ch, CURLOPT_URL, $host); +curl_exec($ch); +curl_close($ch); + +?> +--EXPECTF-- +HTTP/1.1 %d %s diff --git a/ext/curl/tests/responder/get.php b/ext/curl/tests/responder/get.php new file mode 100644 index 0000000..9e13d6a --- /dev/null +++ b/ext/curl/tests/responder/get.php @@ -0,0 +1,39 @@ +<?php + $test = isset($_GET['test']) ? $_GET['test'] : null; + switch($test) { + case 'post': + var_dump($_POST); + break; + case 'getpost': + var_dump($_GET); + var_dump($_POST); + break; + case 'referer': + echo $_SERVER['HTTP_REFERER']; + break; + case 'useragent': + echo $_SERVER['HTTP_USER_AGENT']; + break; + case 'httpversion': + echo $_SERVER['SERVER_PROTOCOL']; + break; + case 'cookie': + echo $_COOKIE['foo']; + break; + case 'encoding': + echo $_SERVER['HTTP_ACCEPT_ENCODING']; + break; + case 'contenttype': + header('Content-Type: text/plain;charset=utf-8'); + break; + case 'file': + if (isset($_FILES['file'])) { + echo $_FILES['file']['name'] . '|' . $_FILES['file']['type']; + } + break; + default: + echo "Hello World!\n"; + echo "Hello World!"; + break; + } +?> |