From 006e75712b7a801a8a59392b2f96858c0aa7300e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Thu, 5 Feb 2026 14:46:24 -0300 Subject: [PATCH] Add unit test for Controllers\HomeController class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- .editorconfig | 4 + .../Fixtures/Home-testHomeController.html | 247 ++++++++++++++++++ tests/unit/Controllers/HomeControllerTest.php | 38 ++- 3 files changed, 286 insertions(+), 3 deletions(-) create mode 100644 tests/unit/Controllers/Fixtures/Home-testHomeController.html diff --git a/.editorconfig b/.editorconfig index 8f9a532787..f4f577e8ee 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,3 +18,7 @@ insert_final_newline = false [tests/test_data/*] insert_final_newline = false + +[tests/unit/**/Fixtures/*.html] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/tests/unit/Controllers/Fixtures/Home-testHomeController.html b/tests/unit/Controllers/Fixtures/Home-testHomeController.html new file mode 100644 index 0000000000..d4fba61aa4 --- /dev/null +++ b/tests/unit/Controllers/Fixtures/Home-testHomeController.html @@ -0,0 +1,247 @@ +%A + +
+ +
+
+
+ +
+
+ General settings +
+
    + +
  • + + Change password Change password + + + +
  • + +
  • +
    + +
    + +
    +
    + +
    +
    +
  • + +
  • + + More settings More settings + +
  • +
+
+ +
+
+ Appearance settings +
+
    +%A +
  • +
    + +
    + +
    +
    +
    + + +
    +
    + +
    +
  • +
+
+
+ +
+
+
+ Database server +
+
    +
  • + Server: + +
  • +
  • + Hostname: + test-hostname +
  • +
  • + Server type: + MySQL +
  • +
  • + Server connection: + SSL is not being used Documentation +
  • +
  • + Server version: + 5.50.0 - +
  • +
  • + User: + +
  • +
  • + Server charset: + + utf8mb4_0900_ai_ci (utf8mb4) + +
  • +
+
+ +
+
+ Web server +
+
    +
  • + Database client version: + libmysql - mysqlnd x.x.x-dev (phpMyAdmin tests) +
  • +
  • + PHP extension: + mysqli + Documentation +%A mbstring + Documentation + sodium + Documentation +
  • +
  • + PHP version: + %s +
  • +
+
+ +
+
+ phpMyAdmin +
+ +
+
+
+ + +
+
+ + + + + diff --git a/tests/unit/Controllers/HomeControllerTest.php b/tests/unit/Controllers/HomeControllerTest.php index 58e2510727..ae69b2d0f9 100644 --- a/tests/unit/Controllers/HomeControllerTest.php +++ b/tests/unit/Controllers/HomeControllerTest.php @@ -10,8 +10,8 @@ use PhpMyAdmin\Controllers\HomeController; use PhpMyAdmin\Dbal\DatabaseInterface; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Factory\ServerRequestFactory; -use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Tests\AbstractTestCase; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Theme\ThemeManager; use PHPUnit\Framework\Attributes\CoversClass; @@ -23,7 +23,7 @@ final class HomeControllerTest extends AbstractTestCase $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db']); $controller = new HomeController( - self::createStub(ResponseRenderer::class), + new ResponseRenderer(), self::createStub(Config::class), self::createStub(ThemeManager::class), self::createStub(DatabaseInterface::class), @@ -44,7 +44,7 @@ final class HomeControllerTest extends AbstractTestCase $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']); $controller = new HomeController( - self::createStub(ResponseRenderer::class), + new ResponseRenderer(), self::createStub(Config::class), self::createStub(ThemeManager::class), self::createStub(DatabaseInterface::class), @@ -59,4 +59,36 @@ final class HomeControllerTest extends AbstractTestCase ); self::assertSame('', (string) $response->getBody()); } + + public function testHomeController(): void + { + $config = Config::$instance = new Config(); + $dbiDummy = $this->createDbiDummy(); + $dbiDummy->addSelectDb('mysql'); + $dbiDummy->addResult( + "SHOW SESSION VARIABLES LIKE 'character_set_server';", + [['character_set_server', 'utf8mb4']], + ['Variable_name', 'Value'], + ); + $dbiDummy->addResult('SELECT @@hostname;', [['test-hostname']]); + $dbi = DatabaseInterface::$instance = $this->createDatabaseInterface($dbiDummy); + + $controller = new HomeController( + new ResponseRenderer(), + $config, + new ThemeManager(), + $dbi, + ResponseFactory::create(), + ); + + $response = $controller(ServerRequestFactory::create()->createServerRequest('GET', 'https://example.com/')); + + $dbiDummy->assertAllSelectsConsumed(); + $dbiDummy->assertAllQueriesConsumed(); + self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); + self::assertStringMatchesFormatFile( + __DIR__ . '/Fixtures/Home-testHomeController.html', + (string) $response->getBody(), + ); + } }