public async Task GetResponseMessage_returns_an_HttpResponseMessage_when_given_OnPremiseTargetResponse_is_null() { IHttpResponseMessageBuilder sut = new HttpResponseMessageBuilder(null); var onPremiseTargetRequest = new OnPremise.OnPremiseConnectorResponse { StatusCode = HttpStatusCode.NotFound, Body = new byte[] { 0, 0, 0, 0 }, HttpHeaders = new Dictionary <string, string> { ["Content-Length"] = "4", ["X-Foo"] = "X-Bar", }, ContentLength = 4, }; using (var result = sut.BuildFromConnectorResponse(onPremiseTargetRequest, true, null)) { var content = await result.Content.ReadAsByteArrayAsync(); result.StatusCode.Should().Be(HttpStatusCode.NotFound); content.LongLength.Should().Be(4L); result.Content.Headers.ContentLength.Should().Be(4L); result.Content.Headers.GetValues("X-Foo").Single().Should().Be("X-Bar"); } }
public void SetHttpHeaders_transforms_HTTP_headers_correctly_from_a_given_OnPremiseTargetRequest_and_sets_them_on_a_given_HttpContent() { var sut = new HttpResponseMessageBuilder(null); var httpHeaders = new Dictionary <string, string> { ["Content-MD5"] = "Q2hlY2sgSW50ZWdyaXR5IQ==", // will be discarded ["Content-Range"] = "bytes 21010-47021/47022", // will be discarded ["Content-Disposition"] = "attachment", ["Content-Length"] = "300", ["Content-Location"] = "http://tt.invalid", ["Content-Type"] = "application/json", ["Expires"] = "Thu, 01 Dec 1994 16:00:00 GMT", ["Last-Modified"] = "Thu, 01 Dec 1994 15:00:00 GMT", }; var httpContent = new ByteArrayContent(new byte[] { }); sut.AddContentHttpHeaders(httpContent, httpHeaders); httpContent.Headers.Should().HaveCount(6); httpContent.Headers.ContentMD5.Should().BeNull(); httpContent.Headers.ContentRange.Should().BeNull(); httpContent.Headers.ContentDisposition.Should().Be(ContentDispositionHeaderValue.Parse("attachment")); httpContent.Headers.ContentLength.Should().Be(300L); httpContent.Headers.ContentLocation.Should().Be("http://tt.invalid"); httpContent.Headers.ContentType.Should().Be(MediaTypeHeaderValue.Parse("application/json")); httpContent.Headers.Expires.Should().Be(new DateTime(1994, 12, 1, 16, 0, 0)); httpContent.Headers.LastModified.Should().Be(new DateTime(1994, 12, 1, 15, 0, 0)); }
public async Task GetResponseMessage_returns_an_HttpResponseMessage_when_given_OnPremiseTargetResponse_is_null() { IHttpResponseMessageBuilder sut = new HttpResponseMessageBuilder(); var onPremiseTargetRequest = new OnPremiseTargetReponse { StatusCode = HttpStatusCode.NotFound, Body = new byte[] { 0, 0, 0, 0 }, HttpHeaders = new Dictionary <string, string> { { "Content-Length", "4" }, { "X-Foo", "X-Bar" } } }; var link = new Link(); HttpResponseMessage result; result = sut.BuildFrom(onPremiseTargetRequest, link); var content = await result.Content.ReadAsByteArrayAsync(); result.StatusCode.Should().Be(HttpStatusCode.NotFound); content.LongLength.Should().Be(4L); result.Content.Headers.ContentLength.Should().Be(4L); result.Content.Headers.GetValues("X-Foo").Single().Should().Be("X-Bar"); }
public void SetHttpHeaders_does_nothing_when_no_HttpHeaders_are_provided() { var sut = new HttpResponseMessageBuilder(null); var httpContent = new ByteArrayContent(new byte[] { }); sut.AddContentHttpHeaders(httpContent, null); httpContent.Headers.Should().BeEmpty(); }
public void GetResponseMessage_returns_on_premise_timeout_message_when_given_OnPremiseTargetResponse_is_null() { IHttpResponseMessageBuilder sut = new HttpResponseMessageBuilder(null); using (var result = sut.BuildFromConnectorResponse(null, true, null)) { result.StatusCode.Should().Be(HttpStatusCode.GatewayTimeout); result.Content.Headers.Count().Should().Be(1); result.Content.Headers.Single().Key.Should().Be("X-TTRELAY-TIMEOUT"); result.Content.Headers.Single().Value.First().Should().Be("On-Premise"); } }
public void GetResponseContentForOnPremiseTargetResponse_does_not_disclose_content_when_other_error_occurred_and_ForwardOnPremiseTargetErrorResponse_is_turned_off() { var sut = new HttpResponseMessageBuilder(null); var onPremiseTargetResponse = new OnPremiseConnectorResponse { StatusCode = HttpStatusCode.NotImplemented }; using (var result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, false)) { result.Should().BeNull(); } }
public void GetResponseContentForOnPremiseTargetResponse_does_not_disclose_content_when_InternalServerError_occurred_and_ForwardOnPremiseTargetErrorResponse_is_turned_off() { var sut = new HttpResponseMessageBuilder(); var onPremiseTargetResponse = new OnPremiseTargetReponse { StatusCode = HttpStatusCode.InternalServerError }; var link = new Link(); HttpContent result; result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, link); result.Should().BeNull(); }
public async Task GetResponseContentForOnPremiseTargetResponse_sets_StatusCode_accordingly_and_discloses_content() { var sut = new HttpResponseMessageBuilder(null); var onPremiseTargetResponse = new OnPremiseConnectorResponse { StatusCode = HttpStatusCode.OK, Body = new byte[] { 0, 0, 0, 0 }, ContentLength = 4, }; using (var result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, false)) { var body = await result.ReadAsByteArrayAsync(); result.Should().NotBeNull(); body.LongLength.Should().Be(4L); } }
public async Task GetResponseContentForOnPremiseTargetResponse_discloses_content_when_other_error_occurred_and_ForwardOnPremiseTargetErrorResponse_is_turned_on() { var sut = new HttpResponseMessageBuilder(null); var onPremiseTargetResponse = new OnPremiseConnectorResponse { StatusCode = HttpStatusCode.NotImplemented, Body = new byte[] { 0, 0, 0 }, ContentLength = 3, }; using (var result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, true)) { var body = await result.ReadAsByteArrayAsync(); result.Should().NotBeNull(); body.LongLength.Should().Be(3L); } }
public void SetHttpHeaders_sets_unknown_HTTP_headers_without_validation_correctly_from_a_OnPremiseTargetRequest_on_a_given_HttpContent() { var sut = new HttpResponseMessageBuilder(null); var httpHeaders = new Dictionary <string, string> { ["X-Foo"] = "X-Bar", ["Foo"] = "Bar", }; var httpContent = new ByteArrayContent(new byte[] { }); sut.AddContentHttpHeaders(httpContent, httpHeaders); httpContent.Headers.Should().HaveCount(2); httpContent.Headers.GetValues("X-Foo").Single().Should().Be("X-Bar"); httpContent.Headers.GetValues("Foo").Single().Should().Be("Bar"); }
public async Task GetResponseContentForOnPremiseTargetResponse_sets_StatusCode_accordingly_and_discloses_content() { var sut = new HttpResponseMessageBuilder(); var onPremiseTargetResponse = new OnPremiseTargetReponse { StatusCode = HttpStatusCode.OK, Body = new byte[] { 0, 0, 0, 0 } }; var link = new Link(); HttpContent result; result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, link); var body = await result.ReadAsByteArrayAsync(); result.Should().NotBeNull(); body.LongLength.Should().Be(4L); }
public async Task GetResponseContentForOnPremiseTargetResponse_discloses_content_when_InternalServerError_occurred_and_ForwardOnPremiseTargetErrorResponse_is_turned_on() { var sut = new HttpResponseMessageBuilder(); var onPremiseTargetResponse = new OnPremiseTargetReponse { StatusCode = HttpStatusCode.InternalServerError, Body = new byte[] { 0, 0, 0 } }; var link = new Link { ForwardOnPremiseTargetErrorResponse = true }; HttpContent result; result = sut.GetResponseContentForOnPremiseTargetResponse(onPremiseTargetResponse, link); var body = await result.ReadAsByteArrayAsync(); result.Should().NotBeNull(); body.LongLength.Should().Be(3L); }
public void GetResponseContentForOnPremiseTargetResponse_throws_an_exception_when_given_OnPremiseTargetResponse_is_null() { var sut = new HttpResponseMessageBuilder(null); sut.GetResponseContentForOnPremiseTargetResponse(null, false); }