Sfoglia il codice sorgente

Added an action method for receiving HEAD requests to Zend_Rest_Controller and updated unit tests for it and Zend_Rest_Route accordingly

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23216 44c647ce-9c0f-0410-b52a-842ac1e357ba
elazar 15 anni fa
parent
commit
a3f7cce93e

+ 8 - 1
library/Zend/Rest/Controller.php

@@ -48,6 +48,13 @@ abstract class Zend_Rest_Controller extends Zend_Controller_Action
     abstract public function getAction();
 
     /**
+     * The head action handles HEAD requests and receives an 'id' parameter; it
+     * should respond with the server resource state of the resource identified
+     * by the 'id' value.
+     */
+    abstract public function headAction();
+
+    /**
      * The post action handles POST requests; it should accept and digest a
      * POSTed resource representation and persist the resource state.
      */
@@ -67,4 +74,4 @@ abstract class Zend_Rest_Controller extends Zend_Controller_Action
      */
     abstract public function deleteAction();
 
-}
+}

+ 6 - 0
tests/Zend/Rest/ControllerTest.php

@@ -64,6 +64,10 @@ class Zend_Rest_TestController extends Zend_Rest_Controller
     {
         $this->testValue = 'getAction';
     }
+    public function headAction()
+    {
+        $this->testValue = 'headAction';
+    }
     public function postAction()
     {
         $this->testValue = 'postAction';
@@ -117,6 +121,8 @@ class Zend_Rest_ControllerTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('indexAction', $this->_testController->testValue);
         $this->_testController->getAction();
         $this->assertEquals('getAction', $this->_testController->testValue);
+        $this->_testController->headAction();
+        $this->assertEquals('headAction', $this->_testController->testValue);
         $this->_testController->postAction();
         $this->assertEquals('postAction', $this->_testController->testValue);
         $this->_testController->putAction();

+ 22 - 10
tests/Zend/Rest/RouteTest.php

@@ -96,7 +96,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $route = new Zend_Rest_Route($this->_front);
         $this->assertEquals(2, $route->getVersion());
     }
-    
+
     public function test_getInstance_fromINIConfig()
     {
     	require_once('Zend/Config/Ini.php');
@@ -107,7 +107,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
     	$route = $router->getRoute('rest');
     	$this->assertType('Zend_Rest_Route', $route);
     	$this->assertEquals('object', $route->getDefault('controller'));
-    	
+
     	$request = $this->_buildRequest('GET', '/mod/project');
     	$values = $this->_invokeRouteMatch($request, array(), $route);
     	$this->assertEquals('mod', $values['module']);
@@ -119,7 +119,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
     	$this->assertEquals('mod', $values['module']);
     	$this->assertEquals('user', $values['controller']);
     	$this->assertEquals('post', $values['action']);
-    	
+
     	$request = $this->_buildRequest('GET', '/other');
     	$values = $this->_invokeRouteMatch($request, array(), $route);
     	$this->assertFalse($values);
@@ -191,7 +191,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(123456789, $values['changedSince']);
         $this->assertEquals('active', $values['status']);
     }
-    
+
     public function test_RESTfulApp_GET_project_byIdentifier()
     {
         $request = $this->_buildRequest('GET', '/project/zendframework');
@@ -217,7 +217,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('get', $values['action']);
         $this->assertEquals('zendframework', $values['id']);
     }
-    
+
     public function test_RESTfulApp_GET_project_byIdentifier_urlencoded()
     {
         $request = $this->_buildRequest('GET', '/project/zend+framework');
@@ -230,7 +230,19 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('get', $values['action']);
         $this->assertEquals('zend framework', $values['id']);
     }
-    
+
+    public function test_RESTfulApp_HEAD_project_byIdentifier()
+    {
+        $request = $this->_buildRequest('HEAD', '/project/lcrouch');
+        $values = $this->_invokeRouteMatch($request);
+
+        $this->assertType('array', $values);
+        $this->assertTrue(isset($values['module']));
+        $this->assertEquals('default', $values['module']);
+        $this->assertEquals('project', $values['controller']);
+        $this->assertEquals('head', $values['action']);
+    }
+
     public function test_RESTfulApp_GET_project_edit()
     {
         $request = $this->_buildRequest('GET', '/project/zendframework/edit');
@@ -489,7 +501,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $request = $this->_buildRequest('POST', '/mod/index');
         $config = array('mod'=>array('user'));
         $values = $this->_invokeRouteMatch($request, $config);
-    
+
         $this->assertFalse($values);
     }
 
@@ -498,7 +510,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $request = $this->_buildRequest('POST', '/mod');
         $config = array('mod'=>array('user'));
         $values = $this->_invokeRouteMatch($request, $config);
-    
+
         $this->assertFalse($values);
     }
 
@@ -553,7 +565,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $url = $route->assemble($params);
         $this->assertEquals('mod/user/index/foo/bar', $url);
     }
-    
+
     public function test_assemble_encode_param_values()
     {
         $route = new Zend_Rest_Route($this->_front, array(), array());
@@ -569,7 +581,7 @@ class Zend_Rest_RouteTest extends PHPUnit_Framework_TestCase
         $url = $route->assemble($params, false, false);
         $this->assertEquals('mod/user/index/foo/bar is n!ice', $url);
     }
-    
+
     private function _buildRequest($method, $uri)
     {
         $request = new Zend_Controller_Request_HttpTestCase();