diff --git a/OpenIddict.sln b/OpenIddict.sln index 7e3f8cf0..e87ef702 100644 --- a/OpenIddict.sln +++ b/OpenIddict.sln @@ -107,9 +107,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ .github\workflows\build.yml = .github\workflows\build.yml EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenIddict.Server.Quartz", "src\OpenIddict.Server.Quartz\OpenIddict.Server.Quartz.csproj", "{FD150A90-1997-45C7-9EBE-7C6E62E464E8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenIddict.Quartz", "src\OpenIddict.Quartz\OpenIddict.Quartz.csproj", "{FD150A90-1997-45C7-9EBE-7C6E62E464E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenIddict.Server.Quartz.Tests", "test\OpenIddict.Server.Quartz.Tests\OpenIddict.Server.Quartz.Tests.csproj", "{01420929-33B8-4B60-A618-8C8B5F139630}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenIddict.Quartz.Tests", "test\OpenIddict.Quartz.Tests\OpenIddict.Quartz.Tests.csproj", "{01420929-33B8-4B60-A618-8C8B5F139630}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/samples/Mvc.Server/Mvc.Server.csproj b/samples/Mvc.Server/Mvc.Server.csproj index 164c4213..5b8b0016 100644 --- a/samples/Mvc.Server/Mvc.Server.csproj +++ b/samples/Mvc.Server/Mvc.Server.csproj @@ -11,7 +11,7 @@ - + diff --git a/samples/Mvc.Server/Startup.cs b/samples/Mvc.Server/Startup.cs index 7822d5f2..ba38ee1a 100644 --- a/samples/Mvc.Server/Startup.cs +++ b/samples/Mvc.Server/Startup.cs @@ -73,6 +73,9 @@ namespace Mvc.Server // and configure OpenIddict to use the specified MongoDB database: // options.UseMongoDb() // .UseDatabase(new MongoClient().GetDatabase("openiddict")); + + // Enable Quartz.NET integration. + options.UseQuartz(); }) // Register the OpenIddict server components. @@ -110,9 +113,6 @@ namespace Mvc.Server .EnableVerificationEndpointPassthrough() .DisableTransportSecurityRequirement(); // During development, you can disable the HTTPS requirement. - // Enable Quartz.NET integration. - options.UseQuartz(); - // Note: if you don't want to specify a client_id when sending // a token or revocation request, uncomment the following line: // diff --git a/src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx b/src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx index b23c9116..18e595bb 100644 --- a/src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx +++ b/src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx @@ -481,7 +481,7 @@ Consider using 'options.AddSigningCredentials(SigningCredentials)' instead.{Locked} - Dependency injection support must be enabled in Quartz.NET when using the OpenIddict server integration. + Dependency injection support must be enabled in Quartz.NET when using the OpenIddict integration. To enable DI support, call 'services.AddQuartz(options => options.UseMicrosoftDependencyInjectionJobFactory())' or 'services.AddQuartz(options => options.UseMicrosoftDependencyInjectionScopedJobFactory())'. {Locked} @@ -1369,7 +1369,7 @@ Consider creating non-generic classes derived from the default entities for the {Locked} - The core services must be registered when enabling the OpenIddict server Quartz.NET integration. + The core services must be registered when enabling the OpenIddict Quartz.NET integration. To register the OpenIddict core services, reference the 'OpenIddict.Core' package and call 'services.AddOpenIddict().AddCore()' from 'ConfigureServices'. {Locked} diff --git a/src/OpenIddict.Server.Quartz/OpenIddict.Server.Quartz.csproj b/src/OpenIddict.Quartz/OpenIddict.Quartz.csproj similarity index 64% rename from src/OpenIddict.Server.Quartz/OpenIddict.Server.Quartz.csproj rename to src/OpenIddict.Quartz/OpenIddict.Quartz.csproj index b81c07fd..1cbfb07a 100644 --- a/src/OpenIddict.Server.Quartz/OpenIddict.Server.Quartz.csproj +++ b/src/OpenIddict.Quartz/OpenIddict.Quartz.csproj @@ -7,12 +7,12 @@ - Quartz.NET integration package for the OpenIddict server services. - $(PackageTags);quartz;server + Quartz.NET integration package for OpenIddict. + $(PackageTags);quartz - + diff --git a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzBuilder.cs b/src/OpenIddict.Quartz/OpenIddictQuartzBuilder.cs similarity index 71% rename from src/OpenIddict.Server.Quartz/OpenIddictServerQuartzBuilder.cs rename to src/OpenIddict.Quartz/OpenIddictQuartzBuilder.cs index 0c538b55..f9e62c1e 100644 --- a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzBuilder.cs +++ b/src/OpenIddict.Quartz/OpenIddictQuartzBuilder.cs @@ -6,22 +6,21 @@ using System; using System.ComponentModel; -using OpenIddict.Server.Quartz; +using OpenIddict.Quartz; using SR = OpenIddict.Abstractions.OpenIddictResources; namespace Microsoft.Extensions.DependencyInjection { /// - /// Exposes the necessary methods required to configure - /// the OpenIddict server Quartz.NET integration. + /// Exposes the necessary methods required to configure the OpenIddict Quartz.NET integration. /// - public class OpenIddictServerQuartzBuilder + public class OpenIddictQuartzBuilder { /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// /// The services collection. - public OpenIddictServerQuartzBuilder(IServiceCollection services) + public OpenIddictQuartzBuilder(IServiceCollection services) => Services = services ?? throw new ArgumentNullException(nameof(services)); /// @@ -31,12 +30,12 @@ namespace Microsoft.Extensions.DependencyInjection public IServiceCollection Services { get; } /// - /// Amends the default OpenIddict server Quartz.NET configuration. + /// Amends the default OpenIddict Quartz.NET configuration. /// /// The delegate used to configure the OpenIddict options. /// This extension can be safely called multiple times. - /// The . - public OpenIddictServerQuartzBuilder Configure(Action configuration) + /// The . + public OpenIddictQuartzBuilder Configure(Action configuration) { if (configuration is null) { @@ -51,23 +50,23 @@ namespace Microsoft.Extensions.DependencyInjection /// /// Disables authorizations pruning. /// - /// The . - public OpenIddictServerQuartzBuilder DisableAuthorizationPruning() + /// The . + public OpenIddictQuartzBuilder DisableAuthorizationPruning() => Configure(options => options.DisableAuthorizationPruning = true); /// /// Disables tokens pruning. /// - /// The . - public OpenIddictServerQuartzBuilder DisableTokenPruning() + /// The . + public OpenIddictQuartzBuilder DisableTokenPruning() => Configure(options => options.DisableTokenPruning = true); /// /// Sets the number of times a failed Quartz.NET job can be retried. /// /// The number of times a failed Quartz.NET job can be retried. - /// The . - public OpenIddictServerQuartzBuilder SetMaximumRefireCount(int count) + /// The . + public OpenIddictQuartzBuilder SetMaximumRefireCount(int count) { if (count < 0) { @@ -81,8 +80,8 @@ namespace Microsoft.Extensions.DependencyInjection /// Sets the minimum lifespan authorizations must have to be pruned. /// /// The minimum lifespan authorizations must have to be pruned. - /// The . - public OpenIddictServerQuartzBuilder SetMinimumAuthorizationLifespan(TimeSpan lifespan) + /// The . + public OpenIddictQuartzBuilder SetMinimumAuthorizationLifespan(TimeSpan lifespan) { if (lifespan < TimeSpan.FromMinutes(10)) { @@ -96,8 +95,8 @@ namespace Microsoft.Extensions.DependencyInjection /// Sets the minimum lifespan tokens must have to be pruned. /// /// The minimum lifespan tokens must have to be pruned. - /// The . - public OpenIddictServerQuartzBuilder SetMinimumTokenLifespan(TimeSpan lifespan) + /// The . + public OpenIddictQuartzBuilder SetMinimumTokenLifespan(TimeSpan lifespan) { if (lifespan < TimeSpan.FromMinutes(10)) { diff --git a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzExtensions.cs b/src/OpenIddict.Quartz/OpenIddictQuartzExtensions.cs similarity index 67% rename from src/OpenIddict.Server.Quartz/OpenIddictServerQuartzExtensions.cs rename to src/OpenIddict.Quartz/OpenIddictQuartzExtensions.cs index a26ebe0b..e0756c71 100644 --- a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzExtensions.cs +++ b/src/OpenIddict.Quartz/OpenIddictQuartzExtensions.cs @@ -7,24 +7,24 @@ using System; using System.Linq; using Microsoft.Extensions.DependencyInjection.Extensions; -using OpenIddict.Server.Quartz; +using OpenIddict.Quartz; using Quartz; using SR = OpenIddict.Abstractions.OpenIddictResources; namespace Microsoft.Extensions.DependencyInjection { /// - /// Exposes extensions allowing to register the OpenIddict server Quartz.NET integration. + /// Exposes extensions allowing to register the OpenIddict Quartz.NET integration. /// - public static class OpenIddictServerQuartzExtensions + public static class OpenIddictQuartzExtensions { /// - /// Registers the OpenIddict server Quartz.NET integration in the DI container. + /// Registers the OpenIddict Quartz.NET integration in the DI container. /// /// The services builder used by OpenIddict to register new services. /// This extension can be safely called multiple times. - /// The . - public static OpenIddictServerQuartzBuilder UseQuartz(this OpenIddictServerBuilder builder) + /// The . + public static OpenIddictQuartzBuilder UseQuartz(this OpenIddictCoreBuilder builder) { if (builder is null) { @@ -34,54 +34,54 @@ namespace Microsoft.Extensions.DependencyInjection // Warning: the AddQuartz() method is deliberately not used as it's not idempotent. // Calling it at this point may override user-defined services (e.g Quartz DI support). - builder.Services.TryAddTransient(); + builder.Services.TryAddTransient(); // To ensure this method can be safely called multiple times, the job details - // of the OpenIddict server job are only added if no existing IJobDetail instance - // pointing to OpenIddictServerQuartzJob was already registered in the DI container. + // of the OpenIddict job are only added if no existing IJobDetail instance + // pointing to OpenIddictQuartzJob was already registered in the DI container. if (!builder.Services.Any(descriptor => descriptor.ServiceType == typeof(IJobDetail) && descriptor.ImplementationInstance is IJobDetail job && - job.Key.Equals(OpenIddictServerQuartzJob.Identity))) + job.Key.Equals(OpenIddictQuartzJob.Identity))) { builder.Services.AddSingleton( - JobBuilder.Create() + JobBuilder.Create() .StoreDurably() - .WithIdentity(OpenIddictServerQuartzJob.Identity) + .WithIdentity(OpenIddictQuartzJob.Identity) .WithDescription(SR.GetResourceString(SR.ID8000)) .Build()); } // To ensure this method can be safely called multiple times, the trigger details - // of the OpenIddict server job are only added if no existing ITrigger instance - // pointing to OpenIddictServerQuartzJob was already registered in the DI container. + // of the OpenIddict job are only added if no existing ITrigger instance + // pointing to OpenIddictQuartzJob was already registered in the DI container. if (!builder.Services.Any(descriptor => descriptor.ServiceType == typeof(ITrigger) && descriptor.ImplementationInstance is ITrigger trigger && - trigger.JobKey.Equals(OpenIddictServerQuartzJob.Identity))) + trigger.JobKey.Equals(OpenIddictQuartzJob.Identity))) { // Note: this trigger uses a quite long interval (1 hour), which means it may be // potentially never reached if the application is shut down or recycled. As such, // this trigger is set up to fire immediately to ensure it's executed at least once. builder.Services.AddSingleton( TriggerBuilder.Create() - .ForJob(OpenIddictServerQuartzJob.Identity) + .ForJob(OpenIddictQuartzJob.Identity) .WithSimpleSchedule(options => options.WithIntervalInHours(1).RepeatForever()) .WithDescription(SR.GetResourceString(SR.ID8001)) .StartNow() .Build()); } - return new OpenIddictServerQuartzBuilder(builder.Services); + return new OpenIddictQuartzBuilder(builder.Services); } /// - /// Registers the OpenIddict server Quartz.NET integration in the DI container. + /// Registers the OpenIddict Quartz.NET integration in the DI container. /// /// The services builder used by OpenIddict to register new services. - /// The configuration delegate used to configure the server services. + /// The configuration delegate used to configure the Quartz.NET services. /// This extension can be safely called multiple times. - /// The . - public static OpenIddictServerBuilder UseQuartz( - this OpenIddictServerBuilder builder, Action configuration) + /// The . + public static OpenIddictCoreBuilder UseQuartz( + this OpenIddictCoreBuilder builder, Action configuration) { if (builder is null) { diff --git a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzJob.cs b/src/OpenIddict.Quartz/OpenIddictQuartzJob.cs similarity index 91% rename from src/OpenIddict.Server.Quartz/OpenIddictServerQuartzJob.cs rename to src/OpenIddict.Quartz/OpenIddictQuartzJob.cs index 7da5f572..c29f7716 100644 --- a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzJob.cs +++ b/src/OpenIddict.Quartz/OpenIddictQuartzJob.cs @@ -13,28 +13,28 @@ using OpenIddict.Abstractions; using Quartz; using SR = OpenIddict.Abstractions.OpenIddictResources; -namespace OpenIddict.Server.Quartz +namespace OpenIddict.Quartz { /// - /// Represents a Quartz.NET job performing scheduled tasks for the OpenIddict server feature. + /// Represents a Quartz.NET job performing scheduled tasks for OpenIddict. /// [DisallowConcurrentExecution] - public class OpenIddictServerQuartzJob : IJob + public class OpenIddictQuartzJob : IJob { - private readonly IOptionsMonitor _options; + private readonly IOptionsMonitor _options; private readonly IServiceProvider _provider; /// - /// Creates a new instance of the class. + /// Creates a new instance of the class. /// - public OpenIddictServerQuartzJob() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0082)); + public OpenIddictQuartzJob() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0082)); /// - /// Creates a new instance of the class. + /// Creates a new instance of the class. /// - /// The OpenIddict server Quartz.NET options. + /// The OpenIddict Quartz.NET options. /// The service provider. - public OpenIddictServerQuartzJob(IOptionsMonitor options, IServiceProvider provider) + public OpenIddictQuartzJob(IOptionsMonitor options, IServiceProvider provider) { _options = options; _provider = provider; @@ -44,8 +44,8 @@ namespace OpenIddict.Server.Quartz /// Gets the default identity assigned to this job. /// public static JobKey Identity { get; } = new JobKey( - name: typeof(OpenIddictServerQuartzJob).Name, - group: typeof(OpenIddictServerQuartzJob).Assembly.GetName().Name!); + name: typeof(OpenIddictQuartzJob).Name, + group: typeof(OpenIddictQuartzJob).Assembly.GetName().Name!); /// public async Task Execute(IJobExecutionContext context) diff --git a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzOptions.cs b/src/OpenIddict.Quartz/OpenIddictQuartzOptions.cs similarity index 93% rename from src/OpenIddict.Server.Quartz/OpenIddictServerQuartzOptions.cs rename to src/OpenIddict.Quartz/OpenIddictQuartzOptions.cs index d19c8329..4cadf040 100644 --- a/src/OpenIddict.Server.Quartz/OpenIddictServerQuartzOptions.cs +++ b/src/OpenIddict.Quartz/OpenIddictQuartzOptions.cs @@ -6,12 +6,12 @@ using System; -namespace OpenIddict.Server.Quartz +namespace OpenIddict.Quartz { /// - /// Provides various settings needed to configure the OpenIddict Quartz.NET server integration. + /// Provides various settings needed to configure the OpenIddict Quartz.NET integration. /// - public class OpenIddictServerQuartzOptions + public class OpenIddictQuartzOptions { /// /// Gets or sets a boolean indicating whether authorizations pruning should be disabled. diff --git a/test/OpenIddict.Server.Quartz.Tests/OpenIddict.Server.Quartz.Tests.csproj b/test/OpenIddict.Quartz.Tests/OpenIddict.Quartz.Tests.csproj similarity index 79% rename from test/OpenIddict.Server.Quartz.Tests/OpenIddict.Server.Quartz.Tests.csproj rename to test/OpenIddict.Quartz.Tests/OpenIddict.Quartz.Tests.csproj index 596ae845..e94d4177 100644 --- a/test/OpenIddict.Server.Quartz.Tests/OpenIddict.Server.Quartz.Tests.csproj +++ b/test/OpenIddict.Quartz.Tests/OpenIddict.Quartz.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzBuilderTests.cs b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzBuilderTests.cs similarity index 89% rename from test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzBuilderTests.cs rename to test/OpenIddict.Quartz.Tests/OpenIddictQuartzBuilderTests.cs index 8e27e31e..88bf0995 100644 --- a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzBuilderTests.cs +++ b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzBuilderTests.cs @@ -4,9 +4,9 @@ using Microsoft.Extensions.Options; using Xunit; using SR = OpenIddict.Abstractions.OpenIddictResources; -namespace OpenIddict.Server.Quartz.Tests +namespace OpenIddict.Quartz.Tests { - public class OpenIddictServerQuartzBuilderTests + public class OpenIddictQuartzBuilderTests { [Fact] public void Constructor_ThrowsAnExceptionForNullServices() @@ -15,7 +15,7 @@ namespace OpenIddict.Server.Quartz.Tests var services = (IServiceCollection) null!; // Act and assert - var exception = Assert.Throws(() => new OpenIddictServerQuartzBuilder(services)); + var exception = Assert.Throws(() => new OpenIddictQuartzBuilder(services)); Assert.Equal("services", exception.ParamName); } @@ -26,14 +26,14 @@ namespace OpenIddict.Server.Quartz.Tests // Arrange var services = CreateServices(); var builder = CreateBuilder(services); - var configuration = new Action(options => { }); + var configuration = new Action(options => { }); // Act builder.Configure(configuration); // Assert - Assert.Contains(services, service => service.ServiceType == typeof(IConfigureOptions) && - service.ImplementationInstance is ConfigureNamedOptions options && + Assert.Contains(services, service => service.ServiceType == typeof(IConfigureOptions) && + service.ImplementationInstance is ConfigureNamedOptions options && options.Action == configuration && string.IsNullOrEmpty(options.Name)); } @@ -174,13 +174,13 @@ namespace OpenIddict.Server.Quartz.Tests private static IServiceCollection CreateServices() => new ServiceCollection().AddOptions(); - private static OpenIddictServerQuartzBuilder CreateBuilder(IServiceCollection services) - => new OpenIddictServerQuartzBuilder(services); + private static OpenIddictQuartzBuilder CreateBuilder(IServiceCollection services) + => new OpenIddictQuartzBuilder(services); - private static OpenIddictServerQuartzOptions GetOptions(IServiceCollection services) + private static OpenIddictQuartzOptions GetOptions(IServiceCollection services) { var provider = services.BuildServiceProvider(); - var options = provider.GetRequiredService>(); + var options = provider.GetRequiredService>(); return options.Value; } } diff --git a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzExtensionsTests.cs b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzExtensionsTests.cs similarity index 74% rename from test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzExtensionsTests.cs rename to test/OpenIddict.Quartz.Tests/OpenIddictQuartzExtensionsTests.cs index 12c679aa..7ec1dc5d 100644 --- a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzExtensionsTests.cs +++ b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzExtensionsTests.cs @@ -3,15 +3,15 @@ using Microsoft.Extensions.DependencyInjection; using Quartz; using Xunit; -namespace OpenIddict.Server.Quartz.Tests +namespace OpenIddict.Quartz.Tests { - public class OpenIddictServerQuartzExtensionsTests + public class OpenIddictQuartzExtensionsTests { [Fact] public void UseQuartz_ThrowsAnExceptionForNullBuilder() { // Arrange - var builder = (OpenIddictServerBuilder) null!; + var builder = (OpenIddictCoreBuilder) null!; // Act and assert var exception = Assert.Throws(() => builder.UseQuartz()); @@ -24,7 +24,7 @@ namespace OpenIddict.Server.Quartz.Tests { // Arrange var services = new ServiceCollection(); - var builder = new OpenIddictServerBuilder(services); + var builder = new OpenIddictCoreBuilder(services); // Act and assert var exception = Assert.Throws(() => builder.UseQuartz(configuration: null!)); @@ -37,14 +37,14 @@ namespace OpenIddict.Server.Quartz.Tests { // Arrange var services = new ServiceCollection(); - var builder = new OpenIddictServerBuilder(services); + var builder = new OpenIddictCoreBuilder(services); // Act builder.UseQuartz(); // Assert - Assert.Contains(services, service => service.ServiceType == typeof(OpenIddictServerQuartzJob) && - service.ImplementationType == typeof(OpenIddictServerQuartzJob) && + Assert.Contains(services, service => service.ServiceType == typeof(OpenIddictQuartzJob) && + service.ImplementationType == typeof(OpenIddictQuartzJob) && service.Lifetime == ServiceLifetime.Transient); } @@ -53,7 +53,7 @@ namespace OpenIddict.Server.Quartz.Tests { // Arrange var services = new ServiceCollection(); - var builder = new OpenIddictServerBuilder(services); + var builder = new OpenIddictCoreBuilder(services); // Act builder.UseQuartz(); @@ -61,7 +61,7 @@ namespace OpenIddict.Server.Quartz.Tests // Assert Assert.Contains(services, service => service.ServiceType == typeof(IJobDetail) && service.ImplementationInstance is IJobDetail job && - job.Key.Equals(OpenIddictServerQuartzJob.Identity)); + job.Key.Equals(OpenIddictQuartzJob.Identity)); } [Fact] @@ -69,7 +69,7 @@ namespace OpenIddict.Server.Quartz.Tests { // Arrange var services = new ServiceCollection(); - var builder = new OpenIddictServerBuilder(services); + var builder = new OpenIddictCoreBuilder(services); // Act builder.UseQuartz(); @@ -77,7 +77,7 @@ namespace OpenIddict.Server.Quartz.Tests // Assert Assert.Contains(services, service => service.ServiceType == typeof(ITrigger) && service.ImplementationInstance is ITrigger trigger && - trigger.JobKey.Equals(OpenIddictServerQuartzJob.Identity)); + trigger.JobKey.Equals(OpenIddictQuartzJob.Identity)); } [Fact] @@ -85,7 +85,7 @@ namespace OpenIddict.Server.Quartz.Tests { // Arrange var services = new ServiceCollection(); - var builder = new OpenIddictServerBuilder(services); + var builder = new OpenIddictCoreBuilder(services); // Act builder.UseQuartz(); @@ -95,11 +95,11 @@ namespace OpenIddict.Server.Quartz.Tests // Assert Assert.Single(services, service => service.ServiceType == typeof(IJobDetail) && service.ImplementationInstance is IJobDetail job && - job.Key.Equals(OpenIddictServerQuartzJob.Identity)); + job.Key.Equals(OpenIddictQuartzJob.Identity)); Assert.Single(services, service => service.ServiceType == typeof(ITrigger) && service.ImplementationInstance is ITrigger trigger && - trigger.JobKey.Equals(OpenIddictServerQuartzJob.Identity)); + trigger.JobKey.Equals(OpenIddictQuartzJob.Identity)); } } } diff --git a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzJobTests.cs b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzJobTests.cs similarity index 94% rename from test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzJobTests.cs rename to test/OpenIddict.Quartz.Tests/OpenIddictQuartzJobTests.cs index cc6710a2..786f5646 100644 --- a/test/OpenIddict.Server.Quartz.Tests/OpenIddictServerQuartzJobTests.cs +++ b/test/OpenIddict.Quartz.Tests/OpenIddictQuartzJobTests.cs @@ -9,15 +9,15 @@ using Quartz; using Xunit; using SR = OpenIddict.Abstractions.OpenIddictResources; -namespace OpenIddict.Server.Quartz.Tests +namespace OpenIddict.Quartz.Tests { - public class OpenIddictServerQuartzJobTests + public class OpenIddictQuartzJobTests { [Fact] public void Constructor_ThrowsAnException() { // Arrange, act and assert - var exception = Assert.Throws(() => new OpenIddictServerQuartzJob()); + var exception = Assert.Throws(() => new OpenIddictQuartzJob()); Assert.Equal(SR.GetResourceString(SR.ID0082), exception.Message); } @@ -32,10 +32,10 @@ namespace OpenIddict.Server.Quartz.Tests var scope = Mock.Of(scope => scope.ServiceProvider == provider); var factory = Mock.Of(factory => factory.CreateScope() == scope); - var monitor = Mock.Of>( - monitor => monitor.CurrentValue == new OpenIddictServerQuartzOptions()); + var monitor = Mock.Of>( + monitor => monitor.CurrentValue == new OpenIddictQuartzOptions()); - var job = new OpenIddictServerQuartzJob(monitor, + var job = new OpenIddictQuartzJob(monitor, Mock.Of(provider => provider.GetService(typeof(IServiceScopeFactory)) == factory)); // Act @@ -56,7 +56,7 @@ namespace OpenIddict.Server.Quartz.Tests provider.GetService(typeof(IOpenIddictAuthorizationManager)) == Mock.Of() && provider.GetService(typeof(IOpenIddictTokenManager)) == manager.Object); - var job = CreateJob(provider, new OpenIddictServerQuartzOptions + var job = CreateJob(provider, new OpenIddictQuartzOptions { DisableTokenPruning = true }); @@ -79,7 +79,7 @@ namespace OpenIddict.Server.Quartz.Tests provider.GetService(typeof(IOpenIddictAuthorizationManager)) == manager.Object && provider.GetService(typeof(IOpenIddictTokenManager)) == Mock.Of()); - var job = CreateJob(provider, new OpenIddictServerQuartzOptions + var job = CreateJob(provider, new OpenIddictQuartzOptions { DisableAuthorizationPruning = true }); @@ -324,7 +324,7 @@ namespace OpenIddict.Server.Quartz.Tests var context = Mock.Of(context => context.RefireCount == 5); - var job = CreateJob(provider, new OpenIddictServerQuartzOptions + var job = CreateJob(provider, new OpenIddictQuartzOptions { MaximumRefireCount = 5 }); @@ -335,14 +335,14 @@ namespace OpenIddict.Server.Quartz.Tests Assert.False(exception.RefireImmediately); } - private static OpenIddictServerQuartzJob CreateJob(IServiceProvider provider, OpenIddictServerQuartzOptions? options = null) + private static OpenIddictQuartzJob CreateJob(IServiceProvider provider, OpenIddictQuartzOptions? options = null) { var scope = Mock.Of(scope => scope.ServiceProvider == provider); var factory = Mock.Of(factory => factory.CreateScope() == scope); - var monitor = Mock.Of>( - monitor => monitor.CurrentValue == (options ?? new OpenIddictServerQuartzOptions())); + var monitor = Mock.Of>( + monitor => monitor.CurrentValue == (options ?? new OpenIddictQuartzOptions())); - return new OpenIddictServerQuartzJob(monitor, + return new OpenIddictQuartzJob(monitor, Mock.Of(provider => provider.GetService(typeof(IServiceScopeFactory)) == factory)); } }