Fixes failing spec around CurlFile in 5.5 php and also adds additional spec

This commit is contained in:
scottmotte
2014-03-27 10:47:09 -07:00
parent 1f22deee76
commit 0fe3d04e21
2 changed files with 34 additions and 6 deletions

View File

@@ -133,7 +133,7 @@ class Unirest
* This function is useful for serializing multidimensional arrays, and avoid getting * This function is useful for serializing multidimensional arrays, and avoid getting
* the "Array to string conversion" notice * the "Array to string conversion" notice
*/ */
private static function http_build_query_for_curl($arrays, &$new = array(), $prefix = null) public static function http_build_query_for_curl($arrays, &$new = array(), $prefix = null)
{ {
if (is_object($arrays)) { if (is_object($arrays)) {
$arrays = get_object_vars($arrays); $arrays = get_object_vars($arrays);
@@ -141,7 +141,7 @@ class Unirest
foreach ($arrays AS $key => $value) { foreach ($arrays AS $key => $value) {
$k = isset($prefix) ? $prefix . '[' . $key . ']' : $key; $k = isset($prefix) ? $prefix . '[' . $key . ']' : $key;
if (is_array($value) OR is_object($value)) { if (!$value instanceof CURLFile AND (is_array($value) OR is_object($value))) {
Unirest::http_build_query_for_curl($value, $new, $k); Unirest::http_build_query_for_curl($value, $new, $k);
} else { } else {
$new[$k] = $value; $new[$k] = $value;

View File

@@ -204,6 +204,23 @@ class UnirestTest extends UnitTestCase
$this->assertEqual("Mark", $form->name); $this->assertEqual("Mark", $form->name);
} }
public function testUploadIfFilePartOfData()
{
$response = Unirest::post("http://httpbin.org/post", array(
"Accept" => "application/json"
), array(
"name" => "Mark",
"files[owl.gif]" => Unirest::file(dirname(__FILE__) . "/test_upload.txt")
));
$this->assertEqual(200, $response->code);
//$files = $response->body->files;
//$this->assertEqual("This is a test", $files->file);
$form = $response->body->form;
$this->assertEqual("Mark", $form->name);
}
public function testPostMultidimensionalArray() public function testPostMultidimensionalArray()
{ {
$response = Unirest::post("http://httpbin.org/post", array( $response = Unirest::post("http://httpbin.org/post", array(
@@ -343,4 +360,15 @@ class UnirestTest extends UnitTestCase
$this->assertEqual("ciao", $headers->{'User-Agent'}); $this->assertEqual("ciao", $headers->{'User-Agent'});
} }
public function testHttpBuildQueryWhenCurlFile()
{
$file = Unirest::file(dirname(__FILE__) . "/test_upload.txt");
$body = array(
"to" => "mail@mailinator.com",
"from" => "mail@mailinator.com",
"file" => $file
);
Unirest::http_build_query_for_curl($body, $postBody);
$this->assertEqual($postBody['file'], $file);
}
} }