2014-07-07 15:37:35 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Copyright (c) 2014 Thomas Müller <deepdiver@owncloud.com>
|
|
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
|
|
* later.
|
|
|
|
* See the COPYING-README file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
class TestCollationRepair extends \OC\Repair\Collation {
|
|
|
|
/**
|
|
|
|
* @param \Doctrine\DBAL\Connection $connection
|
|
|
|
* @return string[]
|
|
|
|
*/
|
|
|
|
public function getAllNonUTF8BinTables($connection) {
|
|
|
|
return parent::getAllNonUTF8BinTables($connection);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tests for the converting of MySQL tables to InnoDB engine
|
|
|
|
*
|
2015-11-03 00:52:41 +00:00
|
|
|
* @group DB
|
|
|
|
*
|
2014-07-07 15:37:35 +00:00
|
|
|
* @see \OC\Repair\RepairMimeTypes
|
|
|
|
*/
|
2014-11-10 22:30:38 +00:00
|
|
|
class TestRepairCollation extends \Test\TestCase {
|
2014-07-07 15:37:35 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @var TestCollationRepair
|
|
|
|
*/
|
|
|
|
private $repair;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var \Doctrine\DBAL\Connection
|
|
|
|
*/
|
|
|
|
private $connection;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
private $tableName;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @var \OCP\IConfig
|
|
|
|
*/
|
|
|
|
private $config;
|
|
|
|
|
2014-11-10 22:30:38 +00:00
|
|
|
protected function setUp() {
|
|
|
|
parent::setUp();
|
|
|
|
|
2014-07-07 15:37:35 +00:00
|
|
|
$this->connection = \OC_DB::getConnection();
|
|
|
|
$this->config = \OC::$server->getConfig();
|
|
|
|
if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySqlPlatform) {
|
|
|
|
$this->markTestSkipped("Test only relevant on MySql");
|
|
|
|
}
|
|
|
|
|
|
|
|
$dbPrefix = $this->config->getSystemValue("dbtableprefix");
|
2014-12-02 12:51:36 +00:00
|
|
|
$this->tableName = $this->getUniqueID($dbPrefix . "_collation_test");
|
2014-07-07 15:37:35 +00:00
|
|
|
$this->connection->exec("CREATE TABLE $this->tableName(text VARCHAR(16)) COLLATE utf8_unicode_ci");
|
|
|
|
|
|
|
|
$this->repair = new TestCollationRepair($this->config, $this->connection);
|
|
|
|
}
|
|
|
|
|
2014-11-10 22:30:38 +00:00
|
|
|
protected function tearDown() {
|
2014-07-07 15:37:35 +00:00
|
|
|
$this->connection->getSchemaManager()->dropTable($this->tableName);
|
2014-11-10 22:30:38 +00:00
|
|
|
parent::tearDown();
|
2014-07-07 15:37:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testCollationConvert() {
|
|
|
|
$tables = $this->repair->getAllNonUTF8BinTables($this->connection);
|
|
|
|
$this->assertGreaterThanOrEqual(1, count($tables));
|
|
|
|
|
|
|
|
$this->repair->run();
|
|
|
|
|
|
|
|
$tables = $this->repair->getAllNonUTF8BinTables($this->connection);
|
|
|
|
$this->assertCount(0, $tables);
|
|
|
|
}
|
|
|
|
}
|