public async Task DeleteAsync_ExpectedRequest()
        {
            TestHttpMessageHandler handler = new TestHttpMessageHandler
            {
                RequestHandler = (HttpRequestMessage message) =>
                {
                    Assert.AreEqual("DELETE", message.Method.Method);
                    Assert.AreEqual("/testresource", message.RequestUri.AbsolutePath);
                }
            };

            TestClientConnection connection = new TestClientConnection(handler);

            await connection.DeleteAsync <object>("testresource");
        }
        public async Task InvokeAsync_ExpectedRequest()
        {
            TestHttpMessageHandler handler = new TestHttpMessageHandler
            {
                RequestHandler = (HttpRequestMessage message) =>
                {
                    Assert.AreEqual("POST", message.Method.Method);
                    Assert.AreEqual("/testresource", message.RequestUri.AbsolutePath);
                    string body = Task.Run(() => message.Content.ReadAsStringAsync()).Result;
                    Assert.AreEqual("{\"testproperty\":\"testvalue\"}", body);
                }
            };

            TestClientConnection connection = new TestClientConnection(handler);

            await connection.InvokeAsync <object>("testresource", ClientRequestMethod.POST, new { testproperty = "testvalue" });
        }
        public async Task InvokeAsync_InvalidJsonResponse_ThrowsUKFastClientRequestException()
        {
            TestHttpMessageHandler handler = new TestHttpMessageHandler
            {
                Content = "invalidjson"
            };

            ClientRequest request = new ClientRequest()
            {
                Resource = "testresource",
                Method   = ClientRequestMethod.GET
            };

            TestClientConnection connection = new TestClientConnection(handler);

            await Assert.ThrowsExceptionAsync <UKFastClientRequestException>(() => connection.InvokeAsync <object>(request));
        }
        public async Task InvokeAsync_ExpectedMethod()
        {
            TestHttpMessageHandler handler = new TestHttpMessageHandler
            {
                RequestHandler = (HttpRequestMessage message) =>
                {
                    Assert.AreEqual("GET", message.Method.Method);
                }
            };

            ClientRequest request = new ClientRequest()
            {
                Resource = "testresource",
                Method   = ClientRequestMethod.GET,
            };

            TestClientConnection connection = new TestClientConnection(handler);

            await connection.InvokeAsync <object>(request);
        }