public void Message_should_contain_bound_type_and_property_name()
        {
            //When
            var exception = new ModelBindingException(typeof(string), "PropName");

            //then
            exception.Message.ShouldEqual(String.Format("Unable to bind to type: {0}; Property: {1}", typeof(string), "PropName"));
        }
        public void Message_should_contain_only_bound_type_if_no_property_is_provided()
        {
            //When
            var exception = new ModelBindingException(typeof(string));

            //Then
            exception.Message.ShouldEqual("Unable to bind to type: " + typeof(string));
        }
        public void Message_should_contain_bound()
        {
            //When
            var exception = new ModelBindingException(typeof(string));

            //then
            exception.Message.ShouldEqual(String.Format("Unable to bind to type: {0}", typeof(string)));
        }
        public void Ctor_should_set_empty_property_exceptions_list_if_none_are_provided()
        {
            //When
            var exception = new ModelBindingException(typeof(string));

            //Then
            exception.PropertyBindingExceptions.Any().ShouldBeFalse();
        }
示例#5
0
        /// <summary>
        /// Extracts the name of the invalid property.
        /// </summary>
        /// <param name="exception">The exception.</param>
        /// <returns></returns>
        private string ExtractInvalidPropertyName(ModelBindingException exception)
        {
            if (exception.InnerException != null)
            {
                var items = exception.InnerException.Message.Split(',')[0].Split('.');
                return(items[items.Length - 1]);
            }

            return(String.Empty);
        }
        public void Ctor_should_set_property_exceptions_and_bound_type()
        {
            //When
            var propertyExceptions = new List <PropertyBindingException>();
            var exception          = new ModelBindingException(typeof(string), propertyExceptions);

            //Then
            exception.BoundType.ShouldBeOfType <string>();
            exception.PropertyBindingExceptions.ShouldBeSameAs(propertyExceptions);
        }
        public void Ctor_should_set_property_name_and_bound_type_and_inner_exception()
        {
            //When
            var inner     = new Exception();
            var exception = new ModelBindingException(typeof(string), "Length", inner);

            //Then
            exception.BoundType.ShouldBeOfType <string>();
            exception.PropertyName.ShouldEqual("Length");
            exception.InnerException.ShouldBeSameAs(inner);
        }
            public void GivenExceptionIsModelBindingException_WhenRunningPipeline_ThenReturnsBadRequestWithExceptionDetails()
            {
                var modelBindingException  = new ModelBindingException(typeof(object), new[] { new PropertyBindingException("SomeProperty", "1") });
                var expectedExceptionModel = modelBindingException.Message;

                var result = _sut.Invoke(A.Dummy <NancyContext>(), modelBindingException) as Negotiator;

                result.Should().NotBeNull();
                result.NegotiationContext.StatusCode.Should().Be(HttpStatusCode.BadRequest);
                var actualExceptionModel = result.NegotiationContext.GetModelForMediaRange("application/json") as object;

                actualExceptionModel.Should().BeAssignableTo <string>();
                ((string)actualExceptionModel).ShouldBeEquivalentTo(expectedExceptionModel);
            }
示例#9
0
 /// <summary>
 /// Adds the model binding exception.
 /// </summary>
 /// <param name="exception">The exception.</param>
 /// <returns></returns>
 public ErrorResponseBuilder WithModelBindingException(ModelBindingException exception)
 {
     this.bindingException = exception;
     return(this);
 }