diff --git a/aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp b/aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp index 86a0231dba03..5a5119316683 100644 --- a/aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp +++ b/aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include #include #include @@ -83,6 +85,7 @@ namespace //to get around this, this string is url encoded version of "TestUnicode中国Key". At test time, we'll convert it to the unicode string static const char* URLENCODED_UNICODE_KEY = "TestUnicode%E4%B8%AD%E5%9B%BDKey"; static const char* URIESCAPE_KEY = "Esc ape+Me$"; + static const char* TEST_BUCKET_TAG = "IntegrationTestResource"; static const int TIMEOUT_MAX = 20; @@ -228,6 +231,24 @@ namespace ASSERT_STREQ(ss.str().c_str(), outcome.GetResult().GetETag().c_str()); } + static void TagTestBucket(const Aws::String& bucketName, const std::shared_ptr& client) { + ASSERT_TRUE(!bucketName.empty()); + ASSERT_TRUE(client); + + PutBucketTaggingRequest taggingRequest; + taggingRequest.SetBucket(bucketName); + Tag tag; + tag.SetKey(TEST_BUCKET_TAG); + tag.SetValue(TEST_BUCKET_TAG); + Tagging tagging; + tagging.AddTagSet(tag); + taggingRequest.SetTagging(tagging); + + auto taggingOutcome = client->PutBucketTagging(taggingRequest); + + ASSERT_TRUE(taggingOutcome.IsSuccess()); + } + static bool WaitForBucketToPropagate(const Aws::String& bucketName, const std::shared_ptr& client = Client) { unsigned timeoutCount = 0; @@ -343,6 +364,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); EXPECT_TRUE(!createBucketResult.GetLocation().empty()); EXPECT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); return fullBucketName; } @@ -426,6 +448,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_FALSE(createBucketResult.GetLocation().empty()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); ListBucketsOutcome listBucketsOutcome = Client->ListBuckets(); ASSERT_TRUE(listBucketsOutcome.IsSuccess()); @@ -464,6 +487,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_FALSE(createBucketResult.GetLocation().empty()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName, oregonClient)); + TagTestBucket(fullBucketName, oregonClient); GetBucketLocationRequest locationRequest; locationRequest.SetBucket(fullBucketName); @@ -490,8 +514,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -516,8 +540,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -580,8 +604,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); // S3 CRT Client doesn't support this edge case right now. //test unicode @@ -743,6 +767,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); GetObjectRequest getObjectRequest; getObjectRequest.SetBucket(fullBucketName); @@ -760,6 +785,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -794,6 +820,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -821,8 +848,8 @@ namespace createBucketRequest.SetACL(BucketCannedACL::private_); CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); auto objectStream = Aws::MakeShared("BucketAndObjectOperationTest"); *objectStream << "Test Japanese & Chinese Unicode keys"; @@ -856,6 +883,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -934,6 +962,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1008,6 +1037,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1112,6 +1142,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); diff --git a/aws-cpp-sdk-s3-encryption-integration-tests/LiveClientTests.cpp b/aws-cpp-sdk-s3-encryption-integration-tests/LiveClientTests.cpp index 6f952b4ebb42..a32c1cc14669 100644 --- a/aws-cpp-sdk-s3-encryption-integration-tests/LiveClientTests.cpp +++ b/aws-cpp-sdk-s3-encryption-integration-tests/LiveClientTests.cpp @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -51,6 +53,8 @@ static const char RANGE_GET_TEST_STRING[] = "test AES CBC, AES CTR, and AES GCM static const char* OVERFLOW_RANGE_GET_STR = "bytes=38-1000000000"; static const char OVERFLOW_RANGE_GET_TEST_STRING[] = "test AES CBC, AES CTR, and AES GCM modes of operation with the Aws S3 Encryption Client"; +static const char* TEST_BUCKET_TAG = "IntegrationTestResource"; + class LiveClientTest : public ::testing::Test { public: @@ -74,6 +78,21 @@ class LiveClientTest : public ::testing::Test ASSERT_TRUE(createBucketOutcome.IsSuccess()); } + static void TagTestBucket(const Aws::String& bucketName) { + Aws::S3::Model::PutBucketTaggingRequest taggingRequest; + taggingRequest.SetBucket(bucketName); + Aws::S3::Model::Tag tag; + tag.SetKey(TEST_BUCKET_TAG); + tag.SetValue(TEST_BUCKET_TAG); + Aws::S3::Model::Tagging tagging; + tagging.AddTagSet(tag); + taggingRequest.SetTagging(tagging); + + auto taggingOutcome = StandardClient->PutBucketTagging(taggingRequest); + + ASSERT_TRUE(taggingOutcome.IsSuccess()); + } + static void TearDownTestCase() { Model::DeleteBucketRequest deleteBucketRequest; diff --git a/aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp b/aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp index 9f9edd81f294..0e6bebf6ffe7 100644 --- a/aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp +++ b/aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -100,6 +101,7 @@ namespace static const char* URLENCODED_UNICODE_KEY = "TestUnicode%E4%B8%AD%E5%9B%BDKey"; static const char* URIESCAPE_KEY = "Esc ape+Me$"; static const char* CUSTOM_ENDPOINT_OVERRIDE = "beta.example.com"; + static const char* TEST_BUCKET_TAG = "IntegrationTestResource"; static const int TIMEOUT_MAX = 20; @@ -279,6 +281,24 @@ namespace ASSERT_STREQ(ss.str().c_str(), outcome.GetResult().GetETag().c_str()); } + static void TagTestBucket(const Aws::String& bucketName, const std::shared_ptr& client) { + ASSERT_TRUE(!bucketName.empty()); + ASSERT_TRUE(client); + + PutBucketTaggingRequest taggingRequest; + taggingRequest.SetBucket(bucketName); + Tag tag; + tag.SetKey(TEST_BUCKET_TAG); + tag.SetValue(TEST_BUCKET_TAG); + Tagging tagging; + tagging.AddTagSet(tag); + taggingRequest.SetTagging(tagging); + + auto taggingOutcome = client->PutBucketTagging(taggingRequest); + + ASSERT_TRUE(taggingOutcome.IsSuccess()); + } + static bool WaitForBucketToPropagate(const Aws::String& bucketName, const std::shared_ptr& client = Client) { unsigned timeoutCount = 0; @@ -418,6 +438,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); EXPECT_TRUE(!createBucketResult.GetLocation().empty()); EXPECT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); return fullBucketName; } @@ -642,8 +663,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -711,6 +732,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_FALSE(createBucketResult.GetLocation().empty()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); ListBucketsOutcome listBucketsOutcome = Client->ListBuckets(); ASSERT_TRUE(listBucketsOutcome.IsSuccess()); @@ -749,6 +771,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_FALSE(createBucketResult.GetLocation().empty()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName, oregonClient)); + TagTestBucket(fullBucketName, oregonClient); GetBucketLocationRequest locationRequest; locationRequest.SetBucket(fullBucketName); @@ -774,8 +797,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -800,8 +823,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); Aws::Vector objectKeysWithNewlineCharacter; objectKeysWithNewlineCharacter.push_back(Aws::String(TEST_NEWLINE_KEY) + "-\n-LF"); @@ -868,8 +891,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -955,8 +978,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); //test unicode { @@ -1119,8 +1142,8 @@ namespace ASSERT_TRUE(createBucketOutcome.IsSuccess()); const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); CreateMultipartUploadRequest createMultipartUploadRequest; createMultipartUploadRequest.SetBucket(fullBucketName); @@ -1354,6 +1377,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); GetObjectRequest getObjectRequest; getObjectRequest.SetBucket(fullBucketName); @@ -1376,6 +1400,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1410,6 +1435,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1437,8 +1463,8 @@ namespace createBucketRequest.SetACL(BucketCannedACL::private_); CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); - ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); auto objectStream = Aws::MakeShared("BucketAndObjectOperationTest"); *objectStream << "Test Japanese & Chinese Unicode keys"; @@ -1473,6 +1499,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1517,6 +1544,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1593,6 +1621,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1666,6 +1695,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1770,6 +1800,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); PutObjectRequest putObjectRequest; putObjectRequest.SetBucket(fullBucketName); @@ -1840,6 +1871,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); WaitForBucketToPropagate(fullBucketName, Client); + TagTestBucket(fullBucketName, Client); // Checksums in request body using aws-chunked trailer std::shared_ptr objectStream = Aws::MakeShared(ALLOCATION_TAG); @@ -1921,6 +1953,7 @@ namespace CreateBucketOutcome createBucketOutcome = Client->CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(fullBucketName)); + TagTestBucket(fullBucketName, Client); CreateMultipartUploadRequest createMultipartUploadRequest; createMultipartUploadRequest.SetBucket(fullBucketName); @@ -2007,6 +2040,7 @@ namespace const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult(); ASSERT_TRUE(!createBucketResult.GetLocation().empty()); WaitForBucketToPropagate(fullBucketName, oregonClient); + TagTestBucket(fullBucketName, oregonClient); ListObjectsRequest listObjectsRequest; listObjectsRequest.SetBucket(fullBucketName); diff --git a/aws-cpp-sdk-s3control-integration-tests/S3ControlTest.cpp b/aws-cpp-sdk-s3control-integration-tests/S3ControlTest.cpp index d39a5d634a0d..4c35a2369cba 100644 --- a/aws-cpp-sdk-s3control-integration-tests/S3ControlTest.cpp +++ b/aws-cpp-sdk-s3control-integration-tests/S3ControlTest.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -62,6 +63,7 @@ namespace static const char PRESIGNED_URLS_ACCESS_POINT[] = "presignedaccesspoint"; static const char TEST_OBJECT_KEY[] = "TestObjectKey"; static const char CUSTOM_ENDPOINT_OVERRIDE[] = "beta.example.com"; + static const char TEST_BUCKET_TAG[] = "IntegrationTestResource"; static const int TIMEOUT_MAX = 20; class S3ControlTest : public ::testing::Test @@ -141,6 +143,23 @@ namespace return {configuration}; } + static void TagTestBucket(const Aws::String& bucketName, const S3::S3Client& client) { + ASSERT_TRUE(!bucketName.empty()); + + Aws::S3::Model::PutBucketTaggingRequest taggingRequest; + taggingRequest.SetBucket(bucketName); + Aws::S3::Model::Tag tag; + tag.SetKey(TEST_BUCKET_TAG); + tag.SetValue(TEST_BUCKET_TAG); + Aws::S3::Model::Tagging tagging; + tagging.AddTagSet(tag); + taggingRequest.SetTagging(tagging); + + auto taggingOutcome = client.PutBucketTagging(taggingRequest); + + ASSERT_TRUE(taggingOutcome.IsSuccess()); + } + static bool WaitForBucketToPropagate(const Aws::String& bucketName, const S3::S3Client& client) { unsigned timeoutCount = 0; @@ -193,6 +212,7 @@ namespace auto createBucketOutcome = m_s3Client.CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(bucketName, m_s3Client)); + TagTestBucket(bucketName, m_s3Client); CreateAccessPointRequest createAccessPointRequest; createAccessPointRequest.SetName(accessPointName); @@ -249,6 +269,7 @@ namespace auto createBucketOutcome = s3Client.CreateBucket(createBucketRequest); ASSERT_TRUE(createBucketOutcome.IsSuccess()); ASSERT_TRUE(WaitForBucketToPropagate(regionalBucketName, s3Client)); + TagTestBucket(regionalBucketName, s3Client); S3Control::Model::Region regionalBucket; regionalBucket.SetBucket(regionalBucketName); @@ -696,7 +717,7 @@ namespace TEST_F(S3ControlTest, TestMultiRegionAccessPoint) { Aws::String bucketName = BuildResourceName(BASE_MRAP_BUCKET_NAME); - Aws::String accessPointName = BuildResourceName(BASE_MRAP); + Aws::String accessPointName = BuildResourceName(BASE_MRAP) + "integrationtest"; Aws::Vector multiRegions; multiRegions.push_back(Aws::Region::US_EAST_2);