View source
<?php
namespace Drupal\Tests\sqlsrv\Kernel;
use Drupal\Core\Database\Database;
use Drupal\Core\Database\DatabaseAccessDeniedException;
use Drupal\Core\Database\DatabaseNotFoundException;
class ConnectionTest extends SqlsrvTestBase {
public function testCondition() {
$db = Database::getConnection('default', 'default');
$namespace = (new \ReflectionObject($db))
->getNamespaceName() . "\\Condition";
$condition = $db
->condition('AND');
$this
->assertSame($namespace, get_class($condition));
$nested_and_condition = $condition
->andConditionGroup();
$this
->assertSame($namespace, get_class($nested_and_condition));
$nested_or_condition = $condition
->orConditionGroup();
$this
->assertSame($namespace, get_class($nested_or_condition));
}
public function testCreateUrlFromConnectionOptions() {
$connection_array = [
'driver' => 'sqlsrv',
'database' => 'mydrupalsite',
'username' => 'sa',
'password' => 'Password12!',
'host' => 'localhost',
'schema' => 'dbo',
'cache_schema' => 'true',
];
$url = $this->connection
->createUrlFromConnectionOptions($connection_array);
$db_url = "sqlsrv://sa:Password12!@localhost/mydrupalsite?schema=dbo&cache_schema=true";
$this
->assertEquals($db_url, $url);
}
public function testAccessDeniedException() {
$connection_array = [
'driver' => 'sqlsrv',
'database' => 'mydrupalsite',
'username' => 'sa',
'password' => 'incorrect!',
'host' => 'localhost',
'schema' => 'dbo',
'cache_schema' => 'true',
];
$this
->expectException(DatabaseAccessDeniedException::class);
$this->connection
->open($connection_array);
}
public function testRethrowPDOException() {
$connection_array = [
'driver' => 'sqlsrv',
'database' => 'mydrupalsite',
'username' => 'sa',
'password' => 'Password12!',
'host' => '10.0.0.42',
'schema' => 'dbo',
'cache_schema' => 'true',
];
$this
->expectException(\PDOException::class);
$this
->expectExceptionCode('HYT00');
$this->connection
->open($connection_array);
}
public function testDatabaseNotFoundException() {
$connection_array = [
'driver' => 'sqlsrv',
'database' => 'incorrect',
'username' => 'sa',
'password' => 'Password12!',
'host' => 'localhost',
'schema' => 'dbo',
'cache_schema' => 'true',
];
$this
->expectException(DatabaseNotFoundException::class);
$this->connection
->open($connection_array);
}
}