Merge branch 'release-2.140.115'
[feisty_meow.git] / production / example_apps / zippy_maps / tests / TestCase / Controller / PagesControllerTest.php
diff --git a/production/example_apps/zippy_maps/tests/TestCase/Controller/PagesControllerTest.php b/production/example_apps/zippy_maps/tests/TestCase/Controller/PagesControllerTest.php
new file mode 100644 (file)
index 0000000..1b478a3
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/**
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
+ * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * For full copyright and license information, please see the LICENSE.txt
+ * Redistributions of files must retain the above copyright notice
+ *
+ * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link          http://cakephp.org CakePHP(tm) Project
+ * @since         1.2.0
+ * @license       http://www.opensource.org/licenses/mit-license.php MIT License
+ */
+namespace App\Test\TestCase\Controller;
+
+use App\Controller\PagesController;
+use Cake\Core\App;
+use Cake\Core\Configure;
+use Cake\Network\Request;
+use Cake\Network\Response;
+use Cake\TestSuite\IntegrationTestCase;
+use Cake\View\Exception\MissingTemplateException;
+
+/**
+ * PagesControllerTest class
+ */
+class PagesControllerTest extends IntegrationTestCase
+{
+    /**
+     * testMultipleGet method
+     *
+     * @return void
+     */
+    public function testMultipleGet()
+    {
+        $this->get('/');
+        $this->assertResponseOk();
+        $this->get('/');
+        $this->assertResponseOk();
+    }
+
+    /**
+     * testDisplay method
+     *
+     * @return void
+     */
+    public function testDisplay()
+    {
+        $this->get('/pages/home');
+        $this->assertResponseOk();
+        $this->assertResponseContains('CakePHP');
+        $this->assertResponseContains('<html>');
+    }
+
+    /**
+     * Test that missing template renders 404 page in production
+     *
+     * @return void
+     */
+    public function testMissingTemplate()
+    {
+        Configure::write('debug', false);
+        $this->get('/pages/not_existing');
+
+        $this->assertResponseError();
+        $this->assertResponseContains('Error');
+    }
+
+    /**
+     * Test that missing template in debug mode renders missing_template error page
+     *
+     * @return void
+     */
+    public function testMissingTemplateInDebug()
+    {
+        Configure::write('debug', true);
+        $this->get('/pages/not_existing');
+
+        $this->assertResponseFailure();
+        $this->assertResponseContains('Missing Template');
+        $this->assertResponseContains('Stacktrace');
+        $this->assertResponseContains('not_existing.ctp');
+    }
+
+    /**
+     * Test directory traversal protection
+     *
+     * @return void
+     */
+    public function testDirectoryTraversalProtection()
+    {
+        $this->get('/pages/../Layout/ajax');
+        $this->assertResponseCode(403);
+        $this->assertResponseContains('Forbidden');
+    }
+}