Exemplo n.º 1
0
    public async Task DbExceptions_HandlingFails_InvokesNextFilter()
    {
        var sink   = new TestSink();
        var filter = new DatabaseDeveloperPageExceptionFilter(
            new TestLogger <DatabaseDeveloperPageExceptionFilter>(new TestLoggerFactory(sink, true)),
            Options.Create(new DatabaseErrorPageOptions()));
        var context           = new DefaultHttpContext();
        var exception         = new Mock <DbException>();
        var nextFilterInvoked = false;

        await filter.HandleExceptionAsync(
            new ErrorContext(context, exception.Object),
            context =>
        {
            nextFilterInvoked = true;
            return(Task.CompletedTask);
        });

        Assert.True(nextFilterInvoked);
        Assert.Equal(1, sink.Writes.Count);
        var message = sink.Writes.Single();

        Assert.Equal(LogLevel.Error, message.LogLevel);
        Assert.Contains("An exception occurred while calculating the database error page content.", message.Message);
    }
Exemplo n.º 2
0
    public async Task DbExceptions_HandlingFails_ReturnsIfResponseStarted()
    {
        var sink   = new TestSink();
        var filter = new DatabaseDeveloperPageExceptionFilter(
            new TestLogger <DatabaseDeveloperPageExceptionFilter>(new TestLoggerFactory(sink, true)),
            Options.Create(new DatabaseErrorPageOptions()));
        var response = new Mock <HttpResponse>();

        response.Setup(r => r.HasStarted).Returns(true);
        var context = new Mock <HttpContext>();

        context.Setup(c => c.Response).Returns(response.Object);
        var exception         = new Mock <DbException>();
        var nextFilterInvoked = false;

        await filter.HandleExceptionAsync(
            new ErrorContext(context.Object, exception.Object),
            context =>
        {
            nextFilterInvoked = true;
            return(Task.CompletedTask);
        });

        Assert.False(nextFilterInvoked);
        Assert.Contains(sink.Writes, w => w.Message == "The response has already started, the next developer page exception filter will not be executed.");
    }
Exemplo n.º 3
0
    public async Task NonDbExceptions_NotHandled()
    {
        var filter = new DatabaseDeveloperPageExceptionFilter(
            NullLogger <DatabaseDeveloperPageExceptionFilter> .Instance,
            Options.Create(new DatabaseErrorPageOptions()));
        var response = new Mock <HttpResponse>();

        response.Setup(r => r.HasStarted).Returns(false);
        var context = new Mock <HttpContext>();

        context.Setup(c => c.Response).Returns(response.Object);
        var nextFilterInvoked = false;

        await filter.HandleExceptionAsync(
            new ErrorContext(context.Object, new InvalidOperationException()),
            context =>
        {
            nextFilterInvoked = true;
            return(Task.CompletedTask);
        });

        Assert.True(nextFilterInvoked);
    }