/** * Test rename() * * @return void */ public function testRename() { $getAllResponse = new Response(200, ['Content-Type' => 'application/json'], file_get_contents(__DIR__ . '/../../assets/FileTest_getAll.json')); $newFilename = 'test_file_renamed'; $renameResponse = new Response(200, ['Content-Type' => 'text/plain']); /** * @var Client|\PHPUnit_Framework_MockObject_MockObject $mockedClient */ $mockedClient = $this->getMockBuilder('\\Seafile\\Client\\Http\\Client')->getMock(); $mockedClient->method('getConfig')->willReturn('http://example.com/'); $expectUri = 'http://example.com/repos/some-crazy-id/file/?p=/test_file'; $expectParams = ['headers' => ['Accept' => "application/json"], 'multipart' => [['name' => 'operation', 'contents' => 'rename'], ['name' => 'newname', 'contents' => $newFilename]]]; // @todo: Test more thoroughly. For example make sure request() gets called with POST twice (a, then b) $mockedClient->expects(self::any())->method('request')->with(self::equalTo('POST'))->will(self::returnCallback(function ($method, $uri, $params) use($getAllResponse, $renameResponse, $expectUri, $expectParams) { if ($expectUri === $uri && $expectParams === $params) { return $renameResponse; } return new Response(500); })); $fileResource = new File($mockedClient); $lib = new Library(['id' => 'some-crazy-id']); $dirItem = new DirectoryItem(['name' => 'test_file']); self::assertTrue($fileResource->rename($lib, $dirItem, $newFilename)); }
$cfg = json_decode(file_get_contents($cfgFile)); $client = new Client(['base_uri' => $cfg->baseUri, 'debug' => true, 'handler' => $stack, 'headers' => ['Content-Type' => 'application/json', 'Authorization' => 'Token ' . $token->token]]); $libraryResource = new Library($client); $directoryResource = new Directory($client); $fileResource = new File($client); $libId = $cfg->testLibId; $lib = $libraryResource->getById($libId); if ($lib->encrypted === true && isset($cfg->testLibPassword)) { $success = $libraryResource->decrypt($libId, ['query' => ['password' => $cfg->testLibPassword]]); } $logger->log(Logger::INFO, "#################### GO!"); $path = null; $fileName = 'test.txt'; $newFilename = 'test_' . date('U') . '.txt'; $dirItem = $fileResource->getFileDetail($lib, $path . $fileName); $logger->log(Logger::INFO, "#################### File to be renamed: " . $path . $dirItem->name); $success = $fileResource->rename($lib, $dirItem, $newFilename); if ($success) { $logger->log(Logger::INFO, "#################### File renamed from " . $path . $fileName . ' to ' . $newFilename); } else { $logger->log(Logger::ERROR, "#################### Could not rename: " . $path . $fileName); } sleep(60); $newFilename = 'even_newer_file_name_test_' . date('U') . '.txt'; $success = $fileResource->rename($lib, $dirItem, $newFilename); if ($success) { $logger->log(Logger::INFO, "#################### File renamed from " . $dirItem->name . ' to ' . $newFilename); } else { $logger->log(Logger::ERROR, "#################### Could not rename: " . $dirItem->name); } print PHP_EOL . 'Done' . PHP_EOL;