diff --git a/app/tests/TestCase/Controller/PagesControllerTest.php b/app/tests/TestCase/Controller/PagesControllerTest.php index 570d369a5..a6350b006 100644 --- a/app/tests/TestCase/Controller/PagesControllerTest.php +++ b/app/tests/TestCase/Controller/PagesControllerTest.php @@ -26,93 +26,101 @@ #[CoversClass('PagesController')] class PagesControllerTest extends TestCase { - use IntegrationTestTrait; - - /** - * testDisplay method - * - * @return void - */ - public function testDisplay() - { - Configure::write('debug', true); - $this->get('/pages/home'); - $this->assertResponseOk(); - - // The home page content is application-specific; don't assert CakePHP's skeleton text. - $this->assertResponseContains(''); - } - - /** - * 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('stack-frames'); - $this->assertResponseContains('not_existing.php'); - } - - /** - * Test directory traversal protection - * - * @return void - */ - public function testDirectoryTraversalProtection() - { - $this->enableCsrfToken(); - - $this->get('/pages/../Layout/ajax'); - $this->assertResponseCode(403); - $this->assertResponseContains('Forbidden'); - } - - /** - * Test that CSRF protection is applied to page rendering. - * - * @return void - */ - public function testCsrfAppliedError() - { - $this->post('/pages/home', ['hello' => 'world']); - - $this->assertResponseCode(403); - $this->assertResponseContains('CSRF'); - } - - /** - * Test that CSRF protection is applied to page rendering. - * - * @return void - */ - public function testCsrfAppliedOk() - { - $this->enableCsrfToken(); - $this->enableSecurityToken(); - - $this->post('/pages/home', ['hello' => 'world']); - - $this->assertThat(403, $this->logicalNot(new StatusCode($this->_response))); - $this->assertResponseNotContains('CSRF'); - } + use IntegrationTestTrait; + + /** + * testDisplay method + * + * @return void + */ + public function testDisplay() + { + Configure::write('debug', true); + $this->get('/pages/home'); + + $this->assertResponseOk(); + + $body = (string)$this->_response->getBody(); + + // Debug: dump actual response content to STDOUT (first 2000 chars) + fwrite(STDOUT, "\n--- /pages/home response body (first 2000 chars) ---\n"); + fwrite(STDOUT, substr($body, 0, 2000) . "\n"); + fwrite(STDOUT, "--- end ---\n\n"); + + $this->assertNotEmpty($body, 'Expected /pages/home to render a non-empty response body'); + } + + + /** + * 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('stack-frames'); + $this->assertResponseContains('not_existing.php'); + } + + /** + * Test directory traversal protection + * + * @return void + */ + public function testDirectoryTraversalProtection() + { + $this->enableCsrfToken(); + + $this->get('/pages/../Layout/ajax'); + $this->assertResponseCode(403); + $this->assertResponseContains('Forbidden'); + } + + /** + * Test that CSRF protection is applied to page rendering. + * + * @return void + */ + public function testCsrfAppliedError() + { + $this->post('/pages/home', ['hello' => 'world']); + + $this->assertResponseCode(403); + $this->assertResponseContains('CSRF'); + } + + /** + * Test that CSRF protection is applied to page rendering. + * + * @return void + */ + public function testCsrfAppliedOk() + { + $this->enableCsrfToken(); + $this->enableSecurityToken(); + + $this->post('/pages/home', ['hello' => 'world']); + + $this->assertThat(403, $this->logicalNot(new StatusCode($this->_response))); + $this->assertResponseNotContains('CSRF'); + } }