Browse Source

Improve tests for Client\Request (#10762)

* Fix array input in method
* Make mehtod for test 4 main method request
* Fix error lint
* Fix test version
* Make dataprovider RequestTest || Fix url
* Make comment method
* Fix request test
Mehdi Fathi 8 years ago
parent
commit
02b5839599
2 changed files with 42 additions and 6 deletions
  1. 2 2
      src/Http/Client/Request.php
  2. 40 4
      tests/TestCase/Http/Client/RequestTest.php

+ 2 - 2
src/Http/Client/Request.php

@@ -153,7 +153,7 @@ class Request extends Message implements RequestInterface
      * @param array $headers The headers to add.
      * @return void
      */
-    protected function addHeaders($headers)
+    protected function addHeaders(array $headers)
     {
         foreach ($headers as $key => $val) {
             $normalized = strtolower($key);
@@ -253,5 +253,5 @@ class Request extends Message implements RequestInterface
     }
 }
 
-// @deprecated Add backwards compat alias.
+// @deprecated Add backwards compact alias.
 class_alias('Cake\Http\Client\Request', 'Cake\Network\Http\Request');

+ 40 - 4
tests/TestCase/Http/Client/RequestTest.php

@@ -22,6 +22,7 @@ use Zend\Diactoros\Uri;
  */
 class RequestTest extends TestCase
 {
+
     /**
      * test string ata, header and constructor
      *
@@ -37,10 +38,44 @@ class RequestTest extends TestCase
         $request = new Request('http://example.com', 'POST', $headers, json_encode($data));
 
         $this->assertEquals('http://example.com', $request->url());
-        $this->assertEquals('POST', $request->getMethod());
+        $this->assertContains($request->getMethod(), 'POST');
         $this->assertEquals('application/json', $request->getHeaderLine('Content-Type'));
         $this->assertEquals(json_encode($data), $request->body());
     }
+    /**
+     * @param array $headers The HTTP headers to set.
+     * @param array|string|null $data The request body to use.
+     * @param string $method The HTTP method to use.
+     *
+     * @dataProvider additionProvider
+     */
+    public function testMethods(array $headers, $data, $method)
+    {
+        $request = new Request('http://example.com', $method, $headers, json_encode($data));
+
+        $this->assertEquals($request->getMethod(), $method);
+        $this->assertEquals('http://example.com', $request->url());
+        $this->assertEquals('application/json', $request->getHeaderLine('Content-Type'));
+        $this->assertEquals(json_encode($data), $request->body());
+    }
+    /**
+     * @dataProvider additionProvider
+     */
+    public function additionProvider()
+    {
+        $headers = [
+            'Content-Type' => 'application/json',
+            'Authorization' => 'Bearer valid-token',
+        ];
+        $data = ['a' => 'b', 'c' => 'd'];
+
+        return [
+            [$headers, $data, Request::METHOD_POST],
+            [$headers, $data, Request::METHOD_GET],
+            [$headers, $data, Request::METHOD_PUT],
+            [$headers, $data, Request::METHOD_DELETE],
+        ];
+    }
 
     /**
      * test array data, header and constructor
@@ -128,7 +163,7 @@ class RequestTest extends TestCase
     }
 
     /**
-     * test method interop.
+     * test method interoperability.
      *
      * @return void
      */
@@ -136,6 +171,7 @@ class RequestTest extends TestCase
     {
         $request = new Request();
         $this->assertSame($request, $request->method(Request::METHOD_GET));
+
         $this->assertEquals(Request::METHOD_GET, $request->method());
         $this->assertEquals(Request::METHOD_GET, $request->getMethod());
 
@@ -293,13 +329,13 @@ class RequestTest extends TestCase
     {
         $request = new Request();
         $result = $request->version('1.0');
-        $this->assertSame($request, $request, 'Should return self');
+        $this->assertSame($request, $result, 'Should return self');
 
         $this->assertSame('1.0', $request->version());
     }
 
     /**
-     * test version interop.
+     * test version Interoperable.
      *
      * @return void
      */