public void Should_Handle_Custom_Exception()
    {
        //Arrange
        var subject = new ExceptionHandlerFilter();
        var url     = "http://example.com";
        var context = new ExceptionContext(Mock.Of <ActionContext>(), new List <IFilterMetadata>())
        {
            Exception = new MovedPermanentlyException(url)
        };

        //Act
        subject.OnException(context);
        //Assert
        context.Result.Should()
        .NotBeNull()
        .And.BeOfType <RedirectResult>();
    }
Example #2
0
        public void OnException_adds_an_error_model_if_exceptionInfo_is_provided(ExceptionHandlerFilter sut, [Frozen] ExceptionInfo exceptionInfo, ExceptionContext context, string formattedMessage)
        {
            Assume.That(context.Exception.Data[ExceptionExtensions.ExceptionInfoKey], Is.SameAs(exceptionInfo));

            Mock.Get(exceptionInfo.Formatter).Setup(p => p(exceptionInfo.State, context.Exception)).Returns(formattedMessage);

            sut.OnException(context);

            var result = context.Result as ObjectResult;

            Assert.That(result, Is.Not.Null);

            var error = result.Value as ErrorModel;

            Assert.That(error, Is.Not.Null);
            Assert.That(error.ErrorId, Is.EqualTo(exceptionInfo.EventId.Id));
            Assert.That(error.Error, Is.EqualTo(exceptionInfo.EventId.Name));
            Assert.That(error.Message, Is.EqualTo(formattedMessage));
            Assert.That(error.Data, Is.SameAs(exceptionInfo.State));
            Assert.That(error.AdditionalData, Is.Null.Or.Not.ContainKey(ExceptionExtensions.ExceptionInfoKey));
        }
Example #3
0
        public void OnException_adds_simple_error_model_if_no_exceptionInfo_is_provided(ExceptionHandlerFilter sut, ExceptionContext context)
        {
            Assume.That(context.Exception.Data.Contains(ExceptionExtensions.ExceptionInfoKey), Is.False);

            sut.OnException(context);

            var result = context.Result as ObjectResult;

            Assert.That(result, Is.Not.Null);

            var error = result.Value as ErrorModel;

            Assert.That(error, Is.Not.Null);
            Assert.That(error.ErrorId, Is.EqualTo(0));
            Assert.That(error.Error, Is.Null);
            Assert.That(error.Message, Is.Not.Null);
            Assert.That(error.Data, Is.Null);
            Assert.That(error.AdditionalData, Is.Null.Or.Not.ContainKey(ExceptionExtensions.ExceptionInfoKey));
        }