createDatabaseInterface(); } public function testCheckParametersWithMissingParameters(): void { $_REQUEST = []; $response = new ResponseRenderer(); $template = new Template(); $controller = new class ($response, $template) extends AbstractController { /** * @psalm-param non-empty-list $params */ public function testCheckParameters(array $params): void { parent::checkParameters($params); } }; \PhpMyAdmin\ResponseRenderer::getInstance()->setAjax(false); $GLOBALS['param1'] = 'param1'; $GLOBALS['param2'] = null; $message = 'index.php: Missing parameter: param2'; $message .= MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true); $message .= '[br]'; $expected = Message::error($message)->getDisplay(); $controller->testCheckParameters(['param1', 'param2']); $this->assertSame($expected, $response->getHTMLResult()); $this->assertSame(400, $response->getHttpResponseCode()); } public function testCheckParametersWithAllParameters(): void { $_REQUEST = []; $response = new ResponseRenderer(); $controller = new class ($response, new Template()) extends AbstractController { /** * @psalm-param non-empty-list $params */ public function testCheckParameters(array $params): void { parent::checkParameters($params); } }; \PhpMyAdmin\ResponseRenderer::getInstance()->setAjax(false); $GLOBALS['param1'] = 'param1'; $GLOBALS['param2'] = 'param2'; $controller->testCheckParameters(['param1', 'param2']); $this->assertSame(200, $response->getHttpResponseCode()); } public function testSendErrorResponseWithJson(): void { $response = new ResponseRenderer(); $response->setAjax(true); $controller = new class ($response, new Template()) extends AbstractController { /** * @psalm-param int<400,599> $statusCode */ public function testSendErrorResponse(string $message, int $statusCode = 400): void { parent::sendErrorResponse($message, $statusCode); } }; $controller->testSendErrorResponse('Error message.', 404); $this->assertSame(404, $response->getHttpResponseCode()); $this->assertFalse($response->hasSuccessState()); $this->assertSame('', $response->getHTMLResult()); $this->assertSame([ 'isErrorResponse' => true, 'message' => 'Error message.', ], $response->getJSONResult()); } public function testSendErrorResponseWithHtml(): void { $response = new ResponseRenderer(); $response->setAjax(false); $controller = new class ($response, new Template()) extends AbstractController { /** * @psalm-param int<400,599> $statusCode */ public function testSendErrorResponse(string $message, int $statusCode = 400): void { parent::sendErrorResponse($message, $statusCode); } }; $controller->testSendErrorResponse('Error message.', 404); $this->assertSame(404, $response->getHttpResponseCode()); $this->assertFalse($response->hasSuccessState()); $this->assertSame( Message::error('Error message.')->getDisplay(), $response->getHTMLResult() ); $this->assertSame([], $response->getJSONResult()); } }