Ejemplo n.º 1
0
        public async Task Exception_details_are_displayed()
        {
            var options = new DatabaseErrorPageOptions();

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception("Something bad happened"),
                databaseExists: false,
                pendingModelChanges: false,
                pendingMigrations: new string[] { },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.Contains("Something bad happened", content);
        }
Ejemplo n.º 2
0
        public async Task Existing_database_with_migrations_and_pending_model_changes_only_displays_apply_migrations()
        {
            var options = new DatabaseErrorPageOptions();

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: true,
                pendingModelChanges: true,
                pendingMigrations: new string[] { "111_MigrationOne" },
                options: options);

            var content = await ExecutePage(options, model);

            AssertHelpers.NotDisplaysScaffoldFirstMigration(typeof(BloggingContext), content);
            AssertHelpers.DisplaysApplyMigrations(typeof(BloggingContext), content);
            AssertHelpers.NotDisplaysScaffoldNextMigraion(typeof(BloggingContext), content);
        }
Ejemplo n.º 3
0
        public async Task No_database_or_migrations_only_displays_scaffold_first_migration()
        {
            var options = new DatabaseErrorPageOptions();

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: false,
                pendingModelChanges: false,
                pendingMigrations: new string[] { },
                options: options);

            var content = await ExecutePage(options, model);

            AssertHelpers.DisplaysScaffoldFirstMigration(typeof(BloggingContext), content);
            AssertHelpers.NotDisplaysApplyMigrations(typeof(BloggingContext), content);
            AssertHelpers.NotDisplaysScaffoldNextMigraion(typeof(BloggingContext), content);
        }
Ejemplo n.º 4
0
        public async Task MigrationsEndPointPath_is_respected()
        {
            var options = new DatabaseErrorPageOptions();

            options.MigrationsEndPointPath = "/HitThisEndPoint";

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: true,
                pendingModelChanges: false,
                pendingMigrations: new string[] { "111_MigrationOne" },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.Contains(options.MigrationsEndPointPath.Value, content);
        }
Ejemplo n.º 5
0
    private static async Task <string> ExecutePage(DatabaseErrorPageOptions options, DatabaseErrorPageModel model)
    {
        var page     = new DatabaseErrorPage();
        var context  = new Mock <HttpContext>();
        var response = new Mock <HttpResponse>();
        var stream   = new MemoryStream();

        response.Setup(r => r.Body).Returns(stream);
        context.Setup(c => c.Response).Returns(response.Object);

        page.Model = model;

        await page.ExecuteAsync(context.Object);

        var content = Encoding.ASCII.GetString(stream.ToArray());

        return(content);
    }
Ejemplo n.º 6
0
        public async Task ListMigrations_is_respected()
        {
            var options = DatabaseErrorPageOptions.ShowAll;

            options.ListMigrations = false;

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: true,
                pendingModelChanges: false,
                pendingMigrations: new string[] { "111_MigrationOne" },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.DoesNotContain("111_MigrationOne", content);
        }
Ejemplo n.º 7
0
        public async Task ShowExceptionDetails_is_respected()
        {
            var options = DatabaseErrorPageOptions.ShowAll;

            options.ShowExceptionDetails = false;

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception("Something bad happened"),
                databaseExists: false,
                pendingModelChanges: false,
                pendingMigrations: new string[] { },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.DoesNotContain("Something bad happened", content);
        }
Ejemplo n.º 8
0
        public async Task Inner_exception_details_are_displayed()
        {
            var options = new DatabaseErrorPageOptions();

            options.SetDefaultVisibility(true);

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception("Something bad happened", new Exception("Because something more badder happened")),
                databaseExists: false,
                pendingModelChanges: false,
                pendingMigrations: new string[] { },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.Contains("Something bad happened", content);
            Assert.Contains("Because something more badder happened", content);
        }
Ejemplo n.º 9
0
        public async Task EnableMigrationCommands_is_respected()
        {
            var options = new DatabaseErrorPageOptions {
                EnableMigrationCommands = false
            };

            options.SetDefaultVisibility(true);

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: true,
                pendingModelChanges: false,
                pendingMigrations: new string[] { "111_MigrationOne" },
                options: options);

            var content = await ExecutePage(options, model);

            Assert.DoesNotContain(options.MigrationsEndPointPath.Value, content);
        }
Ejemplo n.º 10
0
        public async Task Pending_model_changes_only_displays_scaffold_next_migration()
        {
            var options = new DatabaseErrorPageOptions();

            options.SetDefaultVisibility(true);

            var model = new DatabaseErrorPageModel(
                contextType: typeof(BloggingContext),
                exception: new Exception(),
                databaseExists: true,
                pendingModelChanges: true,
                pendingMigrations: new string[] { },
                options: options);

            var content = await ExecutePage(options, model);

            AssertHelpers.NotDisplaysScaffoldFirstMigration(typeof(BloggingContext), content);
            AssertHelpers.NotDisplaysApplyMigrations(typeof(BloggingContext), content);
            AssertHelpers.DisplaysScaffoldNextMigraion(typeof(BloggingContext), content);
        }
Ejemplo n.º 11
0
        public async Task Inner_exception_details_are_displayed()
        {
            var options = new DatabaseErrorPageOptions();

            var model = new DatabaseErrorPageModel(
                new Exception("Something bad happened", new Exception("Because something more badder happened")),
                new DatabaseContextDetails[]
            {
                new DatabaseContextDetails(
                    type: typeof(BloggingContext),
                    databaseExists: false,
                    pendingModelChanges: false,
                    pendingMigrations: new string[] { })
            },
                options: options,
                pathBase: PathString.Empty);

            var content = await ExecutePage(options, model);

            Assert.Contains("Something bad happened", content);
            Assert.Contains("Because something more badder happened", content);
        }
Ejemplo n.º 12
0
        public async Task Existing_database_with_migrations_only_displays_apply_migrations()
        {
            var options = new DatabaseErrorPageOptions();

            var model = new DatabaseErrorPageModel(
                new Exception(),
                new DatabaseContextDetails[]
            {
                new DatabaseContextDetails(
                    type: typeof(BloggingContext),
                    databaseExists: true,
                    pendingModelChanges: false,
                    pendingMigrations: new string[] { "111_MigrationOne" })
            },
                options: options,
                pathBase: PathString.Empty);

            var content = await ExecutePage(options, model);

            AssertHelpers.NotDisplaysScaffoldFirstMigration(typeof(BloggingContext), content);
            AssertHelpers.DisplaysApplyMigrations(typeof(BloggingContext), content);
            AssertHelpers.NotDisplaysScaffoldNextMigraion(typeof(BloggingContext), content);
        }
Ejemplo n.º 13
0
        public async Task PathBase_is_respected()
        {
            var options = new DatabaseErrorPageOptions();

            options.MigrationsEndPointPath = "/HitThisEndPoint";

            var model = new DatabaseErrorPageModel(
                new Exception(),
                new DatabaseContextDetails[]
            {
                new DatabaseContextDetails(
                    type: typeof(BloggingContext),
                    databaseExists: true,
                    pendingModelChanges: false,
                    pendingMigrations: new string[] { "111_MigrationOne" })
            },
                options: options,
                pathBase: "/PathBase");

            var content = await ExecutePage(options, model);

            Assert.Contains("/PathBase/HitThisEndPoint", content);
        }