/** * @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()); }
/** * {@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; }