public void InvalidConfigurationTests(string arnString, string region, S3ConfigFlags flags, string expectedErrorMessage) { Exception exception = null; IRequest result = null; try { var request = new GetObjectRequest { BucketName = arnString, Key = "foo.txt" }; var config = S3ArnTestUtils.BuildFromRegionSystemName(region, flags); result = S3ArnTestUtils.RunMockRequest(request, GetObjectRequestMarshaller.Instance, config); } catch (Exception e) { exception = e; } Assert.IsNotNull(exception, "Expected exception, but got result " + result?.Endpoint); if (region == string.Empty) { Assert.IsInstanceOfType(exception, typeof(ArgumentException), "ArgumentException expected"); } else { Assert.IsInstanceOfType(exception, typeof(AmazonClientException), "AmazonClientException expected"); } Assert.AreEqual(expectedErrorMessage, exception.Message); }
public void PreSignedUrlTest(string accessPointArn, S3ConfigFlags flags, string expectedHost, string expectedQueryStringPiece, string expectedErrorMessage) { var request = new GetPreSignedUrlRequest { BucketName = accessPointArn, Key = "foo.txt", Expires = DateTime.Now.AddDays(1), Verb = HttpVerb.GET }; var config = S3ArnTestUtils.BuildFromRegionSystemName("us-east-1", flags); var s3Client = new AmazonS3Client("access", "secret", config); Exception exception = null; Uri uri = null; try { uri = new Uri(s3Client.GetPreSignedURL(request)); } catch (AmazonClientException e) { exception = e; } if (!string.IsNullOrEmpty(expectedHost)) { Assert.IsNull(exception, "Unexpected exception was thrown: " + exception?.Message); Assert.IsNotNull(uri); Assert.AreEqual(expectedHost, uri.Host); Assert.AreEqual("/foo.txt", uri.AbsolutePath); Assert.IsTrue(uri.Query.Contains(expectedQueryStringPiece), $"Expected to find {expectedQueryStringPiece} in {uri.Query}"); } else if (!string.IsNullOrEmpty(expectedErrorMessage)) { Assert.IsNotNull(exception); Assert.IsInstanceOfType(exception, typeof(AmazonClientException)); Assert.AreEqual(expectedErrorMessage, exception.Message); } else { Assert.Fail($"Bad test setup, {nameof(expectedHost)} or {nameof(expectedErrorMessage)} must be provided"); } }
/// <summary> /// Test helper for S3 access point tests /// </summary> /// <param name="accessPointArn">Access point ARN (BucketName on the request)</param> /// <param name="region">Region, to be set on AmazonS3Config's RegionEndpoint</param> /// <param name="flags">Bit field of additional AmazonS3Config settings</param> /// <param name="host">Expected hostname, will be asserted for valid test cases</param> /// <param name="errorMessage">Expected error message, will be asserted for invalid test cases</param> /// <returns></returns> private IRequest TestAccessPointArnVariationHelper(string accessPointArn, string region, S3ConfigFlags flags, string host, string errorMessage) { var request = new PutObjectRequest { BucketName = accessPointArn, Key = "foo.txt", ContentBody = "data" }; var config = S3ArnTestUtils.BuildFromRegionSystemName(region, flags); Exception exception = null; IRequest marshalledRequest = null; try { marshalledRequest = S3ArnTestUtils.RunMockRequest(request, PutObjectRequestMarshaller.Instance, config); } catch (Exception e) { exception = e; } if (!string.IsNullOrEmpty(host)) { Assert.IsNull(exception, "Exception was thrown: " + exception?.Message); Assert.AreEqual(new Uri($"https://{host}"), marshalledRequest.Endpoint); Assert.AreEqual("/foo.txt", marshalledRequest.ResourcePath); } else if (!string.IsNullOrEmpty(errorMessage)) { Assert.IsNotNull(exception, "Expected exception, but got result " + marshalledRequest?.Endpoint); Assert.IsInstanceOfType(exception, typeof(AmazonClientException)); Assert.AreEqual(errorMessage, exception.Message); } else { Assert.Fail($"Bad Test Data, you must provide either {nameof(host)} or {nameof(errorMessage)}"); } return(marshalledRequest); }
public void TestOutpostArnVariations(string arnString, string region, S3ConfigFlags flags, string host, string errorMessage) { var request = new GetObjectRequest { BucketName = arnString, Key = "foo.txt" }; var config = S3ArnTestUtils.BuildFromRegionSystemName(region, flags); Exception exception = null; IRequest result = null; try { result = S3ArnTestUtils.RunMockRequest(request, GetObjectRequestMarshaller.Instance, config); } catch (Exception e) { exception = e; } if (!string.IsNullOrEmpty(host)) { Assert.IsNull(exception, "Exception was thrown"); Assert.AreEqual(new Uri($"https://{host}"), result.Endpoint); Assert.AreEqual("/foo.txt", result.ResourcePath); } else if (!string.IsNullOrEmpty(errorMessage)) { Assert.IsNotNull(exception); Assert.IsInstanceOfType(exception, typeof(AmazonClientException)); Assert.AreEqual(errorMessage, exception.Message); } else { Assert.Fail($"Bad Test Data, you must provide either {nameof(host)} or {nameof(errorMessage)}"); } }