public void Given_Validation_Error_With_CancellationToken_When_PostAsync_Invoked_Then_It_Should_Throw_Exception(HttpStatusCode statusCode)
        {
            var requestUri = "http://localhost";
            var payload    = "{ \"hello\": \"world\" }";

            var exception = new SchemaValidationException();
            var validator = new Mock <ISchemaValidator>();

            validator.Setup(p => p.ValidateAsync(It.IsAny <string>(), It.IsAny <string>())).ThrowsAsync(exception);

            var path = "default.json";

            var func = default(Func <Task>);

            using (var handler = this._fixture.CreateFakeHttpMessageHandler(statusCode, payload))
                using (var httpClient = this._fixture.CreateHttpClient(handler))
                    using (var content = this._fixture.CreateHttpContent())
                        using (var source = this._fixture.CreateCancellationTokenSource())
                        {
                            func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, validator.Object, path, source.Token).ConfigureAwait(false);

                            func.Should().Throw <SchemaValidationException>();

                            func = async() => await HttpClientExtensions.PostAsync(httpClient, new Uri(requestUri), content, validator.Object, path, source.Token).ConfigureAwait(false);

                            func.Should().Throw <SchemaValidationException>();
                        }
        }
Example #2
0
 public Task <HttpResponseMessage> PostAsync <TRequest>(Uri requestUri, TRequest value, string mediaType = null)
 {
     if (value is HttpContent)
     {
         return(base.PostAsync(requestUri, value as HttpContent));
     }
     else
     {
         return(HttpClientExtensions.PostAsync(this, requestUri, value, Formatter, mediaType));
     }
 }
Example #3
0
 public Task <TResponse> PostAsync <TRequest, TResponse>(Uri requestUri, TRequest value, string mediaType = null)
 {
     if (value is HttpContent)
     {
         var task = base.PostAsync(requestUri, value as HttpContent);
         return(resultContent.GetResultContentAsync <TResponse>(task, this.Formatters, this.ErrorType, this.ErrorHandle));
     }
     else
     {
         var task = HttpClientExtensions.PostAsync(this, requestUri, value, Formatter, mediaType);
         return(resultContent.GetResultContentAsync <TResponse>(task, this.Formatters, this.ErrorType, this.ErrorHandle));
     }
 }
        public void Given_Null_Parameters_When_PostAsync_Invoked_Then_It_Should_Throw_Exception()
        {
            var requestUri = "http://localhost";
            var validator  = new Mock <ISchemaValidator>();

            var func = default(Func <Task>);

            using (var httpClient = this._fixture.CreateHttpClient())
                using (var content = this._fixture.CreateHttpContent())
                {
                    func = async() => await HttpClientExtensions.PostAsync(null, (string)null, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, (string)null, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, validator.Object, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(null, (Uri)null, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, (Uri)null, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, null, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, null, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();

                    func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, validator.Object, null).ConfigureAwait(false);

                    func.Should().Throw <ArgumentNullException>();
                }
        }
Example #5
0
 public Task <TResponse> PostAsync <TRequest, TResponse>(string requestUri, TRequest value, string mediaType = null)
 {
     if (value is HttpContent)
     {
         var task = base.PostAsync(requestUri, value as HttpContent);
         return(resultContent.GetResultContentAsync <TResponse>(task, this.Formatters, this.ErrorType, this.ErrorHandle));
     }
     else
     {
         var task = HttpClientExtensions.PostAsync(this, requestUri, value, Formatter, mediaType);
         return(resultContent.GetResultContentAsync <TResponse>(task, this.Formatters, this.ErrorType, this.ErrorHandle));
         //return this.PostAsync<string, string>("api/WebErp.Orders/Order/GetOrdersByExpression?count={count}".Replace("{count}", System.Convert.ToString(count)), predicate);//?.Result?.GetResultContent<Order[]>(this.MediaTypeFormatters);
     }
 }
        public void Given_Error_Response_When_PostAsync_Invoked_Then_It_Should_Throw_Exception(HttpStatusCode statusCode)
        {
            var requestUri = "http://localhost";
            var validator  = new Mock <ISchemaValidator>();
            var path       = "default.json";

            var func = default(Func <Task>);

            using (var handler = this._fixture.CreateFakeHttpMessageHandler(statusCode))
                using (var httpClient = this._fixture.CreateHttpClient(handler))
                    using (var content = this._fixture.CreateHttpContent())
                    {
                        func = async() => await HttpClientExtensions.PostAsync(httpClient, requestUri, content, validator.Object, path).ConfigureAwait(false);

                        func.Should().Throw <HttpRequestException>();

                        func = async() => await HttpClientExtensions.PostAsync(httpClient, new Uri(requestUri), content, validator.Object, path).ConfigureAwait(false);

                        func.Should().Throw <HttpRequestException>();
                    }
        }
        public async Task Given_Validation_Result_When_PostAsync_Invoked_Then_It_Should_Return_Result(HttpStatusCode statusCode)
        {
            var requestUri = "http://localhost";
            var payload    = "{ \"hello\": \"world\" }";

            var validator = new Mock <ISchemaValidator>();

            validator.Setup(p => p.ValidateAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(true);

            var path = "default.json";

            using (var response = this._fixture.CreateHttpResponseMessage(statusCode, payload))
                using (var handler = this._fixture.CreateFakeHttpMessageHandler(response))
                    using (var httpClient = this._fixture.CreateHttpClient(handler))
                        using (var content = this._fixture.CreateHttpContent())
                            using (var result1 = await HttpClientExtensions.PostAsync(httpClient, requestUri, content, validator.Object, path).ConfigureAwait(false))
                                using (var result2 = await HttpClientExtensions.PostAsync(httpClient, new Uri(requestUri), content, validator.Object, path).ConfigureAwait(false))
                                {
                                    result1.Should().Be(response);
                                    result2.Should().Be(response);
                                }
        }