Merge pull request #48217 from nextcloud/chore/prepare-oc_repair-unit10

chore: Cleanup and prepare `\OC\Repair\RepairMimeTypes` tests for PHPUnit 10
This commit is contained in:
Ferdinand Thiessen 2024-09-19 20:50:35 +02:00 committed by GitHub
commit 9813cbf616
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 185 additions and 223 deletions

View file

@ -8,8 +8,10 @@
namespace Test\Repair;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IUserManager;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
/**
* Tests for the cleaning the tags tables
@ -19,25 +21,18 @@ use OCP\Migration\IOutput;
* @see \OC\Repair\CleanTags
*/
class CleanTagsTest extends \Test\TestCase {
/** @var \OC\Repair\CleanTags */
protected $repair;
/** @var \OCP\IDBConnection */
protected $connection;
private ?int $createdFile = null;
private \OC\Repair\CleanTags $repair;
private IDBConnection $connection;
/** @var \OCP\IUserManager|\PHPUnit\Framework\MockObject\MockObject */
protected $userManager;
/** @var int */
protected $createdFile;
/** @var IOutput */
private $outputMock;
private IUserManager&MockObject $userManager;
private IOutput&MockObject $outputMock;
protected function setUp(): void {
parent::setUp();
$this->outputMock = $this->getMockBuilder('\OCP\Migration\IOutput')
$this->outputMock = $this->getMockBuilder(IOutput::class)
->disableOriginalConstructor()
->getMock();
@ -45,7 +40,7 @@ class CleanTagsTest extends \Test\TestCase {
->disableOriginalConstructor()
->getMock();
$this->connection = \OC::$server->getDatabaseConnection();
$this->connection = \OCP\Server::get(IDBConnection::class);
$this->repair = new \OC\Repair\CleanTags($this->connection, $this->userManager);
$this->cleanUpTables();
}
@ -59,14 +54,14 @@ class CleanTagsTest extends \Test\TestCase {
protected function cleanUpTables() {
$qb = $this->connection->getQueryBuilder();
$qb->delete('vcategory')
->execute();
->executeStatement();
$qb->delete('vcategory_to_object')
->execute();
->executeStatement();
$qb->delete('filecache')
->runAcrossAllShards()
->execute();
->executeStatement();
}
public function testRun(): void {
@ -119,7 +114,7 @@ class CleanTagsTest extends \Test\TestCase {
$qb = $this->connection->getQueryBuilder();
$result = $qb->select($qb->func()->count('*'))
->from($tableName)
->execute();
->executeQuery();
$this->assertEquals($expected, $result->fetchOne(), $message);
}
@ -140,7 +135,7 @@ class CleanTagsTest extends \Test\TestCase {
'category' => $qb->createNamedParameter($category),
'type' => $qb->createNamedParameter($type),
])
->execute();
->executeStatement();
return $qb->getLastInsertId();
}
@ -159,7 +154,7 @@ class CleanTagsTest extends \Test\TestCase {
'categoryid' => $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT),
'type' => $qb->createNamedParameter($type),
])
->execute();
->executeStatement();
}
/**
@ -167,7 +162,7 @@ class CleanTagsTest extends \Test\TestCase {
* @return int
*/
protected function getFileID() {
if ($this->createdFile) {
if ($this->createdFile !== null) {
return $this->createdFile;
}
@ -181,7 +176,7 @@ class CleanTagsTest extends \Test\TestCase {
'path' => $qb->createNamedParameter($fileName),
'path_hash' => $qb->createNamedParameter(md5($fileName)),
])
->execute();
->executeStatement();
$fileName = $this->getUniqueID('TestRepairCleanTags', 12);
$qb->insert('filecache')
->values([
@ -189,7 +184,7 @@ class CleanTagsTest extends \Test\TestCase {
'path' => $qb->createNamedParameter($fileName),
'path_hash' => $qb->createNamedParameter(md5($fileName)),
])
->execute();
->executeStatement();
$this->createdFile = $qb->getLastInsertId();
return $this->createdFile;

View file

@ -10,19 +10,15 @@ use OC\Template\JSCombiner;
use OCP\ICache;
use OCP\ICacheFactory;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
class ClearFrontendCachesTest extends \Test\TestCase {
/** @var ICacheFactory */
private $cacheFactory;
/** @var JSCombiner */
private $jsCombiner;
private ICacheFactory&MockObject $cacheFactory;
private JSCombiner&MockObject $jsCombiner;
private IOutput&MockObject $outputMock;
/** @var \OC\Repair\ClearFrontendCaches */
protected $repair;
/** @var IOutput */
private $outputMock;
protected \OC\Repair\ClearFrontendCaches $repair;
protected function setUp(): void {
parent::setUp();

View file

@ -10,27 +10,19 @@ use OC\Avatar\AvatarManager;
use OC\Repair\ClearGeneratedAvatarCache;
use OCP\BackgroundJob\IJobList;
use OCP\IConfig;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
class ClearGeneratedAvatarCacheTest extends \Test\TestCase {
/** @var AvatarManager */
private $avatarManager;
/** @var IOutput */
private $outputMock;
/** @var IConfig */
private $config;
/** @var IJobList */
private $jobList;
private AvatarManager&MockObject $avatarManager;
private IConfig&MockObject $config;
private IJobList&MockObject $jobList;
protected ClearGeneratedAvatarCache $repair;
protected function setUp(): void {
parent::setUp();
$this->outputMock = $this->createMock(IOutput::class);
$this->avatarManager = $this->createMock(AvatarManager::class);
$this->config = $this->createMock(IConfig::class);
$this->jobList = $this->createMock(IJobList::class);

View file

@ -8,8 +8,11 @@
namespace Test\Repair;
use OC\Repair\OldGroupMembershipShares;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\Migration\IOutput;
use OCP\Share\IShare;
use PHPUnit\Framework\MockObject\MockObject;
/**
* Class OldGroupMembershipSharesTest
@ -19,23 +22,17 @@ use OCP\Share\IShare;
* @package Test\Repair
*/
class OldGroupMembershipSharesTest extends \Test\TestCase {
/** @var OldGroupMembershipShares */
protected $repair;
/** @var \OCP\IDBConnection */
protected $connection;
/** @var \OCP\IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
protected $groupManager;
private IDBConnection $connection;
private IGroupManager&MockObject $groupManager;
protected function setUp(): void {
parent::setUp();
/** \OCP\IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
$this->groupManager = $this->getMockBuilder('OCP\IGroupManager')
$this->groupManager = $this->getMockBuilder(IGroupManager::class)
->disableOriginalConstructor()
->getMock();
$this->connection = \OC::$server->getDatabaseConnection();
$this->connection = \OCP\Server::get(IDBConnection::class);
$this->deleteAllShares();
}
@ -48,7 +45,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase {
protected function deleteAllShares() {
$qb = $this->connection->getQueryBuilder();
$qb->delete('share')->execute();
$qb->delete('share')->executeStatement();
}
public function testRun(): void {
@ -76,7 +73,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase {
$result = $query->select('id')
->from('share')
->orderBy('id', 'ASC')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$this->assertEquals([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member], ['id' => $notAMember]], $rows);
$result->closeCursor();
@ -92,7 +89,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase {
$result = $query->select('id')
->from('share')
->orderBy('id', 'ASC')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$this->assertEquals([['id' => $parent], ['id' => $group2], ['id' => $user1], ['id' => $member]], $rows);
$result->closeCursor();
@ -127,8 +124,8 @@ class OldGroupMembershipSharesTest extends \Test\TestCase {
$qb = $this->connection->getQueryBuilder();
$qb->insert('share')
->values($shareValues)
->execute();
->executeStatement();
return $this->connection->lastInsertId('*PREFIX*share');
return $qb->getLastInsertId();
}
}

View file

@ -13,27 +13,18 @@ use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class CleanPreviewsBackgroundJobTest extends TestCase {
/** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
private $rootFolder;
/** @var LoggerInterface|\PHPUnit_Framework_MockObject_MockObject */
private $logger;
/** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
private $jobList;
/** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
private $timeFactory;
/** @var CleanPreviewsBackgroundJob */
private $job;
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
private $userManager;
private IRootFolder&MockObject $rootFolder;
private LoggerInterface&MockObject $logger;
private IJobList&MockObject $jobList;
private ITimeFactory&MockObject $timeFactory;
private IUserManager&MockObject $userManager;
private CleanPreviewsBackgroundJob $job;
public function setUp(): void {
parent::setUp();
@ -90,14 +81,18 @@ class CleanPreviewsBackgroundJobTest extends TestCase {
$this->equalTo(['uid' => 'myuid'])
);
$loggerCalls = [];
$this->logger->expects($this->exactly(2))
->method('info')
->withConsecutive(
[$this->equalTo('Started preview cleanup for myuid')],
[$this->equalTo('New preview cleanup scheduled for myuid')],
);
->willReturnCallback(function () use (&$loggerCalls) {
$loggerCalls[] = func_get_args();
});
$this->job->run(['uid' => 'myuid']);
self::assertEquals([
['Started preview cleanup for myuid', []],
['New preview cleanup scheduled for myuid', []],
], $loggerCalls);
}
public function testCleanupPreviewsFinished(): void {
@ -129,17 +124,21 @@ class CleanPreviewsBackgroundJobTest extends TestCase {
$this->jobList->expects($this->never())
->method('add');
$loggerCalls = [];
$this->logger->expects($this->exactly(2))
->method('info')
->withConsecutive(
[$this->equalTo('Started preview cleanup for myuid')],
[$this->equalTo('Preview cleanup done for myuid')],
);
->willReturnCallback(function () use (&$loggerCalls) {
$loggerCalls[] = func_get_args();
});
$thumbnailFolder->expects($this->once())
->method('delete');
$this->job->run(['uid' => 'myuid']);
self::assertEquals([
['Started preview cleanup for myuid', []],
['Preview cleanup done for myuid', []],
], $loggerCalls);
}
@ -148,14 +147,18 @@ class CleanPreviewsBackgroundJobTest extends TestCase {
->with($this->equalTo('myuid'))
->willThrowException(new NotFoundException());
$loggerCalls = [];
$this->logger->expects($this->exactly(2))
->method('info')
->withConsecutive(
[$this->equalTo('Started preview cleanup for myuid')],
[$this->equalTo('Preview cleanup done for myuid')],
);
->willReturnCallback(function () use (&$loggerCalls) {
$loggerCalls[] = func_get_args();
});
$this->job->run(['uid' => 'myuid']);
self::assertEquals([
['Started preview cleanup for myuid', []],
['Preview cleanup done for myuid', []],
], $loggerCalls);
}
public function testNoThumbnailFolder(): void {
@ -172,14 +175,18 @@ class CleanPreviewsBackgroundJobTest extends TestCase {
->with($this->equalTo('thumbnails'))
->willThrowException(new NotFoundException());
$loggerCalls = [];
$this->logger->expects($this->exactly(2))
->method('info')
->withConsecutive(
[$this->equalTo('Started preview cleanup for myuid')],
[$this->equalTo('Preview cleanup done for myuid')],
);
->willReturnCallback(function () use (&$loggerCalls) {
$loggerCalls[] = func_get_args();
});
$this->job->run(['uid' => 'myuid']);
self::assertEquals([
['Started preview cleanup for myuid', []],
['Preview cleanup done for myuid', []],
], $loggerCalls);
}
public function testNotPermittedToDelete(): void {
@ -212,17 +219,21 @@ class CleanPreviewsBackgroundJobTest extends TestCase {
$this->jobList->expects($this->never())
->method('add');
$this->logger->expects($this->exactly(2))
->method('info')
->withConsecutive(
[$this->equalTo('Started preview cleanup for myuid')],
[$this->equalTo('Preview cleanup done for myuid')],
);
$thumbnailFolder->expects($this->once())
->method('delete')
->willThrowException(new NotPermittedException());
$loggerCalls = [];
$this->logger->expects($this->exactly(2))
->method('info')
->willReturnCallback(function () use (&$loggerCalls) {
$loggerCalls[] = func_get_args();
});
$this->job->run(['uid' => 'myuid']);
self::assertEquals([
['Started preview cleanup for myuid', []],
['Preview cleanup done for myuid', []],
], $loggerCalls);
}
}

View file

@ -12,17 +12,14 @@ use OCP\IConfig;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class CleanPreviewsTest extends TestCase {
/** @var IJobList|\PHPUnit_Framework_MockObject_MockObject */
private $jobList;
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
private $userManager;
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
private $config;
private IJobList&MockObject $jobList;
private IUserManager&MockObject $userManager;
private IConfig&MockObject $config;
/** @var CleanPreviews */
private $repair;
@ -55,23 +52,17 @@ class CleanPreviewsTest extends TestCase {
$this->userManager->expects($this->once())
->method('callForSeenUsers')
->will($this->returnCallback(function (\Closure $function) use ($user1, $user2) {
->will($this->returnCallback(function (\Closure $function) use (&$user1, $user2) {
$function($user1);
$function($user2);
}));
$jobListCalls = [];
$this->jobList->expects($this->exactly(2))
->method('add')
->withConsecutive(
[
$this->equalTo(CleanPreviewsBackgroundJob::class),
$this->equalTo(['uid' => 'user1'])
],
[
$this->equalTo(CleanPreviewsBackgroundJob::class),
$this->equalTo(['uid' => 'user2'])
],
);
->willReturnCallback(function () use (&$jobListCalls) {
$jobListCalls[] = func_get_args();
});
$this->config->expects($this->once())
->method('getAppValue')
@ -89,10 +80,14 @@ class CleanPreviewsTest extends TestCase {
);
$this->repair->run($this->createMock(IOutput::class));
$this->assertEqualsCanonicalizing([
[CleanPreviewsBackgroundJob::class, ['uid' => 'user1']],
[CleanPreviewsBackgroundJob::class, ['uid' => 'user2']],
], $jobListCalls);
}
public function testRunAlreadyDoone(): void {
public function testRunAlreadyDone(): void {
$this->userManager->expects($this->never())
->method($this->anything());

View file

@ -9,7 +9,9 @@ namespace Test\Repair\Owncloud;
use OC\Repair\Owncloud\UpdateLanguageCodes;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
/**
@ -20,16 +22,14 @@ use Test\TestCase;
* @package Test\Repair
*/
class UpdateLanguageCodesTest extends TestCase {
/** @var \OCP\IDBConnection */
protected $connection;
/** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
private $config;
protected IDBConnection $connection;
private IConfig&MockObject $config;
protected function setUp(): void {
parent::setUp();
$this->connection = \OC::$server->getDatabaseConnection();
$this->connection = \OCP\Server::get(IDBConnection::class);
$this->config = $this->createMock(IConfig::class);
}
@ -60,7 +60,7 @@ class UpdateLanguageCodesTest extends TestCase {
'appid' => 'core',
'configkey' => 'lang',
'configvalue' => $user['configvalue'],
])->execute();
])->executeStatement();
}
// check if test data is written to DB
@ -70,26 +70,30 @@ class UpdateLanguageCodesTest extends TestCase {
->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
->orderBy('userid')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$result->closeCursor();
$this->assertSame($users, $rows, 'Asserts that the entries are the ones from the test data set');
/** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
$expectedOutput = [
['Changed 1 setting(s) from "bg_BG" to "bg" in preferences table.'],
['Changed 0 setting(s) from "cs_CZ" to "cs" in preferences table.'],
['Changed 1 setting(s) from "fi_FI" to "fi" in preferences table.'],
['Changed 0 setting(s) from "hu_HU" to "hu" in preferences table.'],
['Changed 0 setting(s) from "nb_NO" to "nb" in preferences table.'],
['Changed 0 setting(s) from "sk_SK" to "sk" in preferences table.'],
['Changed 2 setting(s) from "th_TH" to "th" in preferences table.'],
];
$outputMessages = [];
/** @var IOutput&MockObject $outputMock */
$outputMock = $this->createMock(IOutput::class);
$outputMock->expects($this->exactly(7))
->method('info')
->withConsecutive(
['Changed 1 setting(s) from "bg_BG" to "bg" in preferences table.'],
['Changed 0 setting(s) from "cs_CZ" to "cs" in preferences table.'],
['Changed 1 setting(s) from "fi_FI" to "fi" in preferences table.'],
['Changed 0 setting(s) from "hu_HU" to "hu" in preferences table.'],
['Changed 0 setting(s) from "nb_NO" to "nb" in preferences table.'],
['Changed 0 setting(s) from "sk_SK" to "sk" in preferences table.'],
['Changed 2 setting(s) from "th_TH" to "th" in preferences table.'],
);
->willReturnCallback(function () use (&$outputMessages) {
$outputMessages[] = func_get_args();
});
$this->config->expects($this->once())
->method('getSystemValueString')
@ -107,7 +111,7 @@ class UpdateLanguageCodesTest extends TestCase {
->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
->orderBy('userid')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$result->closeCursor();
@ -127,12 +131,13 @@ class UpdateLanguageCodesTest extends TestCase {
->andWhere($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($user['configvalue']), IQueryBuilder::PARAM_STR))
->execute();
->executeStatement();
}
self::assertEquals($expectedOutput, $outputMessages);
}
public function testSecondRun(): void {
/** @var IOutput|\PHPUnit_Framework_MockObject_MockObject $outputMock */
/** @var IOutput&MockObject $outputMock */
$outputMock = $this->createMock(IOutput::class);
$outputMock->expects($this->never())
->method('info');

View file

@ -7,9 +7,12 @@
namespace Test\Repair;
use OC\DB\ConnectionAdapter;
use OC\Repair\Collation;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@ -31,39 +34,25 @@ class TestCollationRepair extends Collation {
* @see \OC\Repair\RepairMimeTypes
*/
class RepairCollationTest extends TestCase {
/**
* @var TestCollationRepair
*/
private $repair;
/**
* @var IDBConnection
*/
private $connection;
private TestCollationRepair $repair;
private ConnectionAdapter $connection;
private string $tableName;
private IConfig $config;
/**
* @var string
*/
private $tableName;
/**
* @var \OCP\IConfig
*/
private $config;
/** @var LoggerInterface */
private $logger;
private LoggerInterface&MockObject $logger;
protected function setUp(): void {
parent::setUp();
$this->connection = \OC::$server->get(IDBConnection::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->config = \OC::$server->getConfig();
$this->connection = \OCP\Server::get(ConnectionAdapter::class);
$this->config = \OCP\Server::get(IConfig::class);
if ($this->connection->getDatabaseProvider() !== IDBConnection::PLATFORM_MYSQL) {
$this->markTestSkipped('Test only relevant on MySql');
}
$this->logger = $this->createMock(LoggerInterface::class);
$dbPrefix = $this->config->getSystemValueString('dbtableprefix');
$this->tableName = $this->getUniqueID($dbPrefix . '_collation_test');
$this->connection->prepare("CREATE TABLE $this->tableName(text VARCHAR(16)) COLLATE utf8_unicode_ci")->execute();
@ -80,8 +69,7 @@ class RepairCollationTest extends TestCase {
$tables = $this->repair->getAllNonUTF8BinTables($this->connection);
$this->assertGreaterThanOrEqual(1, count($tables));
/** @var IOutput | \PHPUnit\Framework\MockObject\MockObject $outputMock */
$outputMock = $this->getMockBuilder('\OCP\Migration\IOutput')
$outputMock = $this->getMockBuilder(IOutput::class)
->disableOriginalConstructor()
->getMock();

View file

@ -16,23 +16,19 @@ use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\Migration\IOutput;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
use function in_array;
class RepairDavSharesTest extends TestCase {
/** @var IOutput|\PHPUnit\Framework\MockObject\MockObject */
protected $output;
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
protected $config;
/** @var IDBConnection|\PHPUnit\Framework\MockObject\MockObject */
protected $dbc;
/** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */
protected $groupManager;
/** @var \PHPUnit\Framework\MockObject\MockObject|LoggerInterface */
protected $logger;
/** @var RepairDavSharesTest */
protected $repair;
private IOutput&MockObject $output;
private IConfig&MockObject $config;
private IDBConnection&MockObject $dbc;
private LoggerInterface&MockObject $logger;
private IGroupManager&MockObject $groupManager;
private RepairDavShares $repair;
public function setUp(): void {
parent::setUp();
@ -138,6 +134,7 @@ class RepairDavSharesTest extends TestCase {
->method('execute')
->willReturn($shareResults);
$updateCalls = [];
$updateMock = $this->createMock(IQueryBuilder::class);
$updateMock->expects($this->any())
->method('expr')
@ -153,13 +150,10 @@ class RepairDavSharesTest extends TestCase {
->willReturnSelf();
$updateMock->expects($this->exactly(4))
->method('setParameter')
->withConsecutive(
['updatedPrincipalUri', 'principals/groups/' . urlencode('family friends')],
['shareId', 7],
['updatedPrincipalUri', 'principals/groups/' . urlencode('Wants Repair')],
['shareId', 1],
)
->willReturnSelf();
->willReturnCallback(function () use (&$updateCalls, &$updateMock) {
$updateCalls[] = func_get_args();
return $updateMock;
});
$updateMock->expects($this->exactly(2))
->method('execute');
@ -174,5 +168,11 @@ class RepairDavSharesTest extends TestCase {
});
$this->repair->run($this->output);
self::assertEquals([
['updatedPrincipalUri', 'principals/groups/' . urlencode('family friends'), null],
['shareId', 7, null],
['updatedPrincipalUri', 'principals/groups/' . urlencode('Wants Repair'), null],
['shareId', 1, null]
], $updateCalls);
}
}

View file

@ -9,8 +9,8 @@ namespace Test\Repair;
use OC\Repair\RepairInvalidShares;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use OCP\Share\IShare;
use Test\TestCase;
@ -22,11 +22,9 @@ use Test\TestCase;
* @see \OC\Repair\RepairInvalidShares
*/
class RepairInvalidSharesTest extends TestCase {
/** @var IRepairStep */
private $repair;
/** @var \OCP\IDBConnection */
private $connection;
private RepairInvalidShares $repair;
private IDBConnection $connection;
protected function setUp(): void {
parent::setUp();
@ -39,10 +37,9 @@ class RepairInvalidSharesTest extends TestCase {
->with('version')
->willReturn('12.0.0.0');
$this->connection = \OC::$server->getDatabaseConnection();
$this->connection = \OCP\Server::get(IDBConnection::class);
$this->deleteAllShares();
/** @var \OCP\IConfig $config */
$this->repair = new RepairInvalidShares($config, $this->connection);
}
@ -54,7 +51,7 @@ class RepairInvalidSharesTest extends TestCase {
protected function deleteAllShares() {
$qb = $this->connection->getQueryBuilder();
$qb->delete('share')->execute();
$qb->delete('share')->executeStatement();
}
/**
@ -80,30 +77,30 @@ class RepairInvalidSharesTest extends TestCase {
$qb = $this->connection->getQueryBuilder();
$qb->insert('share')
->values($shareValues)
->execute();
$parent = $this->getLastShareId();
->executeStatement();
$parent = $qb->getLastInsertId();
// share with existing parent
$qb = $this->connection->getQueryBuilder();
$qb->insert('share')
->values(array_merge($shareValues, [
'parent' => $qb->expr()->literal($parent),
]))->execute();
$validChild = $this->getLastShareId();
]))->executeStatement();
$validChild = $qb->getLastInsertId();
// share with non-existing parent
$qb = $this->connection->getQueryBuilder();
$qb->insert('share')
->values(array_merge($shareValues, [
'parent' => $qb->expr()->literal($parent + 100),
]))->execute();
$invalidChild = $this->getLastShareId();
]))->executeStatement();
$invalidChild = $qb->getLastInsertId();
$query = $this->connection->getQueryBuilder();
$result = $query->select('id')
->from('share')
->orderBy('id', 'ASC')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$this->assertEquals([['id' => $parent], ['id' => $validChild], ['id' => $invalidChild]], $rows);
$result->closeCursor();
@ -119,7 +116,7 @@ class RepairInvalidSharesTest extends TestCase {
$result = $query->select('id')
->from('share')
->orderBy('id', 'ASC')
->execute();
->executeQuery();
$rows = $result->fetchAll();
$this->assertEquals([['id' => $parent], ['id' => $validChild]], $rows);
$result->closeCursor();
@ -167,9 +164,7 @@ class RepairInvalidSharesTest extends TestCase {
'permissions' => $qb->expr()->literal($testPerms),
'stime' => $qb->expr()->literal(time()),
])
->execute();
$shareId = $this->getLastShareId();
->executeStatement();
/** @var IOutput | \PHPUnit\Framework\MockObject\MockObject $outputMock */
$outputMock = $this->getMockBuilder('\OCP\Migration\IOutput')
@ -182,7 +177,7 @@ class RepairInvalidSharesTest extends TestCase {
->select('*')
->from('share')
->orderBy('permissions', 'ASC')
->execute()
->executeQuery()
->fetchAll();
$this->assertCount(1, $results);
@ -191,11 +186,4 @@ class RepairInvalidSharesTest extends TestCase {
$this->assertEquals($expectedPerms, $updatedShare['permissions']);
}
/**
* @return int
*/
protected function getLastShareId() {
return $this->connection->lastInsertId('*PREFIX*share');
}
}

View file

@ -14,7 +14,6 @@ use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
/**
* Tests for the converting of legacy storages to home storages.
@ -24,21 +23,18 @@ use OCP\Migration\IRepairStep;
* @see \OC\Repair\RepairMimeTypes
*/
class RepairMimeTypesTest extends \Test\TestCase {
/** @var IRepairStep */
private $repair;
/** @var Temporary */
private $storage;
/** @var IMimeTypeLoader */
private $mimetypeLoader;
private RepairMimeTypes $repair;
private Temporary $storage;
private IMimeTypeLoader $mimetypeLoader;
private IDBConnection $db;
protected function setUp(): void {
parent::setUp();
$this->mimetypeLoader = \OC::$server->getMimeTypeLoader();
$this->mimetypeLoader = \OCP\Server::get(IMimeTypeLoader::class);
$this->db = \OCP\Server::get(IDBConnection::class);
/** @var IConfig | \PHPUnit\Framework\MockObject\MockObject $config */
$config = $this->getMockBuilder(IConfig::class)
->disableOriginalConstructor()
->getMock();
@ -66,10 +62,10 @@ class RepairMimeTypesTest extends \Test\TestCase {
protected function tearDown(): void {
$this->storage->getCache()->clear();
$qb = \OC::$server->getDatabaseConnection()->getQueryBuilder();
$qb = $this->db->getQueryBuilder();
$qb->delete('storages')
->where($qb->expr()->eq('id', $qb->createNamedParameter($this->storage->getId())));
$qb->execute();
$qb->executeStatement();
$this->clearMimeTypes();
@ -77,9 +73,9 @@ class RepairMimeTypesTest extends \Test\TestCase {
}
private function clearMimeTypes() {
$qb = \OC::$server->getDatabaseConnection()->getQueryBuilder();
$qb = $this->db->getQueryBuilder();
$qb->delete('mimetypes');
$qb->execute();
$qb->executeStatement();
$this->mimetypeLoader->reset();
}

View file

@ -16,7 +16,6 @@
<testsuite name="Nextcloud Server">
<directory suffix=".php">lib/</directory>
<directory suffix=".php">Core/</directory>
<directory suffix=".php">Test/</directory>
<file>apps.php</file>
</testsuite>
<coverage>