/**
  * @covers MicrosoftAzure\Storage\Blob\Models\ListBlobsOptions::getPrefix
  */
 public function testGetPrefix()
 {
     // Setup
     $options = new ListBlobsOptions();
     $expected = 'myprefix';
     $options->setPrefix($expected);
     // Test
     $actual = $options->getPrefix();
     // Assert
     $this->assertEquals($expected, $actual);
 }
 /**
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::copyBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::createBlobSnapshot
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::createPageBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::deleteBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::getBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::listBlobs
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::setBlobMetadata
  */
 private function copyBlobWorker($options, $sourceContainer, $destContainer)
 {
     $sourceBlob = BlobServiceFunctionalTestData::getInterestingBlobName($sourceContainer);
     $destBlob = BlobServiceFunctionalTestData::getInterestingBlobName($destContainer);
     // Make sure there is something to test
     $sourceDataSize = 512;
     $this->restProxy->createPageBlob($sourceContainer, $sourceBlob, $sourceDataSize);
     $destDataSize = 2048;
     $destBlobInfo = $this->restProxy->createPageBlob($destContainer, $destBlob, $destDataSize);
     $this->restProxy->createBlobSnapshot($destContainer, $destBlob);
     $metadata = BlobServiceFunctionalTestData::getNiceMetadata();
     $this->restProxy->setBlobMetadata($sourceContainer, $sourceBlob, $metadata);
     $snapshot = $this->restProxy->createBlobSnapshot($sourceContainer, $sourceBlob);
     if (!is_null($options)) {
         BlobServiceFunctionalTestData::fixETagAccessCondition($options->getSourceAccessCondition(), $snapshot->getETag());
         BlobServiceFunctionalTestData::fixETagAccessCondition($options->getAccessCondition(), $destBlobInfo->getETag());
         $options->setSourceSnapshot(is_null($options->getSourceSnapshot()) ? null : $snapshot->getSnapshot());
     }
     try {
         if (is_null($options)) {
             $this->restProxy->copyBlob($destContainer, $destBlob, $sourceContainer, $sourceBlob);
         } else {
             $this->restProxy->copyBlob($destContainer, $destBlob, $sourceContainer, $sourceBlob, $options);
         }
         if (is_null($options)) {
             $options = new CopyBlobOptions();
         }
         if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
             $this->assertTrue(false, 'Expect negative timeouts in $options to throw');
         }
         if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getSourceAccessCondition())) {
             $this->assertTrue(false, 'Expect failing source temporal access condition should throw');
         }
         if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getSourceAccessCondition())) {
             $this->assertTrue(false, 'Expect failing source etag access condition to throw');
         }
         if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getAccessCondition())) {
             $this->assertTrue(false, 'Expect failing dest temporal access condition should throw');
         }
         if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getAccessCondition())) {
             $this->assertTrue(false, 'Expect failing dest etag access condition to throw');
         }
         $listOptions = new ListBlobsOptions();
         $listOptions->setIncludeSnapshots(true);
         $listOptions->setPrefix($destBlob);
         $listBlobsResult = $this->restProxy->listBlobs($destContainer == '' ? '$root' : $destContainer, $listOptions);
         $blobs = $listBlobsResult->getBlobs();
         $getBlobResult = $this->restProxy->getBlob($destContainer, $destBlob);
         $this->verifyCopyBlobWorker($options, $blobs, $getBlobResult, $sourceDataSize, $metadata);
     } catch (ServiceException $e) {
         if (is_null($options)) {
             $options = new CopyBlobOptions();
         }
         if (!is_null($options->getTimeout()) && $options->getTimeout() < 1) {
             $this->assertEquals(500, $e->getCode(), 'bad timeout: deleteHttpStatusCode');
         } else {
             if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getSourceAccessCondition())) {
                 $this->assertEquals(412, $e->getCode(), 'bad source temporal access condition IF_UNMODIFIED_SINCE: deleteHttpStatusCode');
             } else {
                 if (!BlobServiceFunctionalTestData::passETagAccessCondition($options->getSourceAccessCondition())) {
                     $this->assertEquals(412, $e->getCode(), 'bad source etag access condition: deleteHttpStatusCode');
                 } else {
                     if (!BlobServiceFunctionalTestData::passTemporalAccessCondition($options->getAccessCondition())) {
                         $this->assertEquals(412, $e->getCode(), 'bad dest temporal access condition IF_UNMODIFIED_SINCE: deleteHttpStatusCode');
                     } else {
                         if (!BlobServiceFunctionalTestData::passETagAccessCondition($options->getAccessCondition())) {
                             $this->assertEquals(412, $e->getCode(), 'bad dest etag access condition: deleteHttpStatusCode');
                         } else {
                             throw $e;
                         }
                     }
                 }
             }
         }
     }
     // Clean up.
     $this->restProxy->deleteBlob($sourceContainer, $sourceBlob);
     $this->restProxy->deleteBlob($destContainer, $destBlob);
 }
 public static function getInterestingListBlobsOptions()
 {
     $ret = array();
     $options = new ListBlobsOptions();
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setMaxResults(2);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setTimeout(10);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setTimeout(-10);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setPrefix(self::$nonExistBlobPrefix);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setPrefix(self::$testUniqueId);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     // Cannot set Marker to arbitrary values. Must only use if the previous request returns a NextMarker.
     //            $options->setMarker('abc');
     // So, add logic in listBlobsWorker to loop and setMarker if there is a NextMarker.
     $options->setMaxResults(2);
     $options->setPrefix(self::$testUniqueId);
     $options->setTimeout(10);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setMaxResults(3);
     $options->setPrefix(self::$testUniqueId);
     $options->setTimeout(10);
     array_push($ret, $options);
     $options = new ListBlobsOptions();
     $options->setMaxResults(4);
     $options->setPrefix(self::$testUniqueId);
     $options->setTimeout(10);
     array_push($ret, $options);
     return $ret;
 }
 /**
  * @param string $sourceFolderIdentifier
  * @return array
  */
 protected function getBlobsFromFolder($sourceFolderIdentifier)
 {
     $blobs = [];
     $options = new ListBlobsOptions();
     $options->setPrefix($sourceFolderIdentifier);
     $blobListResult = $this->blobRestProxy->listBlobs($this->container, $options);
     if (is_object($blobListResult)) {
         $blobs = $blobListResult->getBlobs();
     }
     return $blobs;
 }
 /**
  * @return void
  */
 public function testGetFolderInFoldersSetsFolderPrefixToGivenFolder()
 {
     $this->folderInFolderMethodStubs();
     $this->storageDriver->getFoldersInFolder('foo');
     $options = new ListBlobsOptions();
     $options->setPrefix('foo/');
     $this->blobRestProxy->listBlobs(Arg::any(), $options)->shouldHaveBeenCalled();
 }
 /**
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::createPageBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::deleteBlob
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::listBlobs
  */
 public function testListBlobsWithPrefixWorks()
 {
     // Arrange
     $blobNames = array('myblob1', 'myblob2', 'otherblob1', 'otherblob2');
     foreach ($blobNames as $blob) {
         $this->restProxy->createPageBlob(self::$_test_container_for_listing, $blob, 512);
     }
     // Act
     $opts = new ListBlobsOptions();
     $opts->setPrefix('myblob');
     $results = $this->restProxy->listBlobs(self::$_test_container_for_listing, $opts);
     $opts = new ListBlobsOptions();
     $opts->setPrefix('o');
     $results2 = $this->restProxy->listBlobs(self::$_test_container_for_listing, $opts);
     foreach ($blobNames as $blob) {
         $this->restProxy->deleteBlob(self::$_test_container_for_listing, $blob);
     }
     // Assert
     $this->assertNotNull($results, '$results');
     $this->assertEquals(2, count($results->getBlobs()), 'count($results->getBlobs())');
     $blobs = $results->getBlobs();
     $this->assertEquals('myblob1', $blobs[0]->getName(), '$blobs[0]->getName()');
     $this->assertEquals('myblob2', $blobs[1]->getName(), '$blobs[1]->getName()');
     $this->assertNotNull($results2, '$results2');
     $this->assertEquals(2, count($results2->getBlobs()), 'count($results2->getBlobs())');
     $blobs = $results2->getBlobs();
     $this->assertEquals('otherblob1', $blobs[0]->getName(), '$blobs[0]->getName()');
     $this->assertEquals('otherblob2', $blobs[1]->getName(), '$blobs[1]->getName()');
 }
 /**
  * @covers MicrosoftAzure\Storage\Blob\BlobRestProxy::listBlobs
  */
 public function testListBlobsWithOptions()
 {
     // Setup
     $name = 'listblobswithoptions' . $this->createSuffix();
     $blob1 = 'blob1';
     $blob2 = 'blob2';
     $blob3 = 'blob3';
     $blob4 = 'lblob1';
     $blob5 = 'lblob2';
     $blob6 = 'lblob3';
     $length = 512;
     $options = new ListBlobsOptions();
     $options->setIncludeMetadata(true);
     $options->setIncludeSnapshots(true);
     $options->setIncludeUncommittedBlobs(true);
     $options->setMaxResults(10);
     $options->setPrefix('lb');
     $this->createContainer($name);
     $this->restProxy->createPageBlob($name, $blob1, $length);
     $this->restProxy->createPageBlob($name, $blob2, $length);
     $this->restProxy->createPageBlob($name, $blob3, $length);
     $this->restProxy->createPageBlob($name, $blob4, $length);
     $this->restProxy->createPageBlob($name, $blob5, $length);
     $this->restProxy->createPageBlob($name, $blob6, $length);
     // Test
     $result = $this->restProxy->listBlobs($name, $options);
     // Assert
     $this->assertCount(3, $result->getBlobs());
     $this->assertCount(0, $result->getBlobPrefixes());
 }
Example #8
0
 /**
  * {@inheritdoc}
  */
 public function exists($key)
 {
     $this->init();
     $listBlobsOptions = new ListBlobsOptions();
     $listBlobsOptions->setPrefix($key);
     try {
         $blobsList = $this->blobProxy->listBlobs($this->containerName, $listBlobsOptions);
         foreach ($blobsList->getBlobs() as $blob) {
             if ($key === $blob->getName()) {
                 return true;
             }
         }
     } catch (ServiceException $e) {
         $this->failIfContainerNotFound($e, 'check if key exists');
         $errorCode = $this->getErrorCodeFromServiceException($e);
         throw new \RuntimeException(sprintf('Failed to check if key "%s" exists in container "%s": %s (%s).', $key, $this->containerName, $e->getErrorText(), $errorCode), $e->getCode());
     }
     return false;
 }