Beispiel #1
0
        public void RequestInfoHttpMessagePropertiesAddedToRequestMessage()
        {
            var messageHandler = new MockHttpMessageHandler {
                ResponseMessage = Task.FromResult(new HttpResponseMessage())
            };
            var httpClient = new HttpClient(messageHandler);
            var requester  = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Get, "foo");

            requestInfo.AddHttpRequestMessagePropertyProperty("key1", "value1");
            requestInfo.AddHttpRequestMessagePropertyParameter("key2", "value2");
            requester.RequestWithResponseMessageAsync(requestInfo).Wait();

#if NET452 || NETCOREAPP1_0 || NETCOREAPP2_0 || NETCOREAPP3_0
            Assert.Equal(3, messageHandler.Request.Properties.Count);
            Assert.Equal("value1", messageHandler.Request.Properties["key1"]);
            Assert.Equal("value2", messageHandler.Request.Properties["key2"]);
#else
            Assert.True(messageHandler.Request.Options.TryGetValue(new HttpRequestOptionsKey <string>("key1"), out string key1));
            Assert.Equal("value1", key1);
            Assert.True(messageHandler.Request.Options.TryGetValue(new HttpRequestOptionsKey <string>("key2"), out string key2));
            Assert.Equal("value2", key2);
#endif
        }
Beispiel #2
0
        public void SendRequestThrowsIfResponseIsBad()
        {
            var messageHandler = new MockHttpMessageHandler();
            var httpClient     = new HttpClient(messageHandler)
            {
                BaseAddress = new Uri("http://api.com")
            };
            var requester = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Post, "foo");

            var responseMessage = new HttpResponseMessage();

            responseMessage.Headers.Add("Foo", "bar");
            responseMessage.StatusCode = HttpStatusCode.NotFound;
            responseMessage.Content    = new StringContent("hello");

            messageHandler.ResponseMessage = Task.FromResult(responseMessage);

            var aggregateException = Assert.Throws <AggregateException>(() => requester.SendRequestAsync(requestInfo, true).Wait());
            var e = Assert.IsType <ApiException>(aggregateException.InnerException);

            Assert.Equal(HttpMethod.Post, e.RequestMethod);
            Assert.Equal("http://api.com/foo", e.RequestUri.ToString());
            Assert.Equal(HttpStatusCode.NotFound, e.StatusCode);
            Assert.True(e.Headers.Contains("Foo"));
            Assert.True(e.HasContent);
            Assert.Equal("hello", e.Content);
        }
Beispiel #3
0
        public void ThrowsWithNullBaseAddressAndNullPath()
        {
            var requester = new PublicRequester(new HttpClient()
            {
                BaseAddress = null
            });
            var requestInfo = new RequestInfo(HttpMethod.Get, null);

            Assert.Throws <FormatException>(() => requester.ConstructUri(null, null, requestInfo));
        }
Beispiel #4
0
        public void AllowsNullBaseAddressAndNonNullPath()
        {
            var requester = new PublicRequester(new HttpClient()
            {
                BaseAddress = null
            });
            var requestInfo = new RequestInfo(HttpMethod.Get, null);
            var uri         = requester.ConstructUri(null, "foo", requestInfo);

            Assert.Equal("http://foo/", uri.ToString());
        }
Beispiel #5
0
        public void CombinesUriParts(string baseAddress, string basePath, string path, string expected)
        {
            var requester = new PublicRequester(new HttpClient()
            {
                BaseAddress = baseAddress == null ? null : new Uri(baseAddress),
            });
            var requestInfo = new RequestInfo(HttpMethod.Get, path)
            {
                BasePath = basePath
            };
            var uri = requester.ConstructUri(basePath, path, requestInfo);

            Assert.Equal(expected, uri.ToString());
        }
Beispiel #6
0
        public void AllowsNullPath()
        {
            var messageHandler = new MockHttpMessageHandler();
            var httpClient     = new HttpClient(messageHandler)
            {
                BaseAddress = new Uri("http://api.example.com/base/")
            };
            var requester = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Get, null);

            messageHandler.ResponseMessage = Task.FromResult(new HttpResponseMessage());
            requester.SendRequestAsync(requestInfo, true).Wait();
            Assert.Equal("http://api.example.com/base/", messageHandler.Request.RequestUri.ToString());
        }
Beispiel #7
0
        public void RequestInfoHttpMessagePropertiesAddedToRequestMessage()
        {
            var messageHandler = new MockHttpMessageHandler {
                ResponseMessage = Task.FromResult(new HttpResponseMessage())
            };
            var httpClient = new HttpClient(messageHandler);
            var requester  = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Get, "foo");

            requestInfo.AddHttpRequestMessagePropertyProperty("key1", "value1");
            requestInfo.AddHttpRequestMessagePropertyParameter("key2", "value2");
            requester.RequestWithResponseMessageAsync(requestInfo).Wait();

            Assert.Equal(3, messageHandler.Request.Properties.Count);
            Assert.Equal("value1", messageHandler.Request.Properties["key1"]);
            Assert.Equal("value2", messageHandler.Request.Properties["key2"]);
        }
Beispiel #8
0
        public void SendRequestAsyncSendsRequest()
        {
            var messageHandler = new MockHttpMessageHandler();
            var httpClient     = new HttpClient(messageHandler)
            {
                BaseAddress = new Uri("http://api.com")
            };
            var requester = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Get, "foo");

            var responseMessage = new HttpResponseMessage();

            messageHandler.ResponseMessage = Task.FromResult(responseMessage);

            var response = requester.SendRequestAsync(requestInfo, true).Result;

            Assert.Equal("http://api.com/foo", messageHandler.Request.RequestUri.ToString());
            Assert.Equal(responseMessage, response);
        }
Beispiel #9
0
        public void SendRequestDoesNotThrowIfResponseIsBadButAllowAnyStatusCodeSpecified()
        {
            var messageHandler = new MockHttpMessageHandler();
            var httpClient     = new HttpClient(messageHandler)
            {
                BaseAddress = new Uri("http://api.com")
            };
            var requester = new PublicRequester(httpClient);

            var requestInfo = new RequestInfo(HttpMethod.Get, "foo")
            {
                AllowAnyStatusCode = true
            };
            var responseMessage = new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.NotFound
            };

            messageHandler.ResponseMessage = Task.FromResult(responseMessage);

            var response = requester.SendRequestAsync(requestInfo, true).Result;

            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }