public void InvokeSetsLastReponseHeadersAccordingHeadersFromResponse()
        {
            // Arrange
            var mockedResponseMessage = Mock.Create <HttpResponseMessage>();
            var mockedRequestHeaders  = Mock.Create <HttpRequestHeaders>();

            var mockedResponseHeaders = Mock.Create <HttpResponseHeaders>();

            Mock.Arrange(() => HttpClient.DefaultRequestHeaders)
            .IgnoreInstance()
            .Returns(mockedRequestHeaders)
            .Occurs(3);

            Mock.Arrange(() => mockedRequestHeaders.Add(USER_AGENT_KEY, TEST_USER_AGENT))
            .OccursOnce();

            Mock.Arrange(() => mockedRequestHeaders.TryAddWithoutValidation(ACCEPT_HEADER_KEY, ACCEPT_HEADER_VALUE))
            .OccursOnce();

            Mock.Arrange(() => HttpClient.GetAsync(Arg.Is(new Uri(URI))).Result)
            .IgnoreInstance()
            .Returns(mockedResponseMessage)
            .OccursOnce();

            Mock.Arrange(() => mockedResponseMessage.EnsureSuccessStatusCode())
            .OccursOnce();

            Mock.Arrange(() => mockedResponseMessage.Headers)
            .Returns(mockedResponseHeaders)
            .OccursOnce();

            Mock.Arrange(() => mockedResponseMessage.Content.ReadAsStringAsync().Result)
            .Returns(SAMPLE_RESPONSE_BODY)
            .OccursOnce();

            RestCallExecutor restCallExecutor = new RestCallExecutor();

            // Act
            var result = restCallExecutor.Invoke(HttpMethod.Get, URI, CreateSampleHeaders(), null);

            // Assert
            Assert.AreEqual(SAMPLE_RESPONSE_BODY, result);
            Assert.AreEqual(mockedResponseHeaders, restCallExecutor.GetResponseHeaders());

            Mock.Assert(HttpClient);
            Mock.Assert(mockedRequestHeaders);
            Mock.Assert(mockedResponseMessage);
        }