- Added test to trigger index id error

- re-enable encryption migration tests
- sqlite requires reconnect after schema changes
This commit is contained in:
Vincent Petry 2014-06-11 17:02:34 +02:00 committed by Thomas Müller
parent 05ba9b3c64
commit 10a29556b0
3 changed files with 51 additions and 8 deletions

View file

@ -50,10 +50,44 @@ class Test_Migration extends PHPUnit_Framework_TestCase {
}
public function testDataMigration() {
public function checkLastIndexId() {
$query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` ('
.' `item_type`, `item_source`, `item_target`, `share_type`,'
.' `share_with`, `uid_owner`, `permissions`, `stime`, `file_source`,'
.' `file_target`, `token`, `parent`, `expiration`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)');
$query->bindValue(1, 'file');
$query->bindValue(2, 949);
$query->bindValue(3, '/949');
$query->bindValue(4, 0);
$query->bindValue(5, 'migrate-test-user');
$query->bindValue(6, 'migrate-test-owner');
$query->bindValue(7, 23);
$query->bindValue(8, 1402493312);
$query->bindValue(9, 0);
$query->bindValue(10, '/migration.txt');
$query->bindValue(11, null);
$query->bindValue(12, null);
$query->bindValue(13, null);
$this->assertEquals(1, $query->execute());
//FIXME fix this test so that we can enable it again
$this->markTestIncomplete('Disabled, because of this tests a lot of other tests fail at the moment');
$this->assertNotEquals('0', \OC_DB::insertid('*PREFIX*share'));
// cleanup
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_target` = ?');
$query->bindValue(1, '/migration.txt');
$this->assertEquals(1, $query->execute());
}
public function testBrokenLastIndexId() {
// create test table
$this->checkLastIndexId();
OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml');
$this->checkLastIndexId();
}
public function testDataMigration() {
$this->assertTableNotExist('encryption_test');
@ -80,9 +114,6 @@ class Test_Migration extends PHPUnit_Framework_TestCase {
public function testDuplicateDataMigration() {
//FIXME fix this test so that we can enable it again
$this->markTestIncomplete('Disabled, because of this tests a lot of other tests fail at the moment');
// create test table
OC_DB::createDbFromStructure(__DIR__ . '/encryption_table.xml');

View file

@ -105,6 +105,16 @@ class OC_DB {
return true;
}
/**
* The existing database connection is closed and connected again
*/
public static function reconnect() {
if(self::$connection) {
self::$connection->close();
self::$connection->connect();
}
}
/**
* @return \OC\DB\Connection
*/

View file

@ -24,8 +24,6 @@ class MDB2SchemaManager {
*/
public function __construct($conn) {
$this->conn = $conn;
$this->conn->close();
$this->conn->connect();
}
/**
@ -150,6 +148,10 @@ class MDB2SchemaManager {
$this->conn->query($sql);
}
$this->conn->commit();
if ($this->conn->getDatabasePlatform() instanceof SqlitePlatform) {
\OC_DB::reconnect();
}
return true;
}
}