/** * test clipUri() * * @return void */ public function testClipUri() { $directoryResource = new Directory($this->getMockedClient(new Response(200, ['Content-Type' => 'application/json'], ''))); $uris = ['/' => '', '' => '', 'https://example.com' => 'https://example.com', 'https://example.com/' => 'https://example.com']; foreach ($uris as $uri => $clippedUri) { $this->assertSame($clippedUri, $directoryResource->clipUri($uri)); } }
/** * getAll() with directory path * * @return void */ public function testGetAllWithDir() { $dir = '/' . uniqid('test_', true); $response = new Response(200, ['Content-Type' => 'application/json'], file_get_contents(__DIR__ . '/../../assets/DirectoryTest_getAll.json')); $mockedClient = $this->getMockBuilder('\\Seafile\\Http\\Client')->getMock(); $mockedClient->method('getConfig')->willReturn('http://example.com/'); $mockedClient->expects($this->once())->method('request')->with($this->equalTo('GET'), $this->equalTo('http://example.com/repos/some-crazy-id/dir/'), $this->equalTo(['query' => ['p' => $dir]]))->willReturn($response); /** * @var Client $mockedClient */ $directoryResource = new Directory($mockedClient); $lib = new \Seafile\Type\Library(); $lib->id = 'some-crazy-id'; $directoryResource->getAll($lib, $dir); }
* "testLibId": "ID of an encrypted library", * "testLibPassword": "******" * } */ $cfgFile = getenv("HOME") . "/.seafile-php-sdk/cfg.json"; if (!is_readable($tokenFile)) { throw new Exception($tokenFile . ' is not readable or does not exist.'); } if (!is_readable($cfgFile)) { throw new Exception($cfgFile . ' is not readable or does not exist.'); } $token = json_decode(file_get_contents($tokenFile)); $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); // get all libraries available $logger->log(Logger::INFO, "#################### Getting all libraries"); $libs = $libraryResource->getAll(); foreach ($libs as $lib) { printf("Name: %s, ID: %s, is encrypted: %s\n", $lib->name, $lib->id, $lib->encrypted ? 'YES' : 'NO'); } $libId = $cfg->testLibId; // get specific library $logger->log(Logger::INFO, "#################### Getting lib with ID " . $libId); $lib = $libraryResource->getById($libId); $lib->password = $cfg->testLibPassword; // library is encrypted and thus we provide a password if ($lib->encrypted) { $success = $libraryResource->decrypt($libId, ['query' => ['password' => $cfg->testLibPassword]]);
/** * Test remove() * * @return void */ public function testRemove() { $getAllResponse = new Response(200, ['Content-Type' => 'application/json'], file_get_contents(__DIR__ . '/../../assets/DirectoryTest_getAll.json')); $mkdirResponse = new Response(200, ['Content-Type' => 'text/plain']); $mockedClient = $this->getMockBuilder('\\Seafile\\Http\\Client')->getMock(); $mockedClient->method('getConfig')->willReturn('http://example.com/'); $expectUri = 'http://example.com/repos/some-crazy-id/dir/?p=test_dir'; $expectParams = ['headers' => ['Accept' => "application/json"]]; // @todo: Test more thoroughly. For example make sure request() gets called with POST twice (a, then b) $mockedClient->expects($this->any())->method('request')->with($this->logicalOr($this->equalTo('GET'), $this->equalTo('DELETE')))->will($this->returnCallback(function ($method, $uri, $params) use($getAllResponse, $mkdirResponse, $expectUri, $expectParams) { if ($method === 'GET') { return $getAllResponse; } if ($expectUri === $uri && $expectParams === $params) { return $mkdirResponse; } return new Response(500); })); /** * @var Client $mockedClient */ $directoryResource = new Directory($mockedClient); $lib = new \Seafile\Type\Library(); $lib->id = 'some-crazy-id'; $this->assertTrue($directoryResource->remove($lib, 'test_dir')); }