public async Task Error_page_then_apply_migrations()
        {
            TestServer server = SetupTestServer <BloggingContextWithMigrations, ApplyMigrationsMiddleware>();
            var        client = server.CreateClient();

            var expectedMigrationsEndpoint = "/ApplyDatabaseMigrations";
            var expectedContextType        = typeof(BloggingContextWithMigrations).AssemblyQualifiedName;

            // Step One: Initial request with database failure
            HttpResponseMessage response = await client.GetAsync("http://localhost/");

            Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
            var content = await response.Content.ReadAsStringAsync();

            // Ensure the url we're going to test is what the page is using in it's JavaScript
            var javaScriptEncoder = new JavaScriptStringEncoder();

            Assert.Contains("req.open(\"POST\", \"" + JavaScriptEncode(expectedMigrationsEndpoint) + "\", true);", content);
            Assert.Contains("var formBody = \"context=" + JavaScriptEncode(UrlEncode(expectedContextType)) + "\";", content);

            // Step Two: Request to migrations endpoint
            var formData = new FormUrlEncodedContent(new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("context", expectedContextType)
            });

            response = await client.PostAsync("http://localhost" + expectedMigrationsEndpoint, formData);

            content = await response.Content.ReadAsStringAsync();

            Console.WriteLine(content);
            Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);

            // Step Three: Successful request after migrations applied
            response = await client.GetAsync("http://localhost/");

            content = await response.Content.ReadAsStringAsync();

            Assert.Equal("Saved a Blog", content);
        }
Esempio n. 2
0
 public string JavaScriptEncode(string content)
 {
     return(JavaScriptStringEncoder.JavaScriptStringEncode(content));
 }