Skip to content

Commit 8994e80

Browse files
committed
Added tests
1 parent 2325981 commit 8994e80

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

src/Hosting/Hosting/test/WebHostBuilderTests.cs

+65-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,54 @@ public async Task StartupStaticCtorThrows_Fallback(IWebHostBuilder builder)
6868
}
6969
}
7070

71+
[Theory]
72+
[MemberData(nameof(DefaultWebHostBuildersWithConfig))]
73+
public async Task MultipleUseStartupCallsLastWins(IWebHostBuilder builder)
74+
{
75+
var server = new TestServer();
76+
var host = builder.UseServer(server)
77+
.UseStartup<StartupCtorThrows>()
78+
.UseStartup(context => throw new InvalidOperationException("This doesn't run"))
79+
.Configure(app =>
80+
{
81+
throw new InvalidOperationException("This doesn't run");
82+
})
83+
.Configure(app =>
84+
{
85+
app.Run(context =>
86+
{
87+
return context.Response.WriteAsync("This wins");
88+
});
89+
})
90+
.Build();
91+
using (host)
92+
{
93+
await host.StartAsync();
94+
await AssertResponseContains(server.RequestDelegate, "This wins");
95+
}
96+
}
97+
98+
[Theory]
99+
[MemberData(nameof(DefaultWebHostBuildersWithConfig))]
100+
public async Task UseStartupFactoryWorks(IWebHostBuilder builder)
101+
{
102+
void ConfigureServices(IServiceCollection services) { }
103+
void Configure(IApplicationBuilder app)
104+
{
105+
app.Run(context => context.Response.WriteAsync("UseStartupFactoryWorks"));
106+
}
107+
108+
var server = new TestServer();
109+
var host = builder.UseServer(server)
110+
.UseStartup(context => new DelegatingStartup(ConfigureServices, Configure))
111+
.Build();
112+
using (host)
113+
{
114+
await host.StartAsync();
115+
await AssertResponseContains(server.RequestDelegate, "UseStartupFactoryWorks");
116+
}
117+
}
118+
71119
[Theory]
72120
[MemberData(nameof(DefaultWebHostBuildersWithConfig))]
73121
public async Task StartupCtorThrows_Fallback(IWebHostBuilder builder)
@@ -199,7 +247,7 @@ public void ConfigureDefaultServiceProviderWithContext(IWebHostBuilder builder)
199247
options.ValidateScopes = true;
200248
});
201249

202-
using var host = hostBuilder.Build();
250+
using var host = hostBuilder.Build();
203251
Assert.Throws<InvalidOperationException>(() => host.Start());
204252
Assert.True(configurationCallbackCalled);
205253
}
@@ -1218,7 +1266,7 @@ public void UseConfigurationWithSectionAddsSubKeys(IWebHostBuilder builder)
12181266

12191267
Assert.Equal("nestedvalue", builder.GetSetting("key"));
12201268

1221-
using var host = builder.Build();
1269+
using var host = builder.Build();
12221270
var appConfig = host.Services.GetRequiredService<IConfiguration>();
12231271
Assert.Equal("nestedvalue", appConfig["key"]);
12241272
}
@@ -1574,6 +1622,21 @@ public void Configure(IWebHostBuilder builder)
15741622
}
15751623
}
15761624

1625+
public class DelegatingStartup
1626+
{
1627+
private readonly Action<IServiceCollection> _configureServices;
1628+
private readonly Action<IApplicationBuilder> _configure;
1629+
1630+
public DelegatingStartup(Action<IServiceCollection> configureServices, Action<IApplicationBuilder> configure)
1631+
{
1632+
_configureServices = configureServices;
1633+
_configure = configure;
1634+
}
1635+
1636+
public void ConfigureServices(IServiceCollection services) => _configureServices(services);
1637+
public void Configure(IApplicationBuilder app) => _configure(app);
1638+
}
1639+
15771640
public class StartupWithResolvedDisposableThatThrows
15781641
{
15791642
public StartupWithResolvedDisposableThatThrows(DisposableService service)

0 commit comments

Comments
 (0)