Skip to content

Commit 3381a40

Browse files
authored
Include OWIN into solution filter (#627)
1 parent e420b2d commit 3381a40

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

Microsoft.AspNetCore.SystemWebAdapters.slnf

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
"solution": {
33
"path": "Microsoft.AspNetCore.SystemWebAdapters.slnx",
44
"projects": [
5+
"src\\Aspire.Hosting.IncrementalMigration\\Aspire.Hosting.IncrementalMigration.csproj",
6+
"src\\Aspire.Microsoft.AspNetCore.SystemWebAdapters\\Aspire.Microsoft.AspNetCore.SystemWebAdapters.csproj",
57
"src\\Microsoft.AspNetCore.SystemWebAdapters.Abstractions\\Microsoft.AspNetCore.SystemWebAdapters.Abstractions.csproj",
68
"src\\Microsoft.AspNetCore.SystemWebAdapters.CoreServices\\Microsoft.AspNetCore.SystemWebAdapters.CoreServices.csproj",
79
"src\\Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices\\Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices.csproj",
10+
"src\\Microsoft.AspNetCore.SystemWebAdapters.Owin\\Microsoft.AspNetCore.SystemWebAdapters.Owin.csproj",
811
"src\\Microsoft.AspNetCore.SystemWebAdapters\\Microsoft.AspNetCore.SystemWebAdapters.csproj",
9-
"src\\Aspire.Hosting.IncrementalMigration\\Aspire.Hosting.IncrementalMigration.csproj",
10-
"src\\Aspire.Microsoft.AspNetCore.SystemWebAdapters\\Aspire.Microsoft.AspNetCore.SystemWebAdapters.csproj",
1112
"test\\Microsoft.AspNetCore.SystemWebAdapters.Apis.Tests\\Microsoft.AspNetCore.SystemWebAdapters.Apis.Tests.csproj",
1213
"test\\Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests\\Microsoft.AspNetCore.SystemWebAdapters.CoreServices.Tests.csproj",
1314
"test\\Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices.Tests\\Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices.Tests.csproj",
1415
"test\\Microsoft.AspNetCore.SystemWebAdapters.NuGet.Tests\\Microsoft.AspNetCore.SystemWebAdapters.NuGet.Tests.csproj",
16+
"test\\Microsoft.AspNetCore.SystemWebAdapters.Owin.Tests\\Microsoft.AspNetCore.SystemWebAdapters.Owin.Tests.csproj",
1517
"test\\Microsoft.AspNetCore.SystemWebAdapters.Tests\\Microsoft.AspNetCore.SystemWebAdapters.Tests.csproj"
1618
]
1719
}

test/Microsoft.AspNetCore.SystemWebAdapters.Owin.Tests/OwinAppTests.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public class OwinAppTests
2525
public async Task EventIntegration()
2626
{
2727
// Arrange
28-
var result = new Result();
28+
var tcs = new TaskCompletionSource<Result>();
2929
var builder = WebApplication.CreateSlimBuilder();
3030

3131
builder.Logging.AddDebug();
3232
builder.WebHost.UseTestServer(options => options.AllowSynchronousIO = true);
3333

34-
builder.Services.AddSingleton<IStartupFilter>(new ResultWriterStartupFilter(result));
34+
builder.Services.AddSingleton<IStartupFilter>(new ResultWriterStartupFilter(tcs));
3535
builder.Services.AddSystemWebAdapters()
3636
.AddOwinApp(app =>
3737
{
@@ -64,6 +64,8 @@ public async Task EventIntegration()
6464
using var response = await app.GetTestClient().GetAsync(new Uri("/", UriKind.Relative));
6565

6666
// Assert
67+
var result = await tcs.Task;
68+
6769
Assert.Equal([
6870
"Before: AuthN",
6971
"Before: Owin1a",
@@ -87,12 +89,12 @@ public async Task EventIntegration()
8789
public async Task UseOwinTests()
8890
{
8991
// Arrange
90-
var result = new Result();
92+
var tcs = new TaskCompletionSource<Result>();
9193
var builder = WebApplication.CreateSlimBuilder();
9294

9395
builder.WebHost.UseTestServer(options => options.AllowSynchronousIO = true);
9496

95-
builder.Services.AddSingleton<IStartupFilter>(new ResultWriterStartupFilter(result));
97+
builder.Services.AddSingleton<IStartupFilter>(new ResultWriterStartupFilter(tcs));
9698

9799
var app = builder.Build();
98100

@@ -125,6 +127,7 @@ public async Task UseOwinTests()
125127
var response = await app.GetTestClient().GetStringAsync(new Uri("/", UriKind.Relative));
126128

127129
// Assert
130+
var result = await tcs.Task;
128131
Assert.Equal("Hello", response);
129132
Assert.Equal([
130133
"Before: a",
@@ -169,14 +172,21 @@ public override Task Invoke(IOwinContext context)
169172
}
170173
}
171174

172-
private sealed class ResultWriterStartupFilter(Result result) : IStartupFilter
175+
// Use a TaskCompletionSource to make sure we wait until things are completed
176+
private sealed class ResultWriterStartupFilter(TaskCompletionSource<Result> tcs) : IStartupFilter
173177
{
174178
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
175179
=> builder =>
176180
{
177181
builder.Use(async (ctx, next) =>
178182
{
183+
var result = new Result();
179184
ctx.Features.Set(result);
185+
ctx.Response.OnCompleted(() =>
186+
{
187+
tcs.SetResult(result);
188+
return Task.CompletedTask;
189+
});
180190
await next(ctx);
181191
});
182192
next(builder);

0 commit comments

Comments
 (0)