connection = \OC::$server->getDatabaseConnection(); $this->config = $this->createMock(IConfig::class); $this->migration = new SetPasswordColumn($this->connection, $this->config); $this->cleanDB(); } protected function tearDown(): void { parent::tearDown(); $this->cleanDB(); } private function cleanDB() { $query = $this->connection->getQueryBuilder(); $query->delete($this->table)->execute(); } public function testAddPasswordColumn(): void { $this->config->expects($this->once()) ->method('getAppValue') ->with('files_sharing', 'installed_version', '0.0.0') ->willReturn('1.3.0'); $shareTypes = [IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_REMOTE, IShare::TYPE_EMAIL, IShare::TYPE_LINK]; foreach ($shareTypes as $shareType) { for ($i = 0; $i < 5; $i++) { $query = $this->connection->getQueryBuilder(); $query->insert($this->table) ->values([ 'share_type' => $query->createNamedParameter($shareType), 'share_with' => $query->createNamedParameter('shareWith'), 'uid_owner' => $query->createNamedParameter('user' . $i), 'uid_initiator' => $query->createNamedParameter(null), 'parent' => $query->createNamedParameter(0), 'item_type' => $query->createNamedParameter('file'), 'item_source' => $query->createNamedParameter('2'), 'item_target' => $query->createNamedParameter('/2'), 'file_source' => $query->createNamedParameter(2), 'file_target' => $query->createNamedParameter('/foobar'), 'permissions' => $query->createNamedParameter(31), 'stime' => $query->createNamedParameter(time()), ]); $this->assertSame(1, $query->execute()); } } /** @var IOutput $output */ $output = $this->createMock(IOutput::class); $this->migration->run($output); $query = $this->connection->getQueryBuilder(); $query->select('*') ->from('share'); $result = $query->execute(); $allShares = $result->fetchAll(); $result->closeCursor(); foreach ($allShares as $share) { if ((int)$share['share_type'] === IShare::TYPE_LINK) { $this->assertNull($share['share_with']); $this->assertSame('shareWith', $share['password']); } else { $this->assertSame('shareWith', $share['share_with']); $this->assertNull($share['password']); } } } }