Skip to content

Commit 26f425b

Browse files
remove .Wait()
1 parent bf929ca commit 26f425b

File tree

5 files changed

+69
-12
lines changed

5 files changed

+69
-12
lines changed

access-token-management/test/AccessTokenManagement.Tests/ClientTokenManagementApiTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ static ClientTokenManagementApiTests()
2828
_jwkJson = JsonSerializer.Serialize(jwk);
2929
}
3030

31-
public ClientTokenManagementApiTests()
31+
public override async ValueTask InitializeAsync()
3232
{
33+
await base.InitializeAsync();
3334
var services = new ServiceCollection();
3435

3536
services.AddDistributedMemoryCache();
@@ -55,6 +56,7 @@ public ClientTokenManagementApiTests()
5556
_clientFactory = provider.GetRequiredService<IHttpClientFactory>();
5657
_clientOptions = provider.GetRequiredService<IOptionsMonitor<ClientCredentialsClient>>().Get("test");
5758
}
59+
5860
public class ApiHandler : DelegatingHandler
5961
{
6062
private HttpMessageHandler? _innerHandler;

access-token-management/test/AccessTokenManagement.Tests/Framework/GenericHost.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
namespace Duende.AccessTokenManagement.Tests;
1616

17-
public class GenericHost
17+
public class GenericHost : IAsyncDisposable
1818
{
1919
public GenericHost(string baseAddress = "https://server")
2020
{
@@ -178,4 +178,23 @@ public Task IssueSessionCookieAsync(string sub, params Claim[] claims)
178178
{
179179
return IssueSessionCookieAsync(claims.Append(new Claim("sub", sub)).ToArray());
180180
}
181+
182+
public async ValueTask DisposeAsync()
183+
{
184+
await CastAndDispose(Server);
185+
await CastAndDispose(BrowserClient);
186+
await CastAndDispose(HttpClient);
187+
await CastAndDispose(HttpMessageHandler);
188+
await CastAndDispose(Logger);
189+
190+
return;
191+
192+
static async ValueTask CastAndDispose(IDisposable resource)
193+
{
194+
if (resource is IAsyncDisposable resourceAsyncDisposable)
195+
await resourceAsyncDisposable.DisposeAsync();
196+
else
197+
resource?.Dispose();
198+
}
199+
}
181200
}

access-token-management/test/AccessTokenManagement.Tests/Framework/IntegrationTestBase.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Duende.AccessTokenManagement.Tests;
1010

11-
public class IntegrationTestBase
11+
public class IntegrationTestBase : IAsyncLifetime
1212
{
1313
protected readonly IdentityServerHost IdentityServerHost;
1414
protected ApiHost ApiHost;
@@ -67,17 +67,27 @@ public IntegrationTestBase(string clientId = "web", Action<UserTokenManagementOp
6767
AccessTokenLifetime = 10
6868
});
6969

70-
IdentityServerHost.InitializeAsync().Wait();
71-
7270
ApiHost = new ApiHost(IdentityServerHost, "scope1");
73-
ApiHost.InitializeAsync().Wait();
7471

7572
AppHost = new AppHost(IdentityServerHost, ApiHost, clientId, configureUserTokenManagementOptions: configureUserTokenManagementOptions);
76-
AppHost.InitializeAsync().Wait();
7773
}
7874

7975
public async Task Login(string sub)
8076
{
8177
await IdentityServerHost.IssueSessionCookieAsync(new Claim("sub", sub));
8278
}
79+
80+
public virtual async ValueTask DisposeAsync()
81+
{
82+
await IdentityServerHost.DisposeAsync();
83+
await ApiHost.DisposeAsync();
84+
await AppHost.DisposeAsync();
85+
}
86+
87+
public virtual async ValueTask InitializeAsync()
88+
{
89+
await ApiHost.InitializeAsync();
90+
await AppHost.InitializeAsync();
91+
await IdentityServerHost.InitializeAsync();
92+
}
8393
}

identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/DPoP/Framework/GenericHost.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace Duende.IdentityModel.OidcClient.DPoP.Framework;
1313

14-
public class GenericHost
14+
public class GenericHost : IAsyncDisposable
1515
{
1616
public GenericHost(string baseAddress = "https://server")
1717
{
@@ -100,4 +100,21 @@ void ConfigureApp(IApplicationBuilder app)
100100

101101
OnConfigure(app);
102102
}
103+
104+
public async ValueTask DisposeAsync()
105+
{
106+
if (Server != null) await CastAndDispose(Server);
107+
if (HttpClient != null) await CastAndDispose(HttpClient);
108+
if (Logger != null) await CastAndDispose(Logger);
109+
110+
return;
111+
112+
static async ValueTask CastAndDispose(IDisposable resource)
113+
{
114+
if (resource is IAsyncDisposable resourceAsyncDisposable)
115+
await resourceAsyncDisposable.DisposeAsync();
116+
else
117+
resource?.Dispose();
118+
}
119+
}
103120
}

identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/DPoP/Framework/IntegrationTestBase.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,26 @@
33

44
namespace Duende.IdentityModel.OidcClient.DPoP.Framework;
55

6-
public class IntegrationTestBase
6+
public class IntegrationTestBase : IAsyncLifetime
77
{
88
protected readonly IdentityServerHost IdentityServerHost;
99
protected ApiHost ApiHost;
1010

1111
public IntegrationTestBase()
1212
{
1313
IdentityServerHost = new IdentityServerHost();
14-
IdentityServerHost.InitializeAsync().Wait();
15-
1614
ApiHost = new ApiHost(IdentityServerHost);
17-
ApiHost.InitializeAsync().Wait();
15+
}
16+
17+
public async ValueTask DisposeAsync()
18+
{
19+
await ApiHost.DisposeAsync();
20+
await IdentityServerHost.DisposeAsync();
21+
}
22+
23+
public async ValueTask InitializeAsync()
24+
{
25+
await ApiHost.InitializeAsync();
26+
await IdentityServerHost.InitializeAsync();
1827
}
1928
}

0 commit comments

Comments
 (0)