public void TestPutObjectAPMKMS()
        {
            // Request object is modified internally, therefore, it is required to have separate requests for every test
            PutObjectRequest requestV1 = new PutObjectRequest()
            {
                BucketName  = bucketName,
                Key         = $"key-{Guid.NewGuid()}",
                ContentBody = SampleContent,
            };

            AssertExtensions.ExpectException(() =>
            {
                PutObjectResponse response = s3EncryptionClientMetadataModeKMSV1.EndPutObject(
                    s3EncryptionClientMetadataModeKMSV1.BeginPutObject(requestV1, null, null));
            }, typeof(NotSupportedException), APMKMSErrorRegex);

            PutObjectRequest requestV2 = new PutObjectRequest()
            {
                BucketName  = bucketName,
                Key         = $"key-{Guid.NewGuid()}",
                ContentBody = SampleContent,
            };

            AssertExtensions.ExpectException(() =>
            {
                PutObjectResponse response = s3EncryptionClientMetadataModeKMSV2.EndPutObject(
                    s3EncryptionClientMetadataModeKMSV2.BeginPutObject(requestV2, null, null));
            }, typeof(NotSupportedException), APMKMSErrorRegex);
        }
        public void TestPutObjectAPMKMS()
        {
            PutObjectRequest request = new PutObjectRequest()
            {
                BucketName  = bucketName,
                Key         = $"key-{Guid.NewGuid()}",
                ContentBody = SampleContent,
            };

            AssertExtensions.ExpectException(() =>
            {
                PutObjectResponse response = s3EncryptionClientMetadataModeKMS.EndPutObject(
                    s3EncryptionClientMetadataModeKMS.BeginPutObject(request, null, null));
            }, typeof(NotSupportedException), APMKMSErrorRegex);
        }