From d6c838e9e0bf440467ee36337f48538566eaba90 Mon Sep 17 00:00:00 2001 From: JinmingHu Date: Thu, 7 Jan 2021 21:26:12 +0800 Subject: [PATCH] rename delete blob snapshot options, add delete blob snapshot test cases (#1272) * rename delete blob snapshot options, add delete blob snapshot test cases * changelog * Apply suggestions from code review * Update sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp * Update sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp --- sdk/storage/azure-storage-blobs/CHANGELOG.md | 1 + .../blobs/protocol/blob_rest_client.hpp | 2 +- .../src/blob_rest_client.cpp | 2 +- .../test/block_blob_client_test.cpp | 20 +++++++++++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/sdk/storage/azure-storage-blobs/CHANGELOG.md b/sdk/storage/azure-storage-blobs/CHANGELOG.md index 6583bdd6e..c92f9100e 100644 --- a/sdk/storage/azure-storage-blobs/CHANGELOG.md +++ b/sdk/storage/azure-storage-blobs/CHANGELOG.md @@ -62,6 +62,7 @@ - Replace `std::pair` with `Azure::Core::Http::Range` to denote blob ranges. - Move version strings into `Details` namespace. - Replace scoped enums that don't support bitwise operations with extensible enum. +- Rename `Models::DeleteSnapshotsOption::Only` to `Models::DeleteSnapshotsOption::OnlySnapshots`. - Rename `SourceConditions` in API options to `SourceAccessConditions`. ## 12.0.0-beta.5 (2020-11-13) diff --git a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp index 2ba78b5f4..87cc58509 100644 --- a/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp +++ b/sdk/storage/azure-storage-blobs/inc/azure/storage/blobs/protocol/blob_rest_client.hpp @@ -349,7 +349,7 @@ namespace Azure { namespace Storage { namespace Blobs { bool operator!=(const DeleteSnapshotsOption& other) const { return !(*this == other); } const std::string& Get() const { return m_value; } const static DeleteSnapshotsOption IncludeSnapshots; - const static DeleteSnapshotsOption Only; + const static DeleteSnapshotsOption OnlySnapshots; private: std::string m_value; diff --git a/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp b/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp index 335584cf6..2e3dc9631 100644 --- a/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp +++ b/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp @@ -61,7 +61,7 @@ namespace Azure { namespace Storage { namespace Blobs { namespace Models { const CopyStatus CopyStatus::Pending("pending"); const DeleteSnapshotsOption DeleteSnapshotsOption::IncludeSnapshots("include"); - const DeleteSnapshotsOption DeleteSnapshotsOption::Only("only"); + const DeleteSnapshotsOption DeleteSnapshotsOption::OnlySnapshots("only"); const EncryptionAlgorithmType EncryptionAlgorithmType::Aes256("AES256"); diff --git a/sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp b/sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp index 7bd28586b..ccbd10552 100644 --- a/sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp +++ b/sdk/storage/azure-storage-blobs/test/block_blob_client_test.cpp @@ -802,4 +802,24 @@ namespace Azure { namespace Storage { namespace Test { } } + TEST_F(BlockBlobClientTest, DeleteSnapshots) + { + std::vector emptyContent; + auto blobClient = Azure::Storage::Blobs::BlockBlobClient::CreateFromConnectionString( + StandardStorageConnectionString(), m_containerName, RandomString()); + blobClient.UploadFrom(emptyContent.data(), emptyContent.size()); + auto s1 = blobClient.CreateSnapshot()->Snapshot; + Blobs::DeleteBlobOptions deleteOptions; + EXPECT_THROW(blobClient.Delete(deleteOptions), StorageException); + deleteOptions.DeleteSnapshots = Blobs::Models::DeleteSnapshotsOption::OnlySnapshots; + EXPECT_NO_THROW(blobClient.Delete(deleteOptions)); + EXPECT_NO_THROW(blobClient.GetProperties()); + EXPECT_THROW(blobClient.WithSnapshot(s1).GetProperties(), StorageException); + auto s2 = blobClient.CreateSnapshot()->Snapshot; + deleteOptions.DeleteSnapshots = Blobs::Models::DeleteSnapshotsOption::IncludeSnapshots; + EXPECT_NO_THROW(blobClient.Delete(deleteOptions)); + EXPECT_THROW(blobClient.GetProperties(), StorageException); + EXPECT_THROW(blobClient.WithSnapshot(s2).GetProperties(), StorageException); + } + }}} // namespace Azure::Storage::Test