function ConditionTest::testCompileWithSqlInjectionForOperator

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Database/ConditionTest.php \Drupal\Tests\Core\Database\ConditionTest::testCompileWithSqlInjectionForOperator()
  2. 10 core/tests/Drupal/Tests/Core/Database/ConditionTest.php \Drupal\Tests\Core\Database\ConditionTest::testCompileWithSqlInjectionForOperator()
  3. 9 core/tests/Drupal/Tests/Core/Database/ConditionTest.php \Drupal\Tests\Core\Database\ConditionTest::testCompileWithSqlInjectionForOperator()
  4. 8.9.x core/tests/Drupal/Tests/Core/Database/ConditionTest.php \Drupal\Tests\Core\Database\ConditionTest::testCompileWithSqlInjectionForOperator()

Tests compile with sql injection for operator.

Attributes

#[DataProvider('providerTestCompileWithSqlInjectionForOperator')]

File

core/tests/Drupal/Tests/Core/Database/ConditionTest.php, line 186

Class

ConditionTest
Tests Drupal\Core\Database\Query\Condition.

Namespace

Drupal\Tests\Core\Database

Code

public function testCompileWithSqlInjectionForOperator($operator) : void {
  $connection = $this->createStub(Connection::class);
  $connection->method('escapeField')
    ->willReturnCallback(function (string $field) : string|array|null {
    return preg_replace('/[^A-Za-z0-9_.]+/', '', $field);
  });
  $connection->method('mapConditionOperator')
    ->willReturn(NULL);
  $connection->method('condition')
    ->willReturn(new Condition('AND'));
  $query_placeholder = $this->prophesize(PlaceholderInterface::class);
  $counter = 0;
  $query_placeholder->nextPlaceholder()
    ->will(function () use (&$counter) : int {
    return $counter++;
  });
  $query_placeholder->uniqueIdentifier()
    ->willReturn(4);
  $query_placeholder = $query_placeholder->reveal();
  $condition = $connection->condition('AND');
  $condition->condition('name', 'value', $operator);
  $this->expectException(InvalidQueryException::class);
  $this->expectExceptionMessageIsOrContains('Invalid characters in query operator:');
  $condition->compile($connection, $query_placeholder);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.