diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddict.Server.AspNetCore.IntegrationTests.csproj b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddict.Server.AspNetCore.IntegrationTests.csproj index e61c3a2d..b25c217b 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddict.Server.AspNetCore.IntegrationTests.csproj +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddict.Server.AspNetCore.IntegrationTests.csproj @@ -21,4 +21,9 @@ + + $(DefineConstants);SUPPORTS_GENERIC_HOST + + diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTestServer.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTestServer.cs new file mode 100644 index 00000000..3a8d8705 --- /dev/null +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTestServer.cs @@ -0,0 +1,64 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System.Threading.Tasks; +using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; +using OpenIddict.Server.FunctionalTests; + +namespace OpenIddict.Server.AspNetCore.FunctionalTests +{ + /// + /// Represents a test host used by the server integration tests. + /// + public class OpenIddictServerAspNetCoreIntegrationTestServer : OpenIddictServerIntegrationTestServer + { + public OpenIddictServerAspNetCoreIntegrationTestServer(TestServer server) + => Server = server; + +#if SUPPORTS_GENERIC_HOST + public OpenIddictServerAspNetCoreIntegrationTestServer(IHost host) + { + Host = host; + Server = host.GetTestServer(); + } +#endif + + /// + /// Gets the ASP.NET Core test server used by this instance. + /// + public TestServer Server { get; } + +#if SUPPORTS_GENERIC_HOST + /// + /// Gets the generic host used by this instance. + /// + public IHost Host { get; } +#endif + + public override ValueTask CreateClientAsync() + => new ValueTask( + new OpenIddictServerIntegrationTestClient(Server.CreateClient())); + + public override +#if SUPPORTS_GENERIC_HOST + async +#endif + ValueTask DisposeAsync() + { + // Dispose of the underlying test server. + Server.Dispose(); + +#if SUPPORTS_GENERIC_HOST + // Stop and dispose of the underlying generic host. + await Host.StopAsync(); + Host.Dispose(); +#else + return default; +#endif + } + } +} \ No newline at end of file diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Authentication.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Authentication.cs index 30a5dd66..6044eab1 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Authentication.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Authentication.cs @@ -19,7 +19,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractAuthorizationRequest_RequestIdParameterIsRejectedWhenRequestCachingIsDisabled() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -36,7 +37,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractAuthorizationRequest_InvalidRequestIdParameterIsRejected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddDistributedMemoryCache(); @@ -44,6 +45,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests .EnableAuthorizationEndpointCaching(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Exchange.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Exchange.cs index d5635587..ac39470a 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Exchange.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Exchange.cs @@ -21,7 +21,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractTokenRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -39,6 +39,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Introspection.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Introspection.cs index abd90b5c..d0794cc6 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Introspection.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Introspection.cs @@ -21,7 +21,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractIntrospectionRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -39,6 +39,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Revocation.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Revocation.cs index ebb801aa..a622a724 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Revocation.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Revocation.cs @@ -21,7 +21,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractRevocationRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -39,6 +39,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Session.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Session.cs index 1fd8b9fc..665f2768 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Session.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.Session.cs @@ -19,7 +19,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractLogoutRequest_RequestIdParameterIsRejectedWhenRequestCachingIsDisabled() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest @@ -36,7 +37,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ExtractLogoutRequest_InvalidRequestIdParameterIsRejected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddDistributedMemoryCache(); @@ -44,6 +45,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests .EnableLogoutEndpointCaching(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.cs b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.cs index 110393b7..08d4902e 100644 --- a/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.cs +++ b/test/OpenIddict.Server.AspNetCore.IntegrationTests/OpenIddictServerAspNetCoreIntegrationTests.cs @@ -16,6 +16,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using OpenIddict.Abstractions; using OpenIddict.Server.FunctionalTests; using Xunit; @@ -31,7 +32,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessChallenge_ReturnsParametersFromAuthenticationProperties() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge/custom"); @@ -45,6 +46,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge/custom", new OpenIddictRequest { @@ -70,7 +73,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessChallenge_ReturnsErrorFromAuthenticationProperties() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge/custom"); @@ -84,6 +87,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge/custom", new OpenIddictRequest { @@ -168,10 +173,10 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests [InlineData("/.WELL-KNOWN/JWKS/SUBPATH", OpenIddictServerEndpointType.Unknown)] [InlineData("/.well-known/jwks/subpath/", OpenIddictServerEndpointType.Unknown)] [InlineData("/.WELL-KNOWN/JWKS/SUBPATH/", OpenIddictServerEndpointType.Unknown)] - public Task ProcessRequest_MatchesCorrespondingEndpoint(string path, OpenIddictServerEndpointType type) + public async Task ProcessRequest_MatchesCorrespondingEndpoint(string path, OpenIddictServerEndpointType type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -185,8 +190,10 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act - return client.PostAsync(path, new OpenIddictRequest()); + await client.PostAsync(path, new OpenIddictRequest()); } [Theory] @@ -199,10 +206,10 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests [InlineData("/custom/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] [InlineData("/custom/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] [InlineData("/custom/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] - public Task ProcessRequest_AllowsOverridingEndpoint(string address, OpenIddictServerEndpointType type) + public async Task ProcessRequest_AllowsOverridingEndpoint(string address, OpenIddictServerEndpointType type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -223,8 +230,10 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act - return client.PostAsync(address, new OpenIddictRequest()); + await client.PostAsync(address, new OpenIddictRequest()); } [Theory] @@ -239,7 +248,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessRequest_RejectsInsecureHttpRequests(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -247,6 +256,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests .Configure(options => options.DisableTransportSecurityRequirement = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -268,7 +279,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessRequest_AllowsHandlingResponse(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -286,6 +297,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -306,7 +319,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessRequest_AllowsSkippingHandler(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -319,6 +332,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -330,7 +345,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessSignIn_ReturnsParametersFromAuthenticationProperties() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/signin/custom"); @@ -344,6 +359,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signin/custom", new OpenIddictRequest { @@ -369,7 +386,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests public async Task ProcessSignOut_ReturnsParametersFromAuthenticationProperties() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/signout/custom"); @@ -383,6 +400,8 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signout/custom", new OpenIddictRequest { @@ -396,10 +415,17 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests Assert.Equal("Bob l'Eponge", (string) response["string_parameter"]); } - protected override OpenIddictServerIntegrationTestClient CreateClient(Action configuration = null) + protected override +#if SUPPORTS_GENERIC_HOST + async +#endif + ValueTask CreateServerAsync(Action configuration = null) { +#if SUPPORTS_GENERIC_HOST + var builder = new HostBuilder(); +#else var builder = new WebHostBuilder(); - +#endif builder.UseEnvironment("Testing"); builder.ConfigureServices(ConfigureServices); @@ -416,7 +442,27 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests }); }); - builder.Configure(app => +#if SUPPORTS_GENERIC_HOST + builder.ConfigureWebHost(options => + { + options.UseTestServer(); + options.Configure(ConfigurePipeline); + }); +#else + builder.Configure(ConfigurePipeline); +#endif + +#if SUPPORTS_GENERIC_HOST + var host = await builder.StartAsync(); + + return new OpenIddictServerAspNetCoreIntegrationTestServer(host); +#else + var server = new TestServer(builder); + + return new ValueTask(new OpenIddictServerAspNetCoreIntegrationTestServer(server)); +#endif + + void ConfigurePipeline(IApplicationBuilder app) { app.Use(next => async context => { @@ -544,10 +590,7 @@ namespace OpenIddict.Server.AspNetCore.FunctionalTests name = "Bob le Magnifique" })); }); - }); - - var server = new TestServer(builder); - return new OpenIddictServerIntegrationTestClient(server.CreateClient()); + } } } } diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs index d2efaa09..e1798de4 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestClient.cs @@ -23,7 +23,7 @@ namespace OpenIddict.Server.FunctionalTests /// Exposes methods that allow sending OpenID Connect /// requests and extracting the corresponding responses. /// - public class OpenIddictServerIntegrationTestClient + public class OpenIddictServerIntegrationTestClient : IAsyncDisposable { /// /// Initializes a new instance of the OpenID Connect client. @@ -500,5 +500,12 @@ namespace OpenIddict.Server.FunctionalTests return new OpenIddictResponse(); } + + public ValueTask DisposeAsync() + { + HttpClient.Dispose(); + + return default; + } } } \ No newline at end of file diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestServer.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestServer.cs new file mode 100644 index 00000000..308134f7 --- /dev/null +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTestServer.cs @@ -0,0 +1,21 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System; +using System.Threading.Tasks; + +namespace OpenIddict.Server.FunctionalTests +{ + /// + /// Represents a test host used by the server integration tests. + /// + public abstract class OpenIddictServerIntegrationTestServer : IAsyncDisposable + { + public abstract ValueTask CreateClientAsync(); + + public virtual ValueTask DisposeAsync() => default; + } +} \ No newline at end of file diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs index 0a51ba19..307e9177 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Authentication.cs @@ -32,7 +32,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/authorize", new OpenIddictRequest()); @@ -46,7 +47,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_UnsupportedRequestParameterIsRejected() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -69,7 +71,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_UnsupportedRequestUriParameterIsRejected() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -97,7 +100,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -110,6 +113,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/authorize"); @@ -123,7 +128,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -141,6 +146,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/authorize"); @@ -152,7 +159,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractAuthorizationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -165,6 +172,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/authorize"); @@ -176,7 +185,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingClientIdCausesAnError() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -193,7 +203,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingRedirectUriCausesAnErrorForOpenIdRequests() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -216,7 +227,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_InvalidRedirectUriCausesAnError(string address, string message) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -235,7 +247,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingResponseTypeCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -261,7 +274,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_UnsafeResponseModeCausesAnError(string type, string mode) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -288,7 +302,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingNonceCausesAnErrorForOpenIdRequests(string type) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -312,7 +327,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingOpenIdScopeCausesAnErrorForOpenIdRequests(string type) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -334,7 +350,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_InvalidPromptCausesAnError(string prompt) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -364,7 +381,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_ValidPromptDoesNotCauseAnError(string prompt) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -378,6 +395,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -404,7 +423,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingCodeResponseTypeCausesAnErrorWhenCodeChallengeIsUsed(string type) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -428,7 +448,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingCodeChallengeCausesAnErrorWhenCodeChallengeMethodIsSpecified() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -449,7 +470,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_InvalidCodeChallengeMethodCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -471,7 +493,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_NoneFlowIsRejected() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -490,7 +513,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_UnknownResponseTypeParameterIsRejected() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -519,11 +543,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenCorrespondingFlowIsDisabled(string flow, string type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.GrantTypes.Remove(flow)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -543,7 +569,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenUnregisteredScopeIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(CreateApplicationManager(mock => { @@ -568,6 +594,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -586,7 +614,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsValidatedWhenScopeRegisteredInOptionsIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.RegisterScopes("registered_scope"); options.SetRevocationEndpointUris(Array.Empty()); @@ -631,6 +659,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -652,7 +682,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsValidatedWhenRegisteredScopeIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { var scope = new OpenIddictScope(); @@ -696,6 +726,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -717,11 +749,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestWithOfflineAccessScopeIsRejectedWhenRefreshTokenFlowIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.GrantTypes.Remove(GrantTypes.RefreshToken)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -740,7 +774,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_UnknownResponseModeParameterIsRejected() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -760,7 +795,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenCodeChallengeMethodIsMissing() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -781,13 +817,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenCodeChallengeMethodIsNotEnabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.Services.PostConfigure(options => options.CodeChallengeMethods.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -807,7 +845,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenPlainCodeChallengeMethodIsNotExplicitlyEnabled() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -831,7 +870,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsValidatedWhenCodeChallengeMethodIsRegistered(string method) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.Configure(options => options.CodeChallengeMethods.Clear()); @@ -847,6 +886,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -870,7 +911,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_PkceRequestWithForbiddenResponseTypeIsRejected(string type) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -893,7 +935,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_RequestIsRejectedWhenRedirectUriIsMissing() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -913,7 +956,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_MissingRedirectUriCausesAnException() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act and assert var exception = await Assert.ThrowsAsync(delegate @@ -934,7 +978,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_InvalidRedirectUriCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -947,6 +991,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -973,11 +1019,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1012,11 +1060,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1054,13 +1104,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1128,13 +1180,15 @@ namespace OpenIddict.Server.FunctionalTests } }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreGrantTypePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1176,13 +1230,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreGrantTypePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1215,11 +1271,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1259,13 +1317,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.RegisterScopes(Scopes.Email, Scopes.Profile); options.Configure(options => options.IgnoreScopePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1308,11 +1368,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1351,7 +1413,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetRevocationEndpointUris(Array.Empty()); options.DisableAuthorizationStorage(); @@ -1370,6 +1432,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1407,7 +1471,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetRevocationEndpointUris(Array.Empty()); options.DisableAuthorizationStorage(); @@ -1426,6 +1490,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1455,7 +1521,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1468,6 +1534,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1487,7 +1555,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1505,6 +1573,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1522,7 +1592,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateAuthorizationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1535,6 +1605,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1559,7 +1631,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleAuthorizationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1572,6 +1644,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1591,7 +1665,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleAuthorizationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1609,6 +1683,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1626,7 +1702,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleAuthorizationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1639,6 +1715,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1663,7 +1741,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_ResponseModeIsAutomaticallyInferred(string type, string mode) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1685,6 +1763,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1703,7 +1783,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1730,6 +1810,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1747,7 +1829,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1774,6 +1856,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1796,7 +1880,7 @@ namespace OpenIddict.Server.FunctionalTests // To emulate this behavior, the error property is manually set to null. // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1809,6 +1893,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1826,7 +1912,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_DoesNotSetStateWhenUserIsNotRedirected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1848,6 +1934,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1864,7 +1952,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_FlowsStateWhenRedirectUriIsUsed() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1878,6 +1966,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1895,7 +1985,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyAuthorizationResponse_DoesNotOverrideStateSetByApplicationCode() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1917,6 +2007,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1939,7 +2031,7 @@ namespace OpenIddict.Server.FunctionalTests // as validated and a signin grant is applied to return an authorization response. // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1953,6 +2045,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Discovery.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Discovery.cs index 03e70ebc..f5026dd1 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Discovery.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Discovery.cs @@ -31,7 +31,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractConfigurationRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/.well-known/openid-configuration", new OpenIddictRequest()); @@ -52,7 +53,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractConfigurationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -65,6 +66,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -78,7 +81,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractConfigurationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -96,6 +99,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -107,7 +112,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractConfigurationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -120,6 +125,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -138,7 +145,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateConfigurationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -151,6 +158,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -164,7 +173,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateConfigurationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -182,6 +191,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -193,7 +204,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateConfigurationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -206,6 +217,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -217,7 +230,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_IssuerIsAutomaticallyInferred() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -231,11 +245,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_RegisteredIssuerIsAlwaysPreferred() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetIssuer(new Uri("https://www.fabrikam.com/")); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -248,7 +264,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_AbsoluteEndpointsAreCorrectlyExposed() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetAuthorizationEndpointUris("https://www.fabrikam.com/path/authorization_endpoint") .SetCryptographyEndpointUris("https://www.fabrikam.com/path/cryptography_endpoint") @@ -260,6 +276,8 @@ namespace OpenIddict.Server.FunctionalTests .SetUserinfoEndpointUris("https://www.fabrikam.com/path/userinfo_endpoint"); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -340,7 +358,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_RelativeEndpointsAreCorrectlyComputed(string issuer, string[] endpoints) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetIssuer(new Uri(issuer, UriKind.Absolute)); @@ -354,6 +372,8 @@ namespace OpenIddict.Server.FunctionalTests .SetUserinfoEndpointUris(endpoints[7]); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -387,13 +407,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoClientAuthenticationMethodIsIncludedWhenTokenEndpointIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.GrantTypes.Clear()); options.Configure(options => options.GrantTypes.Add(GrantTypes.Implicit)); options.SetTokenEndpointUris(Array.Empty()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -405,7 +427,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SupportedClientAuthenticationMethodsAreIncludedWhenTokenEndpointIsEnabled() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -420,11 +443,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoClientAuthenticationMethodIsIncludedWhenIntrospectionEndpointIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetIntrospectionEndpointUris(Array.Empty()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -436,7 +461,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SupportedClientAuthenticationMethodsAreIncludedWhenIntrospectionEndpointIsEnabled() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -451,11 +477,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoClientAuthenticationMethodIsIncludedWhenRevocationEndpointIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetRevocationEndpointUris(Array.Empty()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -467,7 +495,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SupportedClientAuthenticationMethodsAreIncludedWhenRevocationEndpointIsEnabled() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -482,13 +511,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredGrantTypesAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.GrantTypes.Clear(); options.GrantTypes.Add(GrantTypes.AuthorizationCode); options.GrantTypes.Add(GrantTypes.Password); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var types = (string[]) response[Metadata.GrantTypesSupported]; @@ -503,11 +534,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoSupportedCodeChallengeMethodsPropertyIsReturnedWhenNoMethodIsConfigured() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.PostConfigure(options => options.CodeChallengeMethods.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -519,13 +552,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredCodeChallengeMethodsAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.CodeChallengeMethods.Clear(); options.CodeChallengeMethods.Add(CodeChallengeMethods.Sha256); options.CodeChallengeMethods.Add(CodeChallengeMethods.Plain); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var methods = (string[]) response[Metadata.CodeChallengeMethodsSupported]; @@ -540,11 +575,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoSupportedResponseModesPropertyIsReturnedWhenNoResponseModeIsConfigured() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.PostConfigure(options => options.ResponseModes.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -556,13 +593,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredResponseModesAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.ResponseModes.Clear(); options.ResponseModes.Add(ResponseModes.FormPost); options.ResponseModes.Add(ResponseModes.Fragment); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var modes = (string[]) response[Metadata.ResponseModesSupported]; @@ -577,11 +616,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoSupportedResponseTypesPropertyIsReturnedWhenNoResponseTypeIsConfigured() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.PostConfigure(options => options.ResponseTypes.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -593,13 +634,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredResponseTypesAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.ResponseTypes.Clear(); options.ResponseTypes.Add(ResponseTypes.Code); options.ResponseTypes.Add(ResponseTypes.Code + ' ' + ResponseTypes.IdToken); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var types = (string[]) response[Metadata.ResponseTypesSupported]; @@ -614,11 +657,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoSupportedScopesPropertyIsReturnedWhenNoScopeIsConfigured() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.PostConfigure(options => options.Scopes.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -630,13 +675,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredScopesAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.Scopes.Clear(); options.Scopes.Add(Scopes.OpenId); options.Scopes.Add("custom_scope"); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var scopes = (string[]) response[Metadata.ScopesSupported]; @@ -651,11 +698,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_NoSupportedClaimsPropertyIsReturnedWhenNoClaimIsConfigured() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.PostConfigure(options => options.Claims.Clear()); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -667,13 +716,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_ConfiguredClaimsAreReturned() { // Arrange - var client = CreateClient(options => options.Services.PostConfigure(options => + await using var server = await CreateServerAsync(options => options.Services.PostConfigure(options => { options.Claims.Clear(); options.Claims.Add(Claims.Profile); options.Claims.Add("custom_claim"); })); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var claims = (string[]) response[Metadata.ClaimsSupported]; @@ -688,7 +739,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SupportedSubjectTypesAreCorrectlyReturned() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -712,12 +764,14 @@ namespace OpenIddict.Server.FunctionalTests // Arrange var credentials = new SigningCredentials(Mock.Of(), algorithm); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.SigningCredentials.Clear()); options.AddSigningCredentials(credentials); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var algorithms = (string[]) response[Metadata.IdTokenSigningAlgValuesSupported]; @@ -730,13 +784,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SymmetricSigningKeysAreIgnored() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.SigningCredentials.Clear()); options.AddSigningKey(new SymmetricSecurityKey(new byte[256 / 8])); options.AddSigningCredentials(new SigningCredentials(Mock.Of(), Algorithms.RsaSha256)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var algorithms = (string[]) response[Metadata.IdTokenSigningAlgValuesSupported]; @@ -752,7 +808,7 @@ namespace OpenIddict.Server.FunctionalTests // Arrange var credentials = new SigningCredentials(Mock.Of(), SecurityAlgorithms.RsaSha256Signature); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.SigningCredentials.Clear()); options.AddSigningCredentials(credentials); @@ -760,6 +816,8 @@ namespace OpenIddict.Server.FunctionalTests options.AddSigningCredentials(credentials); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); var algorithms = (string[]) response[Metadata.IdTokenSigningAlgValuesSupported]; @@ -772,7 +830,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_SupportedParametersAreReturned() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -794,7 +853,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -807,6 +866,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -820,7 +881,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -838,6 +899,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -849,7 +912,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleConfigurationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -862,6 +925,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -873,7 +938,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyConfigurationResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -891,6 +956,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -902,7 +969,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyConfigurationResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -920,6 +987,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/openid-configuration"); @@ -937,7 +1006,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractCryptographyRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/.well-known/jwks", new OpenIddictRequest()); @@ -958,7 +1028,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractCryptographyRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -971,6 +1041,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -984,7 +1056,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractCryptographyRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1002,6 +1074,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1013,7 +1087,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractCryptographyRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1026,6 +1100,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1044,7 +1120,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateCryptographyRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1057,6 +1133,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1070,7 +1148,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateCryptographyRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1088,6 +1166,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1099,7 +1179,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateCryptographyRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1112,6 +1192,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1134,11 +1216,13 @@ namespace OpenIddict.Server.FunctionalTests var factory = Mock.Of(mock => !mock.IsSupportedAlgorithm(algorithm, It.IsAny())); var key = Mock.Of(mock => mock.CryptoProviderFactory == factory); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddSigningCredentials(new SigningCredentials(key, algorithm)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); var keys = (JsonElement) response[Parameters.Keys]; @@ -1164,12 +1248,14 @@ namespace OpenIddict.Server.FunctionalTests Q = Convert.FromBase64String("vQy5C++AzF+TRh6qwbKzOqt87ZHEHidIAh6ivRNewjzIgCWXpseVl7DimY1YdViOnw1VI7xY+EyiyTanq5caTqqB3KcDm2t40bJfrZuUcn/5puRIh1bKNDwIMLsuNCrjHmDlNbocqpYMOh0Pgw7ARNbqrnPjWsYGJPuMNFpax/U=") }; - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.SigningCredentials.Clear()); options.AddSigningKey(new RsaSecurityKey(parameters)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); var key = response[Parameters.Keys]?[0]; @@ -1222,12 +1308,14 @@ namespace OpenIddict.Server.FunctionalTests var algorithm = ECDsa.Create(parameters); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Configure(options => options.SigningCredentials.Clear()); options.AddSigningKey(new ECDsaSecurityKey(algorithm)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); var key = response[Parameters.Keys]?[0]; @@ -1244,7 +1332,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleCryptographyRequest_X509CertificatesAreCorrectlyExposed() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1266,7 +1355,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleCryptographyRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1279,6 +1368,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1292,7 +1383,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleCryptographyRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1310,6 +1401,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1321,7 +1414,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleCryptographyRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1334,6 +1427,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1345,7 +1440,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyCryptographyResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1363,6 +1458,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); @@ -1374,7 +1471,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyCryptographyResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1392,6 +1489,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/.well-known/jwks"); diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs index 7175a380..6231a46f 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Exchange.cs @@ -33,7 +33,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractTokenRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/token", new OpenIddictRequest()); @@ -54,7 +55,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractTokenRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -67,6 +68,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest()); @@ -80,7 +83,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractTokenRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -98,6 +101,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest()); @@ -109,7 +114,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractTokenRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -122,6 +127,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest()); @@ -133,7 +140,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingGrantTypeCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -150,7 +158,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingClientIdCausesAnErrorForCodeFlowRequests() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -169,7 +178,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingCodeCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -188,7 +198,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingRefreshTokenCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -209,7 +220,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingClientCredentialsCauseAnError(string identifier, string secret) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -232,7 +244,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_MissingUserCredentialsCauseAnError(string username, string password) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -251,7 +264,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_InvalidAuthorizationCodeCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -270,7 +284,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_InvalidRefreshTokenCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -288,7 +303,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_ExpiredAuthorizationCodeCausesAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -311,6 +326,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -328,7 +345,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_ExpiredRefreshTokenCausesAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -351,6 +368,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -367,7 +386,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenPresentersAreMissing() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -390,6 +409,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -408,7 +429,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenCallerIsNotAPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -431,6 +452,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -448,7 +471,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RefreshTokenCausesAnErrorWhenCallerIsNotAPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -471,6 +494,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -488,7 +513,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenRedirectUriIsMissing() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -512,6 +537,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -530,7 +557,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenRedirectUriIsInvalid() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -554,6 +581,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -573,7 +602,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestCausesErrorWhenSendingCodeVerifier() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -596,6 +625,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -614,7 +645,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenCodeVerifierIsMissing() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -639,6 +670,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -657,7 +690,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenCodeChallengeMethodIsMIssing() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -682,6 +715,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -701,7 +736,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenCodeChallengeMethodIsInvalid() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -726,6 +761,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -747,7 +784,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenCodeVerifierIsInvalid(string method, string challenge, string verifier) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -772,6 +809,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -792,7 +831,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_TokenRequestSucceedsWhenCodeVerifierIsValid(string method, string challenge, string verifier) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -826,6 +865,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -843,7 +884,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenScopeIsUnexpected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -867,6 +908,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -885,7 +928,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AuthorizationCodeCausesAnErrorWhenScopeIsInvalid() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -909,6 +952,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -927,7 +972,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RefreshTokenCausesAnErrorWhenScopeIsUnexpected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -950,6 +995,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -967,7 +1014,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RefreshTokenCausesAnErrorWhenScopeIsInvalid() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -990,6 +1037,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1011,13 +1060,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestIsRejectedWhenFlowIsNotEnabled(string flow) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.Configure(options => options.GrantTypes.Remove(flow)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1037,13 +1088,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestWithOfflineAccessScopeIsRejectedWhenRefreshTokenFlowIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.Configure(options => options.GrantTypes.Remove(GrantTypes.RefreshToken)); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1062,7 +1115,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestIsRejectedWhenUnregisteredScopeIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(CreateScopeManager(mock => { @@ -1073,6 +1126,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1091,7 +1146,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestIsValidatedWhenScopeRegisteredInOptionsIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.RegisterScopes("registered_scope"); @@ -1106,6 +1161,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1139,7 +1196,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync("scope_registered_in_database"); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.RegisterScopes("scope_registered_in_options"); options.SetRevocationEndpointUris(Array.Empty()); @@ -1158,6 +1215,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1180,7 +1239,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_ClientCredentialsRequestIsRejectedWhenCredentialsAreMissing(string identifier, string secret) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest @@ -1200,12 +1260,14 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_RequestWithoutClientIdIsRejectedWhenClientIdentificationIsRequired() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.Configure(options => options.AcceptAnonymousClients = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1230,11 +1292,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1266,11 +1330,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1302,11 +1368,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1340,11 +1408,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1381,11 +1451,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1424,13 +1496,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1468,13 +1542,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreGrantTypePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1516,13 +1592,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreGrantTypePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1564,7 +1642,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); @@ -1572,6 +1650,8 @@ namespace OpenIddict.Server.FunctionalTests options.Configure(options => options.IgnoreScopePermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1615,11 +1695,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1657,7 +1739,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1685,6 +1767,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableSlidingExpiration(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1721,7 +1805,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1751,6 +1835,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableSlidingExpiration(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1779,7 +1865,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1792,6 +1878,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1810,7 +1898,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1828,6 +1916,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1844,7 +1934,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateTokenRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1857,6 +1947,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1873,7 +1965,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleTokenRequest_AuthorizationCodeRevocationIsIgnoredWhenTokenStorageIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1919,6 +2011,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableSlidingExpiration(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1936,7 +2030,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleTokenRequest_RefreshTokenRevocationIsIgnoredWhenTokenStorageIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1970,6 +2064,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableSlidingExpiration(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1991,7 +2087,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2034,6 +2130,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2060,7 +2158,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2093,6 +2191,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2125,7 +2225,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2169,6 +2269,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2204,7 +2306,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2236,6 +2338,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2263,7 +2367,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(authorization); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2328,6 +2432,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2357,7 +2463,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(authorization); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2410,6 +2516,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2458,7 +2566,7 @@ namespace OpenIddict.Server.FunctionalTests .Returns(tokens.ToAsyncEnumerable()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2503,6 +2611,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2556,7 +2666,7 @@ namespace OpenIddict.Server.FunctionalTests .Returns(tokens.ToAsyncEnumerable()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2590,6 +2700,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2629,7 +2741,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2674,6 +2786,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2713,7 +2827,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2747,6 +2861,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2772,7 +2888,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictAuthorization()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2845,6 +2961,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableAuthorizationStorage(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2872,7 +2990,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictAuthorization()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2930,6 +3048,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableAuthorizationStorage(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2953,7 +3073,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3018,6 +3138,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3049,7 +3171,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3114,6 +3236,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3141,7 +3265,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3194,6 +3318,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3223,7 +3349,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3276,6 +3402,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3323,7 +3451,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3375,6 +3503,8 @@ namespace OpenIddict.Server.FunctionalTests options.DisableAuthorizationStorage(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3403,7 +3533,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleTokenRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3416,6 +3546,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3434,7 +3566,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleTokenRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3452,6 +3584,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3468,7 +3602,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleTokenRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3481,6 +3615,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3497,7 +3633,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyTokenResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3524,6 +3660,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3540,7 +3678,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyTokenResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3567,6 +3705,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Introspection.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Introspection.cs index 3f7efb60..16ae6f61 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Introspection.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Introspection.cs @@ -34,7 +34,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractIntrospectionRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/introspect", new OpenIddictRequest()); @@ -55,7 +56,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractIntrospectionRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -68,6 +69,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest()); @@ -81,7 +84,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractIntrospectionRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -99,6 +102,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/introspect"); @@ -110,7 +115,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractIntrospectionRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -123,6 +128,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/introspect"); @@ -134,7 +141,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_MissingTokenCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest @@ -151,13 +159,15 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_InvalidTokenCausesAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -173,7 +183,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_ExpiredTokenCausesAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -196,6 +206,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -212,7 +224,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AuthorizationCodeCausesAnErrorWhenPresentersAreMissing() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -233,6 +245,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -251,7 +265,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AuthorizationCodeCausesAnErrorWhenCallerIsNotAValidPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -274,6 +288,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -291,7 +307,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AccessTokenCausesAnErrorWhenCallerIsNotAValidAudienceOrPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -315,6 +331,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -332,7 +350,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_IdentityTokenCausesAnErrorWhenCallerIsNotAValidAudience() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -355,6 +373,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -372,7 +392,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_RefreshTokenCausesAnErrorWhenCallerIsNotAValidPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -395,6 +415,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -412,11 +434,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_RequestWithoutClientIdIsRejectedWhenClientIdentificationIsRequired() { // Arrange - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Configure(options => options.AcceptAnonymousClients = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -438,11 +462,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -477,13 +503,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -515,11 +543,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -551,11 +581,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -590,11 +622,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -621,7 +655,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -649,6 +683,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -665,7 +701,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -698,6 +734,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -712,7 +750,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateIntrospectionRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -740,6 +778,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -754,7 +794,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_BasicClaimsAreCorrectlyReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -782,6 +822,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(ValidateExpirationDate.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -808,7 +850,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_NonBasicAuthorizationCodeClaimsAreNotReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -831,6 +873,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -849,7 +893,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_NonBasicRefreshTokenClaimsAreNotReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -872,6 +916,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -904,7 +950,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -929,6 +975,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -962,7 +1010,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -985,6 +1033,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1017,7 +1067,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1044,6 +1094,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1082,7 +1134,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1116,6 +1168,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1161,7 +1215,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.UseReferenceTokens(); @@ -1184,6 +1238,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1209,7 +1265,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictAuthorization()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1276,6 +1332,8 @@ namespace OpenIddict.Server.FunctionalTests options.UseReferenceTokens(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1300,7 +1358,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1368,6 +1426,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1398,7 +1458,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1466,6 +1526,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1509,7 +1571,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -1551,6 +1613,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1578,7 +1642,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1606,6 +1670,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1622,7 +1688,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1655,6 +1721,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1669,7 +1737,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleIntrospectionRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1697,6 +1765,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1711,7 +1781,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyIntrospectionResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1744,6 +1814,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { @@ -1758,7 +1830,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyIntrospectionResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1776,6 +1848,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Revocation.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Revocation.cs index 8d89ddbd..9ecfca6f 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Revocation.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Revocation.cs @@ -31,7 +31,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractRevocationRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/revoke", new OpenIddictRequest()); @@ -52,7 +53,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractRevocationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -65,6 +66,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest()); @@ -78,7 +81,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractRevocationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -96,6 +99,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest()); @@ -107,7 +112,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractRevocationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -120,6 +125,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest()); @@ -131,7 +138,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_MissingTokenCausesAnError() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest @@ -148,7 +156,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_IdentityTokenCausesAnUnsupportedTokenTypeError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -171,6 +179,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -188,7 +198,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_AuthorizationCodeCausesAnErrorWhenCallerIsNotAValidPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -211,6 +221,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -228,7 +240,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_AccessTokenCausesAnErrorWhenCallerIsNotAValidAudienceOrPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -252,6 +264,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -269,7 +283,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_RefreshTokenCausesAnErrorWhenCallerIsNotAValidPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -292,6 +306,8 @@ namespace OpenIddict.Server.FunctionalTests options.RemoveEventHandler(NormalizeErrorResponse.Descriptor); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -309,11 +325,13 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_RequestWithoutClientIdIsRejectedWhenClientIdentificationIsRequired() { // Arrange - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Configure(options => options.AcceptAnonymousClients = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -336,11 +354,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -375,13 +395,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); builder.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -414,11 +436,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -451,11 +475,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -491,11 +517,13 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(builder => + await using var server = await CreateServerAsync(builder => { builder.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -525,7 +553,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -553,6 +581,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -569,7 +599,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -602,6 +632,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -616,7 +648,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateRevocationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -644,6 +676,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -664,7 +698,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(value: null); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -687,6 +721,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -722,7 +758,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(TokenTypeHints.RefreshToken); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -745,6 +781,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -783,7 +821,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(true); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -806,6 +844,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -830,7 +870,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleRevocationRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -858,6 +898,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -874,7 +916,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleRevocationRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -907,6 +949,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -921,7 +965,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleRevocationRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -949,6 +993,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -963,7 +1009,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyRevocationResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -996,6 +1042,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { @@ -1010,7 +1058,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyRevocationResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1028,6 +1076,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Session.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Session.cs index 93f79b47..913ffcfc 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Session.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Session.cs @@ -28,7 +28,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractLogoutRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/logout", new OpenIddictRequest()); @@ -49,7 +50,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractLogoutRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -62,6 +63,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -75,7 +78,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractLogoutRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -93,6 +96,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/logout"); @@ -104,7 +109,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractLogoutRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -117,6 +122,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/logout"); @@ -132,7 +139,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateLogoutRequest_RequestIsRejectedWhenRedirectUriIsInvalid(string address, string message) { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest @@ -155,11 +163,13 @@ namespace OpenIddict.Server.FunctionalTests .Returns(AsyncEnumerable.Empty()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest { @@ -195,13 +205,15 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); options.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest { @@ -243,7 +255,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(manager); @@ -251,6 +263,8 @@ namespace OpenIddict.Server.FunctionalTests options.Configure(options => options.IgnoreEndpointPermissions = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signout", new OpenIddictRequest { @@ -278,7 +292,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateLogoutRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -291,6 +305,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -304,7 +320,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateLogoutRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -322,6 +338,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -333,7 +351,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateLogoutRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -346,6 +364,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -364,7 +384,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleLogoutRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -377,6 +397,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -390,7 +412,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleLogoutRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -408,6 +430,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -419,7 +443,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleLogoutRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -432,6 +456,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -443,7 +469,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyLogoutResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -461,6 +487,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -472,7 +500,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyLogoutResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -490,6 +518,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest { @@ -505,12 +535,14 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyLogoutResponse_DoesNotSetStateWhenUserIsNotRedirected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/signout"); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signout", new OpenIddictRequest { @@ -525,12 +557,14 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyLogoutResponse_FlowsStateWhenRedirectUriIsUsed() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/signout"); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signout", new OpenIddictRequest { @@ -546,7 +580,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyLogoutResponse_DoesNotOverrideStateSetByApplicationCode() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/signout"); @@ -560,6 +594,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/signout", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Userinfo.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Userinfo.cs index 99d0666f..2b1ab0d7 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Userinfo.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.Userinfo.cs @@ -28,7 +28,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractUserinfoRequest_UnexpectedMethodReturnsAnError(string method) { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.SendAsync(method, "/connect/userinfo", new OpenIddictRequest()); @@ -49,7 +50,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractUserinfoRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -62,6 +63,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest()); @@ -75,7 +78,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractUserinfoRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -93,6 +96,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/userinfo"); @@ -104,7 +109,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ExtractUserinfoRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -117,6 +122,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/connect/userinfo"); @@ -128,7 +135,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_MissingTokenCausesAnError() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest @@ -144,7 +152,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_InvalidTokenCausesAnError() { // Arrange - var client = CreateClient(); + await using var server = await CreateServerAsync(); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest @@ -161,7 +170,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_ExpiredTokenCausesAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -182,6 +191,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -204,7 +215,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -232,6 +243,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -248,7 +261,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -281,6 +294,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -295,7 +310,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ValidateUserinfoRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -323,6 +338,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -337,7 +354,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_BasicClaimsAreCorrectlyReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -359,6 +376,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -376,7 +395,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_NonBasicClaimsAreNotReturnedWhenNoScopeWasGranted() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -406,6 +425,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -423,7 +444,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_ProfileClaimsAreCorrectlyReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -452,6 +473,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -468,7 +491,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_EmailClaimIsCorrectlyReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -492,6 +515,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -506,7 +531,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_PhoneClaimIsCorrectlyReturned() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -530,6 +555,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -551,7 +578,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -579,6 +606,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -595,7 +624,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -628,6 +657,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -642,7 +673,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task HandleUserinfoRequest_AllowsSkippingHandler() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -670,6 +701,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -684,7 +717,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyUserinfoResponse_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -717,6 +750,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { @@ -731,7 +766,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ApplyUserinfoResponse_ResponseContainsCustomParameters() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -764,6 +799,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/userinfo", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.cs b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.cs index 796ac9a1..5dc48b38 100644 --- a/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.cs +++ b/test/OpenIddict.Server.IntegrationTests/OpenIddictServerIntegrationTests.cs @@ -30,7 +30,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_UnknownEndpointCausesAnException() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act and assert var exception = await Assert.ThrowsAsync(delegate @@ -51,7 +52,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidEndpointCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetConfigurationEndpointUris("/authenticate"); @@ -65,6 +66,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -84,7 +87,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_UnsupportedGrantTypeThrowsAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -98,6 +101,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -120,7 +125,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MissingAccessTokenReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/authenticate"); @@ -134,6 +139,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -148,7 +155,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidAccessTokenReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/authenticate"); @@ -162,6 +169,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -176,7 +185,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ValidAccessTokenReturnsExpectedIdentity() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -207,6 +216,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -221,7 +232,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_IssuedAtIsMappedToCreationDate() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -255,6 +266,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -271,7 +284,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ExpiresAtIsMappedToExpirationDate() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -305,6 +318,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -321,7 +336,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_AuthorizedPartyIsMappedToPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -353,6 +368,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -369,7 +386,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ClientIdIsMappedToPresenter() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -401,6 +418,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -417,7 +436,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_SinglePublicAudienceIsMappedToPrivateClaims() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -449,6 +468,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -465,7 +486,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MultiplePublicAudiencesAreMappedToPrivateClaims() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -497,6 +518,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -513,7 +536,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_SinglePublicScopeIsMappedToPrivateClaims() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -545,6 +568,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -561,7 +586,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MultiplePublicScopesAreMappedToPrivateClaims() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -593,6 +618,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -609,7 +636,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MissingTokenTypeThrowsAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -640,6 +667,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -661,7 +690,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidTokenTypeThrowsAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/authenticate"); @@ -692,6 +721,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -712,7 +743,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MissingIdTokenHintReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/authenticate"); @@ -726,6 +757,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -740,7 +773,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidIdTokenHintReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/authenticate"); @@ -754,6 +787,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -768,7 +803,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ValidIdTokenHintReturnsExpectedIdentity() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetLogoutEndpointUris("/authenticate"); @@ -799,6 +834,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.GetAsync("/authenticate", new OpenIddictRequest { @@ -813,7 +850,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MissingAuthorizationCodeReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -827,6 +864,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -843,7 +882,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidAuthorizationCodeReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -857,6 +896,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -873,7 +914,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ValidAuthorizationCodeReturnsExpectedIdentity() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -905,6 +946,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -921,7 +964,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_MissingRefreshTokenReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -935,6 +978,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -950,7 +995,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_InvalidRefreshTokenReturnsNull() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -964,6 +1009,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -979,7 +1026,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessAuthentication_ValidRefreshTokenReturnsExpectedIdentity() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/authenticate"); @@ -1010,6 +1057,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/authenticate", new OpenIddictRequest { @@ -1025,7 +1074,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_UnknownEndpointCausesAnException() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act and assert var exception = await Assert.ThrowsAsync(delegate @@ -1040,7 +1090,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_InvalidEndpointCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetConfigurationEndpointUris("/challenge"); @@ -1054,6 +1104,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1067,7 +1119,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_ReturnsDefaultErrorForAuthorizationRequestsWhenNoneIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetAuthorizationEndpointUris("/challenge"); @@ -1081,6 +1133,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge", new OpenIddictRequest { @@ -1101,7 +1155,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_ReturnsDefaultErrorForTokenRequestsWhenNoneIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge"); @@ -1115,6 +1169,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge", new OpenIddictRequest { @@ -1133,7 +1189,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_ReturnsDefaultErrorForUserinfoRequestsWhenNoneIsSpecified() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetUserinfoEndpointUris("/challenge"); @@ -1163,6 +1219,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge", new OpenIddictRequest { @@ -1186,7 +1244,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge"); @@ -1208,6 +1266,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge", new OpenIddictRequest { @@ -1226,7 +1286,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessChallenge_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge"); @@ -1253,6 +1313,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge", new OpenIddictRequest { @@ -1269,7 +1331,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_UnknownEndpointCausesAnException() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act and assert var exception = await Assert.ThrowsAsync(delegate @@ -1284,7 +1347,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_InvalidEndpointCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetConfigurationEndpointUris("/signin"); @@ -1298,6 +1361,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1311,7 +1376,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NullIdentityCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1324,6 +1389,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1345,7 +1412,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NullAuthenticationTypeCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1358,6 +1425,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1380,7 +1449,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_MissingSubjectCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1393,6 +1462,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -1411,7 +1482,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ScopeDefaultsToOpenId() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1433,6 +1504,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1450,7 +1523,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ResourcesAreInferredFromAudiences() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1474,6 +1547,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1491,7 +1566,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AllowsOverridingDefaultTokensSelection() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1520,6 +1595,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1543,7 +1620,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAuthorizationCodeIsReturnedForCodeAndHybridFlowRequests(string type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1569,6 +1646,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1587,7 +1666,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ScopesCanBeOverridenForRefreshTokenRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.RegisterScopes(Scopes.Profile); @@ -1623,6 +1702,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1639,7 +1720,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ScopesAreReturnedWhenTheyDifferFromRequestedScopes() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.RegisterScopes(Scopes.Phone, Scopes.Profile); @@ -1655,6 +1736,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1676,7 +1759,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForImplicitAndHybridFlowRequests(string type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1702,6 +1785,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -1720,7 +1805,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForCodeGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1755,6 +1840,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1771,7 +1858,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForRefreshTokenGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1805,6 +1892,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1820,7 +1909,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForPasswordGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1846,6 +1935,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1862,7 +1953,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForClientCredentialsGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1888,6 +1979,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1904,7 +1997,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnAccessTokenIsReturnedForCustomGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.AllowCustomFlow("urn:ietf:params:oauth:grant-type:custom_grant"); @@ -1931,6 +2024,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1945,7 +2040,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ExpiresInIsReturnedWhenExpirationDateIsKnown() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -1959,6 +2054,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -1975,7 +2072,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NoRefreshTokenIsReturnedWhenOfflineAccessScopeIsNotGranted() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2001,6 +2098,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2017,7 +2116,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ARefreshTokenIsReturnedForCodeGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2053,6 +2152,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2069,7 +2170,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NoRefreshTokenIsReturnedForRefreshTokenGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2104,6 +2205,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2119,7 +2222,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NoRefreshTokenIsReturnedWhenSlidingExpirationIsDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.DisableSlidingExpiration(); @@ -2155,6 +2258,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2170,7 +2275,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ARefreshTokenIsReturnedForPasswordGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2197,6 +2302,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2213,7 +2320,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ARefreshTokenIsReturnedForClientCredentialsGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2240,6 +2347,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2256,7 +2365,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_ARefreshTokenIsReturnedForCustomGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.AllowCustomFlow("urn:ietf:params:oauth:grant-type:custom_grant"); @@ -2284,6 +2393,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2298,7 +2409,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_NoIdentityTokenIsReturnedWhenOfflineAccessScopeIsNotGranted() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2324,6 +2435,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2344,7 +2457,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForImplicitAndHybridFlowRequests(string type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2370,6 +2483,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -2388,7 +2503,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForCodeGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2424,6 +2539,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2440,7 +2557,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForRefreshTokenGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2475,6 +2592,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2490,7 +2609,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForPasswordGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2516,6 +2635,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2533,7 +2654,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForClientCredentialsGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2559,6 +2680,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2576,7 +2699,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AnIdentityTokenIsReturnedForCustomGrantRequests() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.AllowCustomFlow("urn:ietf:params:oauth:grant-type:custom_grant"); @@ -2603,6 +2726,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2625,7 +2750,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2647,6 +2772,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -2666,7 +2793,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2693,6 +2820,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2709,7 +2838,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_PrivateClaimsAreAutomaticallyRestored() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.UseRollingTokens(); @@ -2743,6 +2872,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2759,7 +2890,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_RefreshTokenIsIssuedForAuthorizationCodeRequestsWhenRollingTokensAreEnabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.UseRollingTokens(); @@ -2784,6 +2915,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2801,7 +2934,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_RefreshTokenIsAlwaysIssuedWhenRollingTokensAreEnabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.UseRollingTokens(); @@ -2825,6 +2958,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2840,7 +2975,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignIn_RefreshTokenIsNotIssuedWhenRollingTokensAreDisabled() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -2863,6 +2998,8 @@ namespace OpenIddict.Server.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2898,7 +3035,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -2933,6 +3070,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -2968,7 +3107,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3006,6 +3145,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3050,7 +3191,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.UseRollingTokens(); options.DisableAuthorizationStorage(); @@ -3077,6 +3218,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3115,7 +3258,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(false); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.UseRollingTokens(); options.DisableAuthorizationStorage(); @@ -3142,6 +3285,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3178,7 +3323,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3202,6 +3347,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3260,7 +3407,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.UseRollingTokens(); @@ -3298,6 +3445,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3352,7 +3501,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3388,6 +3537,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3429,7 +3580,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3453,6 +3604,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3488,7 +3641,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.DisableSlidingExpiration(); @@ -3514,6 +3667,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3552,7 +3707,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3576,6 +3731,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3616,7 +3773,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.SetRefreshTokenLifetime(lifetime: null); @@ -3642,6 +3799,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3682,7 +3841,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictToken()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.AddEventHandler(builder => { @@ -3706,6 +3865,8 @@ namespace OpenIddict.Server.FunctionalTests options.Services.AddSingleton(manager); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { @@ -3735,7 +3896,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictAuthorization()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(CreateApplicationManager(mock => { @@ -3775,6 +3936,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -3806,7 +3969,7 @@ namespace OpenIddict.Server.FunctionalTests .ReturnsAsync(new OpenIddictAuthorization()); }); - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddSingleton(CreateApplicationManager(mock => { @@ -3848,6 +4011,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { @@ -3866,7 +4031,8 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignOut_UnknownEndpointCausesAnException() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act and assert var exception = await Assert.ThrowsAsync(delegate @@ -3881,7 +4047,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignOut_InvalidEndpointCausesAnException() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetConfigurationEndpointUris("/signout"); @@ -3895,6 +4061,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act and assert var exception = await Assert.ThrowsAsync(delegate { @@ -3915,7 +4083,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignOut_AllowsRejectingRequest(string error, string description, string uri) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3928,6 +4096,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -3941,7 +4111,7 @@ namespace OpenIddict.Server.FunctionalTests public async Task ProcessSignOut_AllowsHandlingResponse() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -3959,6 +4129,8 @@ namespace OpenIddict.Server.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest()); @@ -4035,7 +4207,7 @@ namespace OpenIddict.Server.FunctionalTests }); } - protected abstract OpenIddictServerIntegrationTestClient CreateClient(Action configuration = null); + protected abstract ValueTask CreateServerAsync(Action configuration = null); protected OpenIddictApplicationManager CreateApplicationManager( Action>> configuration = null) diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTestServer.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTestServer.cs new file mode 100644 index 00000000..9aae2a54 --- /dev/null +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTestServer.cs @@ -0,0 +1,38 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System.Threading.Tasks; +using Microsoft.Owin.Testing; +using OpenIddict.Server.FunctionalTests; + +namespace OpenIddict.Server.Owin.FunctionalTests +{ + /// + /// Represents a test host used by the server integration tests. + /// + public class OpenIddictServerOwinIntegrationTestServer : OpenIddictServerIntegrationTestServer + { + public OpenIddictServerOwinIntegrationTestServer(TestServer server) + => Server = server; + + /// + /// Gets the ASP.NET Core test server used by this instance. + /// + public TestServer Server { get; } + + public override ValueTask CreateClientAsync() + => new ValueTask( + new OpenIddictServerIntegrationTestClient(Server.HttpClient)); + + public override ValueTask DisposeAsync() + { + // Dispose of the underlying test server. + Server.Dispose(); + + return default; + } + } +} \ No newline at end of file diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Authentication.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Authentication.cs index 7d433f66..357338cd 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Authentication.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Authentication.cs @@ -19,7 +19,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractAuthorizationRequest_RequestIdParameterIsRejectedWhenRequestCachingIsDisabled() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest @@ -36,7 +37,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractAuthorizationRequest_InvalidRequestIdParameterIsRejected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddDistributedMemoryCache(); @@ -44,6 +45,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests .EnableAuthorizationEndpointCaching(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/authorize", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Exchange.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Exchange.cs index 8b302c8b..0d594973 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Exchange.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Exchange.cs @@ -20,7 +20,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractTokenRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -38,6 +38,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/token", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Introspection.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Introspection.cs index ebef0709..557d9ee5 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Introspection.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Introspection.cs @@ -20,7 +20,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractIntrospectionRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -38,6 +38,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/introspect", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Revocation.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Revocation.cs index 72c1569d..3fda38a0 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Revocation.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Revocation.cs @@ -20,7 +20,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractRevocationRequest_MultipleClientCredentialsCauseAnError() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -38,6 +38,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/revoke", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Session.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Session.cs index b0e3fd61..92ec017e 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Session.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.Session.cs @@ -19,7 +19,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractLogoutRequest_RequestIdParameterIsRejectedWhenRequestCachingIsDisabled() { // Arrange - var client = CreateClient(options => options.EnableDegradedMode()); + await using var server = await CreateServerAsync(options => options.EnableDegradedMode()); + await using var client = await server.CreateClientAsync(); // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest @@ -36,7 +37,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ExtractLogoutRequest_InvalidRequestIdParameterIsRejected() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.Services.AddDistributedMemoryCache(); @@ -44,6 +45,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests .EnableLogoutEndpointCaching(); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/connect/logout", new OpenIddictRequest { diff --git a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.cs b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.cs index 713c7af5..6d1714c6 100644 --- a/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.cs +++ b/test/OpenIddict.Server.Owin.IntegrationTests/OpenIddictServerOwinIntegrationTests.cs @@ -30,7 +30,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ProcessChallenge_ReturnsErrorFromAuthenticationProperties() { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); options.SetTokenEndpointUris("/challenge/custom"); @@ -44,6 +44,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync("/challenge/custom", new OpenIddictRequest { @@ -128,10 +130,10 @@ namespace OpenIddict.Server.Owin.FunctionalTests [InlineData("/.WELL-KNOWN/JWKS/SUBPATH", OpenIddictServerEndpointType.Unknown)] [InlineData("/.well-known/jwks/subpath/", OpenIddictServerEndpointType.Unknown)] [InlineData("/.WELL-KNOWN/JWKS/SUBPATH/", OpenIddictServerEndpointType.Unknown)] - public Task ProcessRequest_MatchesCorrespondingEndpoint(string path, OpenIddictServerEndpointType type) + public async Task ProcessRequest_MatchesCorrespondingEndpoint(string path, OpenIddictServerEndpointType type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -145,8 +147,10 @@ namespace OpenIddict.Server.Owin.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act - return client.PostAsync(path, new OpenIddictRequest()); + await client.PostAsync(path, new OpenIddictRequest()); } [Theory] @@ -159,10 +163,10 @@ namespace OpenIddict.Server.Owin.FunctionalTests [InlineData("/custom/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] [InlineData("/custom/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] [InlineData("/custom/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] - public Task ProcessRequest_AllowsOverridingEndpoint(string address, OpenIddictServerEndpointType type) + public async Task ProcessRequest_AllowsOverridingEndpoint(string address, OpenIddictServerEndpointType type) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -183,8 +187,10 @@ namespace OpenIddict.Server.Owin.FunctionalTests }); }); + await using var client = await server.CreateClientAsync(); + // Act - return client.PostAsync(address, new OpenIddictRequest()); + await client.PostAsync(address, new OpenIddictRequest()); } [Theory] @@ -199,7 +205,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ProcessRequest_RejectsInsecureHttpRequests(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -207,6 +213,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests .Configure(options => options.DisableTransportSecurityRequirement = false); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -228,7 +236,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ProcessRequest_AllowsHandlingResponse(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -246,6 +254,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -266,7 +276,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests public async Task ProcessRequest_AllowsSkippingHandler(string address) { // Arrange - var client = CreateClient(options => + await using var server = await CreateServerAsync(options => { options.EnableDegradedMode(); @@ -279,6 +289,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests })); }); + await using var client = await server.CreateClientAsync(); + // Act var response = await client.PostAsync(address, new OpenIddictRequest()); @@ -286,7 +298,7 @@ namespace OpenIddict.Server.Owin.FunctionalTests Assert.Equal("Bob le Magnifique", (string) response["name"]); } - protected override OpenIddictServerIntegrationTestClient CreateClient(Action configuration = null) + protected override ValueTask CreateServerAsync(Action configuration = null) { var services = new ServiceCollection(); ConfigureServices(services); @@ -402,7 +414,8 @@ namespace OpenIddict.Server.Owin.FunctionalTests }); }); - return new OpenIddictServerIntegrationTestClient(server.HttpClient); + return new ValueTask( + new OpenIddictServerOwinIntegrationTestServer(server)); } } }