public void Contructor_data_is_populated_from_HttpResponseMessage()
        {
            var testHttpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "www.github.com")
            {
                Content = new StringContent("request content", Encoding.UTF8, "application/text"),
                Headers = { { "header1", "value1" }, { "header2", new List <string> {
                                                           "value2A", "value2B"
                                                       } } }
            };
            var testHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                RequestMessage = testHttpRequestMessage,
                Content        = new StringContent("response content", Encoding.UTF8, "application/text"),
                Headers        = { { "header1", "value1" }, { "header2", new List <string> {
                                                                  "value2A", "value2B"
                                                              } } }
            };

            var httpClientState = new HttpClientState(testHttpResponseMessage);

            httpClientState.Url.ShouldBe(testHttpRequestMessage.RequestUri);
            httpClientState.HttpMethod.ShouldBe(testHttpRequestMessage.Method.ToString());
            httpClientState.RequestContentLength.ShouldBe(testHttpRequestMessage.Content.Headers.ContentLength);
            httpClientState.RequestHeaders
            .EqualsHeaders(testHttpRequestMessage.Headers.Concat(testHttpRequestMessage.Content.Headers).ToList())
            .ShouldBeTrue();

            httpClientState.HttpStatusCode.ShouldBe((int)testHttpResponseMessage.StatusCode);
            httpClientState.ResponseContentLength.ShouldBe(testHttpResponseMessage.Content.Headers.ContentLength);
            httpClientState.ResponseHeaders
            .EqualsHeaders(testHttpResponseMessage.Headers.Concat(testHttpResponseMessage.Content.Headers).ToList())
            .ShouldBeTrue();
        }
        public async Task ReadResponseBodyAsStringAsync_returns_data_from_HttpResponseMessage()
        {
            var respContent             = "response content";
            var testHttpRequestMessage  = new HttpRequestMessage(HttpMethod.Post, "www.github.com");
            var testHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                RequestMessage = testHttpRequestMessage,
                Content        = new StringContent(respContent, Encoding.UTF8, "application/text"),
            };

            var httpClientState = new HttpClientState(testHttpResponseMessage);
            var stateRespBody   = await httpClientState.ReadResponseBodyAsStringAsync();

            stateRespBody.ShouldBe(respContent);
        }
        public void Dispose_can_be_called_multiple_times()
        {
            var testHttpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "www.github.com")
            {
                Content = new StringContent("request content", Encoding.UTF8, "application/text"),
            };
            var testHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                RequestMessage = testHttpRequestMessage,
                Content        = new StringContent("response content", Encoding.UTF8, "application/text"),
            };

            var httpClientState = new HttpClientState(testHttpResponseMessage);

            httpClientState.Dispose();
            httpClientState.Dispose();
            httpClientState.Dispose();
        }