]> source.dussan.org Git - nextcloud-server.git/commitdiff
- Added test to trigger index id error
authorVincent Petry <pvince81@owncloud.com>
Wed, 11 Jun 2014 15:02:34 +0000 (17:02 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Mon, 14 Jul 2014 14:20:09 +0000 (16:20 +0200)
- re-enable encryption migration tests
- sqlite requires reconnect after schema changes

apps/files_encryption/tests/migration.php
lib/private/db.php
lib/private/db/mdb2schemamanager.php

index d6cd0357ae05597c1553cd9ea152d97ae942fb36..e58ceb0bc6f1e7eed6f065800ea050ffcfcffdfd 100644 (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());
+
+               $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();
+       }
 
-               //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');
+       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');
 
index 6aaf31a30cd081edcb8b265df7f713a3dd9c4935..221a369cad21e0fb488897916ad5f598e0a2e083 100644 (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
         */
index a6d9e30cf80dfa7157b1914357e0ff6eb70cb41a..d3e379c9417beb4144f353d634e6991fabd17f2d 100644 (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;
        }
 }