Merge branch 'QA_5_2'
Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
commit
4be2d14e53
@ -75,6 +75,12 @@ final class SimulateDmlController implements InvocableController
|
||||
|
||||
private function process(Parser $parser): void
|
||||
{
|
||||
if ($parser->errors !== []) {
|
||||
$this->error = $parser->errors[0]->getMessage();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($parser->statements as $statement) {
|
||||
if (
|
||||
! $statement instanceof UpdateStatement && ! $statement instanceof DeleteStatement
|
||||
|
||||
@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\Import\SimulateDmlController;
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\Current;
|
||||
use PhpMyAdmin\Html\Generator;
|
||||
use PhpMyAdmin\Http\Factory\ServerRequestFactory;
|
||||
use PhpMyAdmin\Import\SimulateDml;
|
||||
use PhpMyAdmin\SqlParser\Parser;
|
||||
use PhpMyAdmin\SqlParser\Statements\DeleteStatement;
|
||||
@ -19,6 +20,7 @@ use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
|
||||
use function count;
|
||||
use function json_decode;
|
||||
|
||||
#[CoversClass(SimulateDmlController::class)]
|
||||
final class SimulateDmlControllerTest extends AbstractTestCase
|
||||
@ -276,4 +278,31 @@ final class SimulateDmlControllerTest extends AbstractTestCase
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function testStatementWithParsingError(): void
|
||||
{
|
||||
Current::$sqlQuery = 'UPDATE actor SET';
|
||||
|
||||
$request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/')
|
||||
->withParsedBody(['sql_delimiter' => ';']);
|
||||
|
||||
$responseRenderer = new ResponseRenderer();
|
||||
$responseRenderer->setAjax(true);
|
||||
$controller = new SimulateDmlController($responseRenderer, new SimulateDml($this->createDatabaseInterface()));
|
||||
$response = $controller($request);
|
||||
|
||||
$expectedMessage = <<<'HTML'
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<img src="themes/dot.gif" title="" alt="" class="icon ic_s_error"> Missing assignment in SET operation.
|
||||
</div>
|
||||
|
||||
HTML;
|
||||
|
||||
$body = (string) $response->getBody();
|
||||
self::assertJson($body);
|
||||
self::assertSame(
|
||||
['message' => $expectedMessage, 'sql_data' => false, 'success' => true],
|
||||
json_decode($body, true),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user