public void SortQueryParameterValues(string query, string parameterName, string[] expected) { // Act var actual = CanonicalRequest.SortQueryParameters(query); // Assert actual[parameterName].ShouldBe(expected); }
public void NotNormalizeS3RequestUri() { // Arrange var requestUri = new Uri("https://example.s3.amazonaws.com/resource//path"); // Act var actual = CanonicalRequest.GetCanonicalResourcePath("s3", requestUri); // Assert actual.ShouldBe("/resource//path"); }
public void RemoveSequentialSpacesInHeaderValue(string headerValue, string expected) { // Arrange var headers = new HttpRequestMessage().Headers; headers.Add("some-header-name", headerValue); // Act var actual = CanonicalRequest.SortHeaders(headers, null); // Assert actual["some-header-name"].ShouldBe(new[] { expected }); }
public void TransformHeaderNamesToLowercase(string headerName, string expected) { // Arrange var headers = new HttpRequestMessage().Headers; headers.Add(headerName, "some header value"); // Act var actual = CanonicalRequest.SortHeaders(headers, null); // Assert actual.Keys.ShouldBe(new[] { expected }); }
public void RespectDefaultHeader() { // Arrange var headers = new HttpRequestMessage().Headers; var defaultHeaders = new HttpRequestMessage().Headers; defaultHeaders.Add("some-header-name", "some-header-value"); // Act var actual = CanonicalRequest.SortHeaders(headers, defaultHeaders); // Assert actual["some-header-name"].ShouldBe(new[] { "some-header-value" }); }
public async Task PassTestSuite(params string[] scenarioName) { // Arrange var scenario = context.LoadScenario(scenarioName); // Add header 'X-Amz-Date' since the algorithm at this point expects it on the request scenario.Request.AddHeader(HeaderKeys.XAmzDateHeader, context.UtcNow.ToIso8601BasicDateTime()); // Act var(canonicalRequest, signedHeaders) = await CanonicalRequest.BuildAsync(scenario.Request, null); // Assert canonicalRequest.ShouldBe(scenario.ExpectedCanonicalRequest); signedHeaders.ShouldBe(scenario.ExpectedSignedHeaders); }
public void SortHeaderNames(string[] headerNames, string[] expected) { // Arrange var headers = new HttpRequestMessage().Headers; foreach (var headerName in headerNames) { headers.Add(headerName, "some header value"); } // Act var actual = CanonicalRequest.SortHeaders(headers, null); // Assert actual.Keys.ShouldBe(expected); }
public async Task PassTestSuite(params string[] scenarioName) { // Arrange var scenario = context.LoadScenario(scenarioName); // Add header 'X-Amz-Date' since the algorithm at this point expects it on the request scenario.Request.AddHeader(HeaderKeys.XAmzDateHeader, context.UtcNow.ToIso8601BasicDateTime()); // Calculate the content hash, since it's one of the parameters to the canonical request var contentHash = await ContentHash.CalculateAsync(scenario.Request.Content); // Act var(canonicalRequest, signedHeaders) = CanonicalRequest.Build("execute-api", scenario.Request, null, contentHash); // Assert canonicalRequest.ShouldBe(scenario.ExpectedCanonicalRequest); signedHeaders.ShouldBe(scenario.ExpectedSignedHeaders); }
public string ASV4() { // Build the canonical request (string canonicalRequest, string signedHeaders) = CanonicalRequest.Build("s3", _request2, null, null); // Build the string to sign (string stringToSign, string credentialScope) = StringToSign.Build( DateTime.UtcNow, "eu-west-1", "S3", canonicalRequest); // Build the authorization header string authorizationHeader = AuthorizationHeader.Build( DateTime.UtcNow, "eu-west-1", "S3", _credentials, signedHeaders, credentialScope, stringToSign); return(authorizationHeader); }
public string AWS4() { // Build the canonical request (string canonicalRequest, string signedHeaders) = CanonicalRequest.Build("s3", _request2, new Dictionary <string, IEnumerable <string> >(), string.Empty); // Build the string to sign (string stringToSign, string credentialScope) = StringToSign.Build( DateTime.UtcNow, "eu-west-1", "S3", canonicalRequest); // Build the authorization header string authorizationHeader = AuthorizationHeader.Build( DateTime.UtcNow, "eu-west-1", "S3", _credentials, signedHeaders, credentialScope, stringToSign); return(authorizationHeader); }