createMock(Expiration::class); $expiration->method('getMaxAgeAsTimestamp') ->willReturnCallback(function () { return $this->expireTimestamp; }); $this->overwriteService(Expiration::class, $expiration); \OC::$server->boot(); $this->createUser('version_test', ''); $this->loginAsUser('version_test'); /** @var IRootFolder $root */ $root = \OC::$server->get(IRootFolder::class); $this->userFolder = $root->getUserFolder('version_test'); } protected function createPastFile(string $path, int $mtime) { try { $file = $this->userFolder->get($path); } catch (NotFoundException $e) { $file = $this->userFolder->newFile($path); } $file->putContent((string)$mtime); $file->touch($mtime); } public function testExpireMaxAge(): void { $this->userFolder->newFolder('folder1'); $this->userFolder->newFolder('folder1/sub1'); $this->userFolder->newFolder('folder2'); $this->createPastFile('file1', 100); $this->createPastFile('file1', 500); $this->createPastFile('file1', 900); $this->createPastFile('folder1/file2', 100); $this->createPastFile('folder1/file2', 200); $this->createPastFile('folder1/file2', 300); $this->createPastFile('folder1/sub1/file3', 400); $this->createPastFile('folder1/sub1/file3', 500); $this->createPastFile('folder1/sub1/file3', 600); $this->createPastFile('folder2/file4', 100); $this->createPastFile('folder2/file4', 600); $this->createPastFile('folder2/file4', 800); $this->assertCount(2, Storage::getVersions('version_test', 'file1')); $this->assertCount(2, Storage::getVersions('version_test', 'folder1/file2')); $this->assertCount(2, Storage::getVersions('version_test', 'folder1/sub1/file3')); $this->assertCount(2, Storage::getVersions('version_test', 'folder2/file4')); $this->expireTimestamp = 150; Storage::expireOlderThanMaxForUser('version_test'); $this->assertCount(1, Storage::getVersions('version_test', 'file1')); $this->assertCount(1, Storage::getVersions('version_test', 'folder1/file2')); $this->assertCount(2, Storage::getVersions('version_test', 'folder1/sub1/file3')); $this->assertCount(1, Storage::getVersions('version_test', 'folder2/file4')); $this->expireTimestamp = 550; Storage::expireOlderThanMaxForUser('version_test'); $this->assertCount(0, Storage::getVersions('version_test', 'file1')); $this->assertCount(0, Storage::getVersions('version_test', 'folder1/file2')); $this->assertCount(0, Storage::getVersions('version_test', 'folder1/sub1/file3')); $this->assertCount(1, Storage::getVersions('version_test', 'folder2/file4')); } }