Browse Source

Add test case

mscherer 6 years ago
parent
commit
4a79c33774

+ 1 - 1
src/Controller/Component/RefererRedirectComponent.php

@@ -33,7 +33,7 @@ class RefererRedirectComponent extends Component {
 		$actions = $this->getConfig('actions');
 		$currentAction = $this->getController()->getRequest()->getParam('action');
 
-		if ($actions && !in_array($currentAction, $actions, true)) {
+		if ($currentAction && $actions && !in_array($currentAction, $actions, true)) {
 			return null;
 		}
 

+ 64 - 0
tests/TestCase/Controller/Component/RefererRedirectComponentTest.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace Tools\Test\TestCase\Controller\Component;
+
+use App\Controller\RefererRedirectComponentTestController;
+use Cake\Controller\ComponentRegistry;
+use Cake\Core\Configure;
+use Cake\Event\Event;
+use Cake\Http\Response;
+use Cake\Http\ServerRequest;
+use Tools\Controller\Component\RefererRedirectComponent;
+use Tools\TestSuite\TestCase;
+
+class RefererRedirectComponentTest extends TestCase {
+
+	/**
+	 * @var \Cake\Event\Event
+	 */
+	public $event;
+
+	/**
+	 * @var \App\Controller\RefererRedirectComponentTestController
+	 */
+	public $Controller;
+
+	/**
+	 * @return void
+	 */
+	public function setUp() {
+		parent::setUp();
+
+		$serverRequest = new ServerRequest();
+		$serverRequest = $serverRequest->withQueryParams(['ref' => '/somewhere-else']);
+
+		$this->event = new Event('Controller.beforeFilter');
+		$this->Controller = new RefererRedirectComponentTestController($serverRequest);
+
+		Configure::write('App.fullBaseUrl', 'http://localhost');
+	}
+
+	/**
+	 * @return void
+	 */
+	public function tearDown() {
+		parent::tearDown();
+
+		unset($this->Controller);
+	}
+
+	/**
+	 * @return void
+	 */
+	public function testBeforeRedirect() {
+		$response = new Response();
+
+		$componentRegistry = new ComponentRegistry($this->Controller);
+		$refererRedirectComponent = new RefererRedirectComponent($componentRegistry);
+
+		$modifiedResponse = $refererRedirectComponent->beforeRedirect($this->event, ['action' => 'foo'], $response);
+
+		$this->assertSame(['/somewhere-else'], $modifiedResponse->getHeader('Location'));
+	}
+
+}

+ 3 - 0
tests/TestCase/Model/Behavior/TypographicBehaviorTest.php

@@ -29,6 +29,9 @@ class TypographicBehaviorTest extends TestCase {
 		$this->Model->addBehavior('Tools.Typographic', ['fields' => ['body'], 'before' => 'marshal']);
 	}
 
+	/**
+	 * @return void
+	 */
 	public function testObject() {
 		$this->assertInstanceOf(TypographicBehavior::class, $this->Model->behaviors()->Typographic);
 	}

+ 18 - 0
tests/test_app/Controller/RefererRedirectComponentTestController.php

@@ -0,0 +1,18 @@
+<?php
+namespace App\Controller;
+
+use Tools\Controller\Controller;
+
+/**
+ * Use Controller instead of AppController to avoid conflicts
+ *
+ * @property \Tools\Controller\Component\CommonComponent $Common
+ */
+class RefererRedirectComponentTestController extends Controller {
+
+	/**
+	 * @var array
+	 */
+	public $components = ['Tools.RefererRedirect'];
+
+}