class ConnectionTest in Zircon Profile 8
Same name in this branch
- 8 core/tests/Drupal/Tests/Core/Database/ConnectionTest.php \Drupal\Tests\Core\Database\ConnectionTest
- 8 core/modules/system/src/Tests/Database/ConnectionTest.php \Drupal\system\Tests\Database\ConnectionTest
Same name and namespace in other branches
- 8.0 core/tests/Drupal/Tests/Core/Database/ConnectionTest.php \Drupal\Tests\Core\Database\ConnectionTest
Tests the Connection class.
@group Database
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \Drupal\Tests\PHPUnit_Framework_TestCase
- class \Drupal\Tests\Core\Database\ConnectionTest
Expanded class hierarchy of ConnectionTest
File
- core/
tests/ Drupal/ Tests/ Core/ Database/ ConnectionTest.php, line 18 - Contains \Drupal\Tests\Core\Database\ConnectionTest.
Namespace
Drupal\Tests\Core\DatabaseView source
class ConnectionTest extends UnitTestCase {
/**
* Dataprovider for testPrefixRoundTrip().
*
* @return array
* Array of arrays with the following elements:
* - Arguments to pass to Connection::setPrefix().
* - Expected result from Connection::tablePrefix().
*/
public function providerPrefixRoundTrip() {
return array(
array(
array(
'' => 'test_',
),
'test_',
),
array(
array(
'fooTable' => 'foo_',
'barTable' => 'bar_',
),
array(
'fooTable' => 'foo_',
'barTable' => 'bar_',
),
),
);
}
/**
* Exercise setPrefix() and tablePrefix().
*
* @dataProvider providerPrefixRoundTrip
*/
public function testPrefixRoundTrip($expected, $prefix_info) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array());
// setPrefix() is protected, so we make it accessible with reflection.
$reflection = new \ReflectionClass('Drupal\\Tests\\Core\\Database\\Stub\\StubConnection');
$set_prefix = $reflection
->getMethod('setPrefix');
$set_prefix
->setAccessible(TRUE);
// Set the prefix data.
$set_prefix
->invokeArgs($connection, array(
$prefix_info,
));
// Check the round-trip.
foreach ($expected as $table => $prefix) {
$this
->assertEquals($prefix, $connection
->tablePrefix($table));
}
}
/**
* Dataprovider for testPrefixTables().
*
* @return array
* Array of arrays with the following elements:
* - Expected result.
* - Table prefix.
* - Query to be prefixed.
*/
public function providerTestPrefixTables() {
return array(
array(
'SELECT * FROM test_table',
'test_',
'SELECT * FROM {table}',
),
array(
'SELECT * FROM first_table JOIN second_thingie',
array(
'table' => 'first_',
'thingie' => 'second_',
),
'SELECT * FROM {table} JOIN {thingie}',
),
);
}
/**
* Exercise the prefixTables() method.
*
* @dataProvider providerTestPrefixTables
*/
public function testPrefixTables($expected, $prefix_info, $query) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array(
'prefix' => $prefix_info,
));
$this
->assertEquals($expected, $connection
->prefixTables($query));
}
/**
* Dataprovider for testEscapeMethods().
*
* @return array
* Array of arrays with the following elements:
* - Expected escaped string.
* - String to escape.
*/
public function providerEscapeMethods() {
return array(
array(
'thing',
'thing',
),
array(
'_item',
'_item',
),
array(
'item_',
'item_',
),
array(
'_item_',
'_item_',
),
array(
'',
'!@#$%^&*()-=+',
),
array(
'123',
'!1@2#3',
),
);
}
/**
* Test the various escaping methods.
*
* All tested together since they're basically the same method
* with different names.
*
* @dataProvider providerEscapeMethods
* @todo Separate test method for each escape method?
*/
public function testEscapeMethods($expected, $name) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array());
$this
->assertEquals($expected, $connection
->escapeDatabase($name));
$this
->assertEquals($expected, $connection
->escapeTable($name));
$this
->assertEquals($expected, $connection
->escapeField($name));
$this
->assertEquals($expected, $connection
->escapeAlias($name));
}
/**
* Dataprovider for testGetDriverClass().
*
* @return array
* Array of arrays with the following elements:
* - Expected namespaced class name.
* - Driver.
* - Namespace.
* - Class name without namespace.
*/
public function providerGetDriverClass() {
return array(
array(
'nonexistent_class',
'stub',
'\\',
'nonexistent_class',
),
array(
'Drupal\\Core\\Database\\Driver\\mysql\\Select',
'mysql',
NULL,
'Select',
),
array(
'Drupal\\Tests\\Core\\Database\\Stub\\Driver\\Schema',
'stub',
'Drupal\\Tests\\Core\\Database\\Stub\\Driver',
'Schema',
),
);
}
/**
* Test getDriverClass().
*
* @dataProvider providerGetDriverClass
*/
public function testGetDriverClass($expected, $driver, $namespace, $class) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array(
'namespace' => $namespace,
));
// Set the driver using our stub class' public property.
$connection->driver = $driver;
$this
->assertEquals($expected, $connection
->getDriverClass($class));
}
/**
* Dataprovider for testSchema().
*
* @return array
* Array of arrays with the following elements:
* - Expected namespaced class of schema object.
* - Driver for PDO connection.
* - Namespace for connection.
*/
public function providerSchema() {
return array(
array(
'Drupal\\Tests\\Core\\Database\\Stub\\Driver\\Schema',
'stub',
'Drupal\\Tests\\Core\\Database\\Stub\\Driver',
),
);
}
/**
* Test Connection::schema().
*
* @dataProvider providerSchema
*/
public function testSchema($expected, $driver, $namespace) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array(
'namespace' => $namespace,
));
$connection->driver = $driver;
$this
->assertInstanceOf($expected, $connection
->schema());
}
/**
* Test Connection::destroy().
*/
public function testDestroy() {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
// Mocking StubConnection gives us access to the $schema attribute.
$connection = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubConnection', NULL, array(
$mock_pdo,
array(
'namespace' => 'Drupal\\Tests\\Core\\Database\\Stub\\Driver',
),
));
// Generate a schema object in order to verify that we've NULLed it later.
$this
->assertInstanceOf('Drupal\\Tests\\Core\\Database\\Stub\\Driver\\Schema', $connection
->schema());
$connection
->destroy();
$this
->assertAttributeEquals(NULL, 'schema', $connection);
}
/**
* Dataprovider for testMakeComments().
*
* @return array
* Array of arrays with the following elements:
* - Expected filtered comment.
* - Arguments for Connection::makeComment().
*/
public function providerMakeComments() {
return array(
array(
'/* */ ',
array(
'',
),
),
array(
'/* Exploit * / DROP TABLE node. -- */ ',
array(
'Exploit * / DROP TABLE node; --',
),
),
array(
'/* Exploit * / DROP TABLE node. --. another comment */ ',
array(
'Exploit * / DROP TABLE node; --',
'another comment',
),
),
);
}
/**
* Test Connection::makeComments().
*
* @dataProvider providerMakeComments
*/
public function testMakeComments($expected, $comment_array) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array());
$this
->assertEquals($expected, $connection
->makeComment($comment_array));
}
/**
* Dataprovider for testFilterComments().
*
* @return array
* Array of arrays with the following elements:
* - Expected filtered comment.
* - Comment to filter.
*/
public function providerFilterComments() {
return array(
array(
'',
'',
),
array(
'Exploit * / DROP TABLE node. --',
'Exploit * / DROP TABLE node; --',
),
array(
'Exploit * / DROP TABLE node. --',
'Exploit */ DROP TABLE node; --',
),
);
}
/**
* Test Connection::filterComments().
*
* @dataProvider providerFilterComments
*/
public function testFilterComments($expected, $comment) {
$mock_pdo = $this
->getMock('Drupal\\Tests\\Core\\Database\\Stub\\StubPDO');
$connection = new StubConnection($mock_pdo, array());
// filterComment() is protected, so we make it accessible with reflection.
$reflection = new \ReflectionClass('Drupal\\Tests\\Core\\Database\\Stub\\StubConnection');
$filter_comment = $reflection
->getMethod('filterComment');
$filter_comment
->setAccessible(TRUE);
$this
->assertEquals($expected, $filter_comment
->invokeArgs($connection, array(
$comment,
)));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConnectionTest:: |
public | function | Dataprovider for testEscapeMethods(). | |
ConnectionTest:: |
public | function | Dataprovider for testFilterComments(). | |
ConnectionTest:: |
public | function | Dataprovider for testGetDriverClass(). | |
ConnectionTest:: |
public | function | Dataprovider for testMakeComments(). | |
ConnectionTest:: |
public | function | Dataprovider for testPrefixRoundTrip(). | |
ConnectionTest:: |
public | function | Dataprovider for testSchema(). | |
ConnectionTest:: |
public | function | Dataprovider for testPrefixTables(). | |
ConnectionTest:: |
public | function | Test Connection::destroy(). | |
ConnectionTest:: |
public | function | Test the various escaping methods. | |
ConnectionTest:: |
public | function | Test Connection::filterComments(). | |
ConnectionTest:: |
public | function | Test getDriverClass(). | |
ConnectionTest:: |
public | function | Test Connection::makeComments(). | |
ConnectionTest:: |
public | function | Exercise setPrefix() and tablePrefix(). | |
ConnectionTest:: |
public | function | Exercise the prefixTables() method. | |
ConnectionTest:: |
public | function | Test Connection::schema(). | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed in array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. | |
UnitTestCase:: |
protected | function | 259 |