@@ -2368,6 +2368,29 @@ public async Task SupportsDisablingMiddlewareAutoRegistration(CreateBuilderFunc
2368
2368
Assert . True ( app . Properties . ContainsKey ( "__AuthorizationMiddlewareSet" ) ) ;
2369
2369
}
2370
2370
2371
+ [ Theory ]
2372
+ [ MemberData ( nameof ( CreateBuilderFuncs ) ) ]
2373
+ public void ImplementsIHostApplicationBuilderCorrectly ( CreateBuilderFunc createBuilder )
2374
+ {
2375
+ var builder = createBuilder ( ) ;
2376
+ var iHostApplicationBuilder = ( IHostApplicationBuilder ) builder ;
2377
+
2378
+ builder . Host . Properties [ "MyProp" ] = 1 ;
2379
+ Assert . Equal ( 1 , iHostApplicationBuilder . Properties [ "MyProp" ] ) ;
2380
+
2381
+ Assert . Same ( builder . Host . Properties , iHostApplicationBuilder . Properties ) ;
2382
+ Assert . Same ( builder . Configuration , iHostApplicationBuilder . Configuration ) ;
2383
+ Assert . Same ( builder . Logging , iHostApplicationBuilder . Logging ) ;
2384
+ Assert . Same ( builder . Services , iHostApplicationBuilder . Services ) ;
2385
+ Assert . True ( iHostApplicationBuilder . Environment . IsProduction ( ) ) ;
2386
+ Assert . NotNull ( iHostApplicationBuilder . Environment . ContentRootFileProvider ) ;
2387
+
2388
+ iHostApplicationBuilder . ConfigureContainer ( new MyServiceProviderFactory ( ) ) ;
2389
+
2390
+ var app = builder . Build ( ) ;
2391
+ Assert . IsType < MyServiceProvider > ( app . Services ) ;
2392
+ }
2393
+
2371
2394
[ Fact ]
2372
2395
public async Task UsingCreateBuilderResultsInRegexConstraintBeingPresent ( )
2373
2396
{
@@ -2829,4 +2852,25 @@ public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
2829
2852
} ;
2830
2853
}
2831
2854
}
2855
+
2856
+ private class MyServiceProviderFactory : IServiceProviderFactory < MyServiceProvider >
2857
+ {
2858
+ public MyServiceProvider CreateBuilder ( IServiceCollection services ) => new MyServiceProvider ( services ) ;
2859
+
2860
+ public IServiceProvider CreateServiceProvider ( MyServiceProvider containerBuilder )
2861
+ {
2862
+ containerBuilder . Build ( ) ;
2863
+ return containerBuilder ;
2864
+ }
2865
+ }
2866
+
2867
+ private class MyServiceProvider : IServiceProvider
2868
+ {
2869
+ private IServiceProvider _inner ;
2870
+ private IServiceCollection _services ;
2871
+
2872
+ public MyServiceProvider ( IServiceCollection services ) => _services = services ;
2873
+ public void Build ( ) => _inner = _services . BuildServiceProvider ( ) ;
2874
+ public object GetService ( Type serviceType ) => _inner . GetService ( serviceType ) ;
2875
+ }
2832
2876
}
0 commit comments