Tests the serialization and unserialization of a database connection.
public function testConnectionSerialization() {
$db = Database::getConnection('default', 'default');
try {
$serialized = serialize($db);
$this
->pass('The database connection can be serialized.');
$unserialized = unserialize($serialized);
$this
->assertTrue(get_class($unserialized) === get_class($db));
} catch (\Exception $e) {
$this
->fail('The database connection cannot be serialized.');
}
// Ensure that all properties on the unserialized object are the same.
$db_reflection = new \ReflectionObject($db);
$unserialized_reflection = new \ReflectionObject($unserialized);
foreach ($db_reflection
->getProperties() as $value) {
// Skip the pdo connection object.
if ($value
->getName() == 'connection') {
continue;
}
$value
->setAccessible(TRUE);
$unserialized_property = $unserialized_reflection
->getProperty($value
->getName());
$unserialized_property
->setAccessible(TRUE);
$this
->assertEqual($unserialized_property
->getValue($unserialized), $value
->getValue($db));
}
}