17
17
using Microsoft . EntityFrameworkCore ;
18
18
using Microsoft . EntityFrameworkCore . Infrastructure ;
19
19
using Microsoft . Extensions . DependencyInjection ;
20
+ using Microsoft . Extensions . Hosting ;
20
21
using Microsoft . Extensions . Logging ;
21
22
using Xunit ;
22
23
@@ -27,10 +28,19 @@ public class DatabaseErrorPageMiddlewareTest
27
28
[ Fact ]
28
29
public async Task Successful_requests_pass_thru ( )
29
30
{
30
- var builder = new WebHostBuilder ( ) . Configure ( app => app
31
- . UseDatabaseErrorPage ( )
32
- . UseMiddleware < SuccessMiddleware > ( ) ) ;
33
- var server = new TestServer ( builder ) ;
31
+ using var host = new HostBuilder ( )
32
+ . ConfigureWebHost ( webHostBuilder =>
33
+ {
34
+ webHostBuilder
35
+ . UseTestServer ( )
36
+ . Configure ( app => app
37
+ . UseDatabaseErrorPage ( )
38
+ . UseMiddleware < SuccessMiddleware > ( ) ) ;
39
+ } ) . Build ( ) ;
40
+
41
+ await host . StartAsync ( ) ;
42
+
43
+ var server = host . GetTestServer ( ) ;
34
44
35
45
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
36
46
@@ -53,10 +63,19 @@ public virtual async Task Invoke(HttpContext context)
53
63
[ Fact ]
54
64
public async Task Non_database_exceptions_pass_thru ( )
55
65
{
56
- var builder = new WebHostBuilder ( ) . Configure ( app => app
57
- . UseDatabaseErrorPage ( )
58
- . UseMiddleware < ExceptionMiddleware > ( ) ) ;
59
- var server = new TestServer ( builder ) ;
66
+ using var host = new HostBuilder ( )
67
+ . ConfigureWebHost ( webHostBuilder =>
68
+ {
69
+ webHostBuilder
70
+ . UseTestServer ( )
71
+ . Configure ( app => app
72
+ . UseDatabaseErrorPage ( )
73
+ . UseMiddleware < ExceptionMiddleware > ( ) ) ;
74
+ } ) . Build ( ) ;
75
+
76
+ await host . StartAsync ( ) ;
77
+
78
+ var server = host . GetTestServer ( ) ;
60
79
61
80
var ex = await Assert . ThrowsAsync < InvalidOperationException > ( async ( ) =>
62
81
await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ) ;
@@ -82,7 +101,8 @@ public async Task Existing_database_not_using_migrations_exception_passes_thru()
82
101
{
83
102
using ( var database = SqlTestStore . CreateScratch ( ) )
84
103
{
85
- TestServer server = SetupTestServer < BloggingContext , DatabaseErrorButNoMigrationsMiddleware > ( database ) ;
104
+ using var host = await SetupServer < BloggingContext , DatabaseErrorButNoMigrationsMiddleware > ( database ) ;
105
+ using var server = host . GetTestServer ( ) ;
86
106
var ex = await Assert . ThrowsAsync < DbUpdateException > ( async ( ) =>
87
107
await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ) ;
88
108
@@ -114,7 +134,8 @@ public async Task Error_page_displayed_no_migrations()
114
134
{
115
135
using ( var database = SqlTestStore . CreateScratch ( ) )
116
136
{
117
- TestServer server = SetupTestServer < BloggingContext , NoMigrationsMiddleware > ( database ) ;
137
+ using var host = await SetupServer < BloggingContext , NoMigrationsMiddleware > ( database ) ;
138
+ using var server = host . GetTestServer ( ) ;
118
139
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
119
140
120
141
Assert . Equal ( HttpStatusCode . InternalServerError , response . StatusCode ) ;
@@ -142,13 +163,13 @@ public virtual Task Invoke(HttpContext context)
142
163
[ ConditionalFact ]
143
164
[ OSSkipCondition ( OperatingSystems . Linux ) ]
144
165
[ OSSkipCondition ( OperatingSystems . MacOSX ) ]
145
- public void No_exception_on_diagnostic_event_received_when_null_state ( )
166
+ public async Task No_exception_on_diagnostic_event_received_when_null_state ( )
146
167
{
147
168
using ( var database = SqlTestStore . CreateScratch ( ) )
148
169
{
149
- using ( var server = SetupTestServer < BloggingContext , NoMigrationsMiddleware > ( database ) )
170
+ using ( var server = await SetupServer < BloggingContext , NoMigrationsMiddleware > ( database ) )
150
171
{
151
- using ( var db = server . Host . Services . GetService < BloggingContext > ( ) )
172
+ using ( var db = server . Services . GetService < BloggingContext > ( ) )
152
173
{
153
174
db . Blogs . Add ( new Blog ( ) ) ;
154
175
@@ -172,7 +193,8 @@ public async Task Error_page_displayed_pending_migrations()
172
193
{
173
194
using ( var database = SqlTestStore . CreateScratch ( ) )
174
195
{
175
- TestServer server = SetupTestServer < BloggingContextWithMigrations , PendingMigrationsMiddleware > ( database ) ;
196
+ using var host = await SetupServer < BloggingContextWithMigrations , PendingMigrationsMiddleware > ( database ) ;
197
+ using var server = host . GetTestServer ( ) ;
176
198
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
177
199
178
200
Assert . Equal ( HttpStatusCode . InternalServerError , response . StatusCode ) ;
@@ -208,7 +230,8 @@ public async Task Error_page_displayed_pending_model_changes()
208
230
{
209
231
using ( var database = SqlTestStore . CreateScratch ( ) )
210
232
{
211
- TestServer server = SetupTestServer < BloggingContextWithPendingModelChanges , PendingModelChangesMiddleware > ( database ) ;
233
+ using var host = await SetupServer < BloggingContextWithPendingModelChanges , PendingModelChangesMiddleware > ( database ) ;
234
+ using var server = host . GetTestServer ( ) ;
212
235
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
213
236
214
237
Assert . Equal ( HttpStatusCode . InternalServerError , response . StatusCode ) ;
@@ -245,7 +268,8 @@ public async Task Error_page_then_apply_migrations()
245
268
{
246
269
using ( var database = SqlTestStore . CreateScratch ( ) )
247
270
{
248
- TestServer server = SetupTestServer < BloggingContextWithMigrations , ApplyMigrationsMiddleware > ( database ) ;
271
+ using var host = await SetupServer < BloggingContextWithMigrations , ApplyMigrationsMiddleware > ( database ) ;
272
+ using var server = host . GetTestServer ( ) ;
249
273
var client = server . CreateClient ( ) ;
250
274
251
275
var expectedMigrationsEndpoint = "/ApplyDatabaseMigrations" ;
@@ -302,7 +326,11 @@ public async Task Customize_migrations_end_point()
302
326
303
327
using ( var database = SqlTestStore . CreateScratch ( ) )
304
328
{
305
- var builder = new WebHostBuilder ( )
329
+ using var host = new HostBuilder ( )
330
+ . ConfigureWebHost ( webHostBuilder =>
331
+ {
332
+ webHostBuilder
333
+ . UseTestServer ( )
306
334
. Configure ( app =>
307
335
{
308
336
app . UseDatabaseErrorPage ( new DatabaseErrorPageOptions
@@ -317,7 +345,11 @@ public async Task Customize_migrations_end_point()
317
345
services . AddDbContext < BloggingContextWithMigrations > (
318
346
optionsBuilder => optionsBuilder . UseSqlite ( database . ConnectionString ) ) ;
319
347
} ) ;
320
- var server = new TestServer ( builder ) ;
348
+ } ) . Build ( ) ;
349
+
350
+ await host . StartAsync ( ) ;
351
+
352
+ var server = host . GetTestServer ( ) ;
321
353
322
354
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
323
355
@@ -335,16 +367,24 @@ public async Task Pass_thru_when_context_not_in_services()
335
367
{
336
368
var logProvider = new TestLoggerProvider ( ) ;
337
369
338
- var builder = new WebHostBuilder ( )
339
- . Configure ( app =>
370
+ using var host = new HostBuilder ( )
371
+ . ConfigureWebHost ( webHostBuilder =>
340
372
{
341
- app . UseDatabaseErrorPage ( ) ;
342
- app . UseMiddleware < ContextNotRegisteredInServicesMiddleware > ( ) ;
373
+ webHostBuilder
374
+ . UseTestServer ( )
375
+ . Configure ( app =>
376
+ {
377
+ app . UseDatabaseErrorPage ( ) ;
378
+ app . UseMiddleware < ContextNotRegisteredInServicesMiddleware > ( ) ;
343
379
#pragma warning disable CS0618 // Type or member is obsolete
344
- app . ApplicationServices . GetService < ILoggerFactory > ( ) . AddProvider ( logProvider ) ;
380
+ app . ApplicationServices . GetService < ILoggerFactory > ( ) . AddProvider ( logProvider ) ;
345
381
#pragma warning restore CS0618 // Type or member is obsolete
346
- } ) ;
347
- var server = new TestServer ( builder ) ;
382
+ } ) ;
383
+ } ) . Build ( ) ;
384
+
385
+ await host . StartAsync ( ) ;
386
+
387
+ var server = host . GetTestServer ( ) ;
348
388
349
389
try
350
390
{
@@ -391,7 +431,8 @@ public async Task Pass_thru_when_exception_in_logic()
391
431
{
392
432
var logProvider = new TestLoggerProvider ( ) ;
393
433
394
- var server = SetupTestServer < BloggingContextWithSnapshotThatThrows , ExceptionInLogicMiddleware > ( database , logProvider ) ;
434
+ using var host = await SetupServer < BloggingContextWithSnapshotThatThrows , ExceptionInLogicMiddleware > ( database , logProvider ) ;
435
+ using var server = host . GetTestServer ( ) ;
395
436
396
437
try
397
438
{
@@ -430,7 +471,8 @@ public async Task Error_page_displayed_when_exception_wrapped()
430
471
{
431
472
using ( var database = SqlTestStore . CreateScratch ( ) )
432
473
{
433
- TestServer server = SetupTestServer < BloggingContext , WrappedExceptionMiddleware > ( database ) ;
474
+ using var host = await SetupServer < BloggingContext , WrappedExceptionMiddleware > ( database ) ;
475
+ using var server = host . GetTestServer ( ) ;
434
476
HttpResponseMessage response = await server . CreateClient ( ) . GetAsync ( "http://localhost/" ) ;
435
477
436
478
Assert . Equal ( HttpStatusCode . InternalServerError , response . StatusCode ) ;
@@ -461,29 +503,36 @@ public virtual Task Invoke(HttpContext context)
461
503
}
462
504
}
463
505
464
- private static TestServer SetupTestServer < TContext , TMiddleware > ( SqlTestStore database , ILoggerProvider logProvider = null )
506
+ private static async Task < IHost > SetupServer < TContext , TMiddleware > ( SqlTestStore database , ILoggerProvider logProvider = null )
465
507
where TContext : DbContext
466
508
{
467
- var builder = new WebHostBuilder ( )
468
- . Configure ( app =>
509
+ var host = new HostBuilder ( )
510
+ . ConfigureWebHost ( webHostBuilder =>
469
511
{
470
- app . UseDatabaseErrorPage ( ) ;
512
+ webHostBuilder
513
+ . UseTestServer ( )
514
+ . Configure ( app =>
515
+ {
516
+ app . UseDatabaseErrorPage ( ) ;
471
517
472
- app . UseMiddleware < TMiddleware > ( ) ;
518
+ app . UseMiddleware < TMiddleware > ( ) ;
473
519
474
- if ( logProvider != null )
475
- {
520
+ if ( logProvider != null )
521
+ {
476
522
#pragma warning disable CS0618 // Type or member is obsolete
477
- app . ApplicationServices . GetService < ILoggerFactory > ( ) . AddProvider ( logProvider ) ;
523
+ app . ApplicationServices . GetService < ILoggerFactory > ( ) . AddProvider ( logProvider ) ;
478
524
#pragma warning restore CS0618 // Type or member is obsolete
479
- }
480
- } )
481
- . ConfigureServices ( services =>
482
- {
483
- services . AddDbContext < TContext > ( optionsBuilder => optionsBuilder . UseSqlite ( database . ConnectionString ) ) ;
484
- } ) ;
525
+ }
526
+ } )
527
+ . ConfigureServices ( services =>
528
+ {
529
+ services . AddDbContext < TContext > ( optionsBuilder => optionsBuilder . UseSqlite ( database . ConnectionString ) ) ;
530
+ } ) ;
531
+ } ) . Build ( ) ;
532
+
533
+ await host . StartAsync ( ) ;
485
534
486
- return new TestServer ( builder ) ;
535
+ return host ;
487
536
}
488
537
489
538
private static UrlEncoder _urlEncoder = UrlEncoder . Default ;
0 commit comments