From d23cdc55934622e3a5dd75c24b40e8b81b0597d8 Mon Sep 17 00:00:00 2001 From: Ahmad Nassri Date: Wed, 24 Feb 2016 23:01:21 -0500 Subject: [PATCH] refactor(request): request body management is now externalized to helper methods --- README.md | 115 +++++++++++++++++---- src/Unirest.php | 2 +- src/Unirest/Exception.php | 5 + src/Unirest/File.php | 22 ---- src/Unirest/Request.php | 34 +++---- src/Unirest/Request/Body.php | 66 ++++++++++++ tests/Unirest/BodyTest.php | 89 ++++++++++++++++ tests/Unirest/FileTest.php | 17 ---- tests/Unirest/RequestTest.php | 181 +++++++++++++++++++++------------ tests/Unirest/ResponseTest.php | 19 ++-- tests/bootstrap.php | 6 +- 11 files changed, 403 insertions(+), 153 deletions(-) create mode 100644 src/Unirest/Exception.php delete mode 100644 src/Unirest/File.php create mode 100644 src/Unirest/Request/Body.php create mode 100644 tests/Unirest/BodyTest.php delete mode 100644 tests/Unirest/FileTest.php diff --git a/README.md b/README.md index e6fa465..ce802ae 100644 --- a/README.md +++ b/README.md @@ -83,10 +83,10 @@ require_once '/path/to/unirest-php/src/Unirest.php'; So you're probably wondering how using Unirest makes creating requests in PHP easier, let's look at a working example: ```php -$headers = array("Accept" => "application/json"); -$body = array("foo" => "hellow", "bar" => "world"); +$headers = array('Accept' => 'application/json'); +$query = array('foo' => 'hello', 'bar' => 'world'); -$response = Unirest\Request::post("http://mockbin.com/request", $headers, $body); +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $query); $response->code; // HTTP Status code $response->headers; // Headers @@ -94,25 +94,98 @@ $response->body; // Parsed body $response->raw_body; // Unparsed body ``` -### File Uploads +### JSON Requests *(multipart/json)* -To upload files in a multipart form representation use the return value of `Unirest\File::add($path)` as the value of a parameter: +A JSON Request can be constructed using the `Unirest\Request\Body::Json` helper: ```php -$headers = array("Accept" => "application/json"); -$body = array("file" => Unirest\File::add("/tmp/file.txt")); +$headers = array('Accept' => 'application/json'); +$data = array('name' => 'ahmad', 'company' => 'mashape'); -$response = Unirest\Request::post("http://mockbin.com/request", $headers, $body); +$body = Unirest\Request\Body::json($data); + +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); +``` + +**Notes:** +- `Content-Type` headers will be automatically set to `application/json` +- the data variable will be processed through [`json_encode`](http://php.net/manual/en/function.json-encode.php) with default values for arguments. +- an error will be thrown if the [JSON Extension](http://php.net/manual/en/book.json.php) is not available. + +### Form Requests *(`application/x-www-form-urlencoded`)* + +A typical Form Request can be constructed using the `Unirest\Request\Body::Form` helper: + +```php +$headers = array('Accept' => 'application/json'); +$data = array('name' => 'ahmad', 'company' => 'mashape'); + +$body = Unirest\Request\Body::form($data); + +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); +``` + +**Notes:** +- `Content-Type` headers will be automatically set to `application/x-www-form-urlencoded` +- the final data array will be processed through [`http_build_query`](http://php.net/manual/en/function.http-build-query.php) with default values for arguments. + +### Multipart Requests *(multipart/form-data)* + +A Multipart Request can be constructed using the `Unirest\Request\Body::Multipart` helper: + +```php +$headers = array('Accept' => 'application/json'); +$data = array('name' => 'ahmad', 'company' => 'mashape'); + +$body = Unirest\Request\Body::multipart($data); + +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); +``` + +**Notes:** + +- `Content-Type` headers will be automatically set to `multipart/form-data`. +- an auto-generated `--boundary` will be set. + +### Multipart File Upload + +simply add an array of files as the second argument to to the `Multipart` helper: + +```php +$headers = array('Accept' => 'application/json'); +$data = array('name' => 'ahmad', 'company' => 'mashape'); +$files = array('bio' => '/path/to/bio.txt', 'avatar' => '/path/to/avatar.jpg'); + +$body = Unirest\Request\Body::multipart($data, $files); + +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); ``` - -### Custom Entity Body -Sending a custom body such as a JSON Object rather than a string or form style parameters we utilize json_encode for the body: +If you wish to further customize the properties of files uploaded you can do so with the `Unirest\Request\Body::File` helper: + ```php -$headers = array("Accept" => "application/json"); -$body = json_encode(array("foo" => "hellow", "bar" => "world")); +$headers = array('Accept' => 'application/json'); +$body = array( + 'name' => 'ahmad', + 'company' => 'mashape' + 'bio' => Unirest\Request\Body::file('/path/to/bio.txt', 'text/plain'), + 'avatar' => Unirest\Request\Body::file('/path/to/my_avatar.jpg', 'text/plain', 'avatar.jpg') +); -$response = Unirest\Request::post("http://mockbin.com/request", $headers, $body); +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); + ``` + +**Note**: we did not use the `Unirest\Request\Body::multipart` helper in this example, it is not needed when manually adding files. + +### Custom Body + +Sending a custom body such rather than using the `Unirest\Request\Body` helpers is also possible, for example, using a [`serialize`](http://php.net/manual/en/function.serialize.php) body string with a custom `Content-Type`: + +```php +$headers = array('Accept' => 'application/json', 'Content-Type' => 'application/x-php-serialized'); +$body = serialize((array('foo' => 'hello', 'bar' => 'world')); + +$response = Unirest\Request::post('http://mockbin.com/request', $headers, $body); ``` ### Authentication @@ -156,7 +229,7 @@ Unirest\Request::proxyAuth('username', 'password', CURLAUTH_DIGEST); Previous versions of **Unirest** support *Basic Authentication* by providing the `username` and `password` arguments: ```php -$response = Unirest\Request::get("http://mockbin.com/request", null, null, "username", "password"); +$response = Unirest\Request::get('http://mockbin.com/request', null, null, 'username', 'password'); ``` **This has been deprecated, and will be completely removed in `v.3.0.0` please use the `Unirest\Request::auth()` method instead** @@ -275,16 +348,16 @@ Unirest\Request::proxyAuth('username', 'password', CURLAUTH_DIGEST); You can set default headers that will be sent on every request: ```php -Unirest\Request::defaultHeader("Header1", "Value1"); -Unirest\Request::defaultHeader("Header2", "Value2"); +Unirest\Request::defaultHeader('Header1', 'Value1'); +Unirest\Request::defaultHeader('Header2', 'Value2'); ``` You can set default headers in bulk by passing an array: ```php Unirest\Request::defaultHeaders(array( - "Header1" => "Value1", - "Header2" => "Value2" + 'Header1' => 'Value1', + 'Header2' => 'Value2' )); ``` @@ -299,14 +372,14 @@ Unirest\Request::clearDefaultHeaders(); You can set default [cURL options](http://php.net/manual/en/function.curl-setopt.php) that will be sent on every request: ```php -Unirest\Request::curlOpt(CURLOPT_COOKIE, "foo=bar"); +Unirest\Request::curlOpt(CURLOPT_COOKIE, 'foo=bar'); ``` You can set options bulk by passing an array: ```php Unirest\Request::curlOpts(array( - CURLOPT_COOKIE => "foo=bar" + CURLOPT_COOKIE => 'foo=bar' )); ``` diff --git a/src/Unirest.php b/src/Unirest.php index a75eb85..d18fef9 100644 --- a/src/Unirest.php +++ b/src/Unirest.php @@ -1,6 +1,6 @@ $file) { + $data[$name] = call_user_func(array(__CLASS__, 'File'), $file); + } + } + + return $data; + } +} diff --git a/tests/Unirest/BodyTest.php b/tests/Unirest/BodyTest.php new file mode 100644 index 0000000..ce88fab --- /dev/null +++ b/tests/Unirest/BodyTest.php @@ -0,0 +1,89 @@ +assertEquals($file, sprintf('@%s;filename=%s;type=', $fixture, basename($fixture))); + } else { + $this->assertTrue($file instanceof \CURLFile); + } + } + + public function testHttpBuildQueryWithCurlFile() + { + $fixture = __DIR__ . '/fixtures/upload.txt'; + + $file = Body::File($fixture); + $body = array( + 'to' => 'mail@mailinator.com', + 'from' => 'mail@mailinator.com', + 'file' => $file + ); + + $result = Request::buildHTTPCurlQuery($body); + $this->assertEquals($result['file'], $file); + } + + public function testJson() + { + $body = Body::Json(array('foo', 'bar')); + + $this->assertEquals($body, '["foo","bar"]'); + } + + public function testForm() + { + $body = Body::Form(array('foo' => 'bar', 'bar' => 'baz')); + + $this->assertEquals($body, 'foo=bar&bar=baz'); + + // try again with a string + $body = Body::Form($body); + + $this->assertEquals($body, 'foo=bar&bar=baz'); + } + + public function testMultipart() + { + $arr = array('foo' => 'bar', 'bar' => 'baz'); + + $body = Body::Multipart((object) $arr); + + $this->assertEquals($body, $arr); + + $body = Body::Multipart('flat'); + + $this->assertEquals($body, array('flat')); + } + + public function testMultipartFiles() + { + $fixture = __DIR__ . '/fixtures/upload.txt'; + + $data = array('foo' => 'bar', 'bar' => 'baz'); + $files = array('test' => $fixture); + + $body = Body::Multipart($data, $files); + + // echo $body; + + $this->assertEquals($body, array( + 'foo' => 'bar', + 'bar' => 'baz', + 'test' => Body::File($fixture) + )); + } +} diff --git a/tests/Unirest/FileTest.php b/tests/Unirest/FileTest.php deleted file mode 100644 index b7316a3..0000000 --- a/tests/Unirest/FileTest.php +++ /dev/null @@ -1,17 +0,0 @@ -assertEquals($file, sprintf('@%s;filename=%s;type=', UPLOAD_FIXTURE, basename(UPLOAD_FIXTURE))); - } else { - $this->assertTrue($file instanceof \CURLFile); - } - } -} diff --git a/tests/Unirest/RequestTest.php b/tests/Unirest/RequestTest.php index 82710f2..b4a477e 100644 --- a/tests/Unirest/RequestTest.php +++ b/tests/Unirest/RequestTest.php @@ -1,42 +1,35 @@ 'mail@mailinator.com', - 'from' => 'mail@mailinator.com', - 'file' => $file - ); - - $result = Unirest\Request::buildHTTPCurlQuery($body); - $this->assertEquals($result['file'], $file); - } - public function testCurlOpts() { - Unirest\Request::curlOpt(CURLOPT_COOKIE, 'foo=bar'); + Request::curlOpt(CURLOPT_COOKIE, 'foo=bar'); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertTrue(property_exists($response->body->cookies, 'foo')); - Unirest\Request::clearCurlOpts(); + Request::clearCurlOpts(); } /** - * @expectedException Exception + * @expectedException \Unirest\Exception */ public function testTimeoutFail() { - Unirest\Request::timeout(1); + Request::timeout(1); - Unirest\Request::get('http://mockbin.com/delay/1000'); + Request::get('http://mockbin.com/delay/1000'); - Unirest\Request::timeout(null); // Cleaning timeout for the other tests + Request::timeout(null); // Cleaning timeout for the other tests } public function testDefaultHeaders() @@ -45,9 +38,9 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase 'header1' => 'Hello', 'header2' => 'world' ); - Unirest\Request::defaultHeaders($defaultHeaders); + Request::defaultHeaders($defaultHeaders); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertObjectHasAttribute('header1', $response->body->headers); @@ -55,9 +48,9 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase $this->assertObjectHasAttribute('header2', $response->body->headers); $this->assertEquals('world', $response->body->headers->header2); - Unirest\Request::clearDefaultHeaders(); + Request::clearDefaultHeaders(); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertObjectNotHasAttribute('header1', $response->body->headers); @@ -66,17 +59,17 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testDefaultHeader() { - Unirest\Request::defaultHeader('Hello', 'custom'); + Request::defaultHeader('Hello', 'custom'); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertTrue(property_exists($response->body->headers, 'hello')); $this->assertEquals('custom', $response->body->headers->hello); - Unirest\Request::clearDefaultHeaders(); + Request::clearDefaultHeaders(); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertFalse(property_exists($response->body->headers, 'hello')); @@ -84,24 +77,24 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testSetMashapeKey() { - Unirest\Request::setMashapeKey('abcd'); + Request::setMashapeKey('abcd'); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertTrue(property_exists($response->body->headers, 'x-mashape-key')); $this->assertEquals('abcd', $response->body->headers->{'x-mashape-key'}); // send another request - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertTrue(property_exists($response->body->headers, 'x-mashape-key')); $this->assertEquals('abcd', $response->body->headers->{'x-mashape-key'}); - Unirest\Request::clearDefaultHeaders(); + Request::clearDefaultHeaders(); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals(200, $response->code); $this->assertFalse(property_exists($response->body->headers, 'x-mashape-key')); @@ -109,30 +102,30 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGzip() { - $response = Unirest\Request::get('http://mockbin.com/gzip/request'); + $response = Request::get('http://mockbin.com/gzip/request'); $this->assertEquals('gzip', $response->headers['Content-Encoding']); } public function testBasicAuthenticationDeprecated() { - $response = Unirest\Request::get('http://mockbin.com/request', array(), array(), 'user', 'password'); + $response = Request::get('http://mockbin.com/request', array(), array(), 'user', 'password'); $this->assertEquals('Basic dXNlcjpwYXNzd29yZA==', $response->body->headers->authorization); } public function testBasicAuthentication() { - Unirest\Request::auth('user', 'password'); + Request::auth('user', 'password'); - $response = Unirest\Request::get('http://mockbin.com/request'); + $response = Request::get('http://mockbin.com/request'); $this->assertEquals('Basic dXNlcjpwYXNzd29yZA==', $response->body->headers->authorization); } public function testCustomHeaders() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'user-agent' => 'unirest-php', )); @@ -143,7 +136,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // GET public function testGet() { - $response = Unirest\Request::get('http://mockbin.com/request?name=Mark', array( + $response = Request::get('http://mockbin.com/request?name=Mark', array( 'Accept' => 'application/json' ), array( 'nick' => 'thefosk' @@ -157,7 +150,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetMultidimensionalArray() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'key' => 'value', @@ -176,7 +169,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetWithDots() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'user.name' => 'Mark', @@ -191,7 +184,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetWithDotsAlt() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'user.name' => 'Mark Bond', @@ -205,7 +198,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase } public function testGetWithEqualSign() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark=Hello' @@ -218,7 +211,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetWithEqualSignAlt() { - $response = Unirest\Request::get('http://mockbin.com/request', array( + $response = Request::get('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark=Hello=John' @@ -231,7 +224,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetWithComplexQuery() { - $response = Unirest\Request::get('http://mockbin.com/request?query=[{"type":"/music/album","name":null,"artist":{"id":"/en/bob_dylan"},"limit":3}]&cursor'); + $response = Request::get('http://mockbin.com/request?query=[{"type":"/music/album","name":null,"artist":{"id":"/en/bob_dylan"},"limit":3}]&cursor'); $this->assertEquals(200, $response->code); $this->assertEquals('GET', $response->body->method); @@ -241,7 +234,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testGetArray() { - $response = Unirest\Request::get('http://mockbin.com/request', array(), array( + $response = Request::get('http://mockbin.com/request', array(), array( 'name[0]' => 'Mark', 'name[1]' => 'John' )); @@ -255,7 +248,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // POST public function testPost() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark', @@ -268,14 +261,52 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase $this->assertEquals('thefosk', $response->body->postData->params->nick); } + public function testPostForm() + { + $body = Request\Body::Form(array( + 'name' => 'Mark', + 'nick' => 'thefosk' + )); + + $response = Request::post('http://mockbin.com/request', array( + 'Accept' => 'application/json' + ), $body); + + $this->assertEquals('POST', $response->body->method); + $this->assertEquals('application/x-www-form-urlencoded', $response->body->headers->{'content-type'}); + $this->assertEquals('application/x-www-form-urlencoded', $response->body->postData->mimeType); + $this->assertEquals('Mark', $response->body->postData->params->name); + $this->assertEquals('thefosk', $response->body->postData->params->nick); + } + + public function testPostMultipart() + { + $body = Request\Body::Multipart(array( + 'name' => 'Mark', + 'nick' => 'thefosk' + )); + + $response = Request::post('http://mockbin.com/request', (object) array( + 'Accept' => 'application/json', + ), $body); + + $this->assertEquals('POST', $response->body->method); + $this->assertEquals('multipart/form-data', explode(';', $response->body->headers->{'content-type'})[0]); + $this->assertEquals('multipart/form-data', $response->body->postData->mimeType); + $this->assertEquals('Mark', $response->body->postData->params->name); + $this->assertEquals('thefosk', $response->body->postData->params->nick); + } + public function testPostWithEqualSign() { - $response = Unirest\Request::post('http://mockbin.com/request', array( - 'Accept' => 'application/json' - ), array( + $body = Request\Body::Form(array( 'name' => 'Mark=Hello' )); + $response = Request::post('http://mockbin.com/request', array( + 'Accept' => 'application/json' + ), $body); + $this->assertEquals(200, $response->code); $this->assertEquals('POST', $response->body->method); $this->assertEquals('Mark=Hello', $response->body->postData->params->name); @@ -283,7 +314,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testPostArray() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name[0]' => 'Mark', @@ -298,7 +329,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testPostWithDots() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'user.name' => 'Mark', @@ -313,7 +344,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testRawPost() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json', 'Content-Type' => 'application/json' ), json_encode(array( @@ -327,9 +358,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testPostMultidimensionalArray() { - $response = Unirest\Request::post('http://mockbin.com/request', array( - 'Accept' => 'application/json' - ), array( + $body = Request\Body::Form(array( 'key' => 'value', 'items' => array( 'item1', @@ -337,6 +366,10 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase ) )); + $response = Request::post('http://mockbin.com/request', array( + 'Accept' => 'application/json' + ), $body); + $this->assertEquals(200, $response->code); $this->assertEquals('POST', $response->body->method); $this->assertEquals('value', $response->body->postData->params->key); @@ -347,7 +380,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // PUT public function testPut() { - $response = Unirest\Request::put('http://mockbin.com/request', array( + $response = Request::put('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark', @@ -363,7 +396,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // PATCH public function testPatch() { - $response = Unirest\Request::patch('http://mockbin.com/request', array( + $response = Request::patch('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark', @@ -379,7 +412,7 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // DELETE public function testDelete() { - $response = Unirest\Request::delete('http://mockbin.com/request', array( + $response = Request::delete('http://mockbin.com/request', array( 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded' ), array( @@ -394,11 +427,31 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase // Upload public function testUpload() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $fixture = __DIR__ . '/../fixtures/upload.txt'; + + $headers = array('Accept' => 'application/json'); + $files = array('file' => $fixture); + $data = array('name' => 'ahmad'); + + $body = Request\Body::Multipart($data, $files); + + $response = Request::post('http://mockbin.com/request', $headers, $body); + + $this->assertEquals(200, $response->code); + $this->assertEquals('POST', $response->body->method); + $this->assertEquals('ahmad', $response->body->postData->params->name); + $this->assertEquals('This is a test', $response->body->postData->params->file); + } + + public function testUploadWithoutHelper() + { + $fixture = __DIR__ . '/../fixtures/upload.txt'; + + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark', - 'file' => Unirest\File::add(UPLOAD_FIXTURE) + 'file' => Request\Body::File($fixture) )); $this->assertEquals(200, $response->code); @@ -409,11 +462,13 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase public function testUploadIfFilePartOfData() { - $response = Unirest\Request::post('http://mockbin.com/request', array( + $fixture = __DIR__ . '/../fixtures/upload.txt'; + + $response = Request::post('http://mockbin.com/request', array( 'Accept' => 'application/json' ), array( 'name' => 'Mark', - 'files[owl.gif]' => Unirest\File::add(UPLOAD_FIXTURE) + 'files[owl.gif]' => Request\Body::File($fixture) )); $this->assertEquals(200, $response->code); diff --git a/tests/Unirest/ResponseTest.php b/tests/Unirest/ResponseTest.php index b8774ba..dc73489 100644 --- a/tests/Unirest/ResponseTest.php +++ b/tests/Unirest/ResponseTest.php @@ -1,27 +1,34 @@ assertEquals($response->body['a'], 1); } public function testJSONAObjects() { - $opts = Unirest\Request::jsonOpts(false); - $response = new Unirest\Response(200, '{"a":1,"b":2,"c":3,"d":4,"e":5}', '', $opts); + $opts = Request::jsonOpts(false); + $response = new Response(200, '{"a":1,"b":2,"c":3,"d":4,"e":5}', '', $opts); $this->assertEquals($response->body->a, 1); } public function testJSONOpts() { - $opts = Unirest\Request::jsonOpts(false, 512, JSON_NUMERIC_CHECK); - $response = new Unirest\Response(200, '{"number": 1234567890}', '', $opts); + $opts = Request::jsonOpts(false, 512, JSON_NUMERIC_CHECK); + $response = new Response(200, '{"number": 1234567890}', '', $opts); $this->assertSame($response->body->number, 1234567890); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 1753d82..7ccbe49 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,5 +1 @@ -