/**
  * {@inheritdoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     $response = $this->client->listChildren($directory);
     $responseContent = json_decode((string) $response->getBody());
     $items = $responseContent->value;
     $result = [];
     foreach ($items as $item) {
         $isFile = property_exists($item, 'file');
         $type = $isFile ? FlysystemMetadata::TYPE_FILE : FlysystemMetadata::TYPE_DIRECTORY;
         $path = $directory . '/' . $item->name;
         $flysystemMetadata = new FlysystemMetadata($type, $path);
         $this->updateFlysystemMetadataFromResponseContent($flysystemMetadata, $item);
         $result[] = $flysystemMetadata->toArray();
         if ($recursive && !$isFile) {
             $result = array_merge($result, $this->listContents($path, true));
         }
     }
     return $result;
 }
 public function testListChildren()
 {
     $client = $this->getMockBuilder('\\GuzzleHttp\\Client')->getMock();
     $accessToken = '123456789';
     $assertRequest = function ($request) use($accessToken) {
         return $request instanceof Request && $request->getMethod() == 'GET' && $request->getUri()->getHost() == 'api.onedrive.com' && $request->getUri()->getPath() == '/v1.0/drive/root:/documents/pictures:/children' && $request->getHeader('authorization') == ['bearer ' . $accessToken];
     };
     $response = new Response(200, [], 'test response');
     $client->expects($this->once())->method('send')->with($this->callback($assertRequest))->willReturn($response);
     $oneDriveClient = new OneDriveClient($accessToken, $client);
     $result = $oneDriveClient->listChildren('documents/pictures');
     $this->assertEquals($response, $result);
 }