summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierrick Charron <pierrick@php.net>2011-12-07 16:32:50 +0000
committerPierrick Charron <pierrick@php.net>2011-12-07 16:32:50 +0000
commit25081046d7cb750243f36475b5345fbfaa10f4bd (patch)
tree7a43375a7e58276662124140477808bc4b60f2ed
parentd35096c175242ad710380ddc7bbae0b01dda2adc (diff)
downloadphp-git-25081046d7cb750243f36475b5345fbfaa10f4bd.tar.gz
Add new test for CURLOPT_POSTFIELDS
-rw-r--r--ext/curl/tests/bug27023.phpt48
-rw-r--r--ext/curl/tests/responder/get.php5
2 files changed, 53 insertions, 0 deletions
diff --git a/ext/curl/tests/bug27023.phpt b/ext/curl/tests/bug27023.phpt
new file mode 100644
index 0000000000..ca42c60927
--- /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;type=text/plain;filename=foo.txt');
+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/responder/get.php b/ext/curl/tests/responder/get.php
index e77faa57d9..daffdfca08 100644
--- a/ext/curl/tests/responder/get.php
+++ b/ext/curl/tests/responder/get.php
@@ -25,6 +25,11 @@
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!";