From 83a15d0bb86cbea68af64e7b84e5b653219d2385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Sun, 3 Jun 2018 17:00:43 +0200 Subject: [PATCH] Remove the IMvcBuilder/IMvcCoreBuilder from OpenIddict.Mvc --- src/OpenIddict.Mvc/OpenIddictMvcExtensions.cs | 121 +++--------------- .../OpenIddictMvcExtensionsTests.cs | 40 ------ 2 files changed, 16 insertions(+), 145 deletions(-) diff --git a/src/OpenIddict.Mvc/OpenIddictMvcExtensions.cs b/src/OpenIddict.Mvc/OpenIddictMvcExtensions.cs index a689e1ca..26c62623 100644 --- a/src/OpenIddict.Mvc/OpenIddictMvcExtensions.cs +++ b/src/OpenIddict.Mvc/OpenIddictMvcExtensions.cs @@ -26,7 +26,22 @@ namespace Microsoft.Extensions.DependencyInjection throw new ArgumentNullException(nameof(builder)); } - return RegisterMvcServices(builder.Services); + builder.Services.Configure(options => + { + // Skip the binder registration if it was already added to the providers collection. + for (var index = 0; index < options.ModelBinderProviders.Count; index++) + { + var provider = options.ModelBinderProviders[index]; + if (provider is OpenIddictMvcBinderProvider) + { + return; + } + } + + options.ModelBinderProviders.Insert(0, new OpenIddictMvcBinderProvider()); + }); + + return new OpenIddictMvcBuilder(builder.Services); } /// @@ -49,109 +64,5 @@ namespace Microsoft.Extensions.DependencyInjection return builder; } - - /// - /// Registers the ASP.NET Core MVC services used by OpenIddict. - /// - /// The services builder used by ASP.NET Core MVC to register new services. - /// This extension can be safely called multiple times. - /// The . - public static OpenIddictMvcBuilder UseOpenIddict([NotNull] this IMvcCoreBuilder builder) - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - return RegisterMvcServices(builder.Services); - } - - /// - /// Registers the ASP.NET Core MVC model binders used by OpenIddict. - /// - /// The services builder used by ASP.NET Core MVC to register new services. - /// The configuration delegate used to configure the MVC services. - /// This extension can be safely called multiple times. - /// The . - public static IMvcCoreBuilder UseOpenIddict( - [NotNull] this IMvcCoreBuilder builder, - [NotNull] Action configuration) - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - configuration(builder.UseOpenIddict()); - - return builder; - } - - /// - /// Registers the ASP.NET Core MVC services used by OpenIddict. - /// - /// The services builder used by ASP.NET Core MVC to register new services. - /// This extension can be safely called multiple times. - /// The . - public static OpenIddictMvcBuilder UseOpenIddict([NotNull] this IMvcBuilder builder) - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - return RegisterMvcServices(builder.Services); - } - - /// - /// Registers the ASP.NET Core MVC model binders used by OpenIddict. - /// - /// The services builder used by ASP.NET Core MVC to register new services. - /// The configuration delegate used to configure the MVC services. - /// This extension can be safely called multiple times. - /// The . - public static IMvcBuilder UseOpenIddict( - [NotNull] this IMvcBuilder builder, - [NotNull] Action configuration) - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - configuration(builder.UseOpenIddict()); - - return builder; - } - - /// - /// Registers the ASP.NET Core MVC services used by OpenIddict. - /// - /// The services collection. - /// The . - private static OpenIddictMvcBuilder RegisterMvcServices([NotNull] IServiceCollection services) - { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - services.Configure(options => - { - // Skip the binder registration if it was already added to the providers collection. - for (var index = 0; index < options.ModelBinderProviders.Count; index++) - { - var provider = options.ModelBinderProviders[index]; - if (provider is OpenIddictMvcBinderProvider) - { - return; - } - } - - options.ModelBinderProviders.Insert(0, new OpenIddictMvcBinderProvider()); - }); - - return new OpenIddictMvcBuilder(services); - } } } diff --git a/test/OpenIddict.Mvc.Tests/OpenIddictMvcExtensionsTests.cs b/test/OpenIddict.Mvc.Tests/OpenIddictMvcExtensionsTests.cs index 5d702844..233658f3 100644 --- a/test/OpenIddict.Mvc.Tests/OpenIddictMvcExtensionsTests.cs +++ b/test/OpenIddict.Mvc.Tests/OpenIddictMvcExtensionsTests.cs @@ -5,8 +5,6 @@ */ using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.ApplicationParts; -using Microsoft.AspNetCore.Mvc.Internal; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Xunit; @@ -33,43 +31,5 @@ namespace OpenIddict.Mvc.Tests // Assert Assert.Contains(options.Value.ModelBinderProviders, binder => binder is OpenIddictMvcBinderProvider); } - - [Fact] - public void UseOpenIddict_MvcCoreBuilder_RegistersModelBinderProvider() - { - // Arrange - var services = new ServiceCollection(); - services.AddOptions(); - - var builder = new MvcCoreBuilder(services, new ApplicationPartManager()); - - // Act - builder.UseOpenIddict(); - - var provider = services.BuildServiceProvider(); - var options = provider.GetRequiredService>(); - - // Assert - Assert.Contains(options.Value.ModelBinderProviders, binder => binder is OpenIddictMvcBinderProvider); - } - - [Fact] - public void UseOpenIddict_MvcBuilder_RegistersModelBinderProvider() - { - // Arrange - var services = new ServiceCollection(); - services.AddOptions(); - - var builder = new MvcBuilder(services, new ApplicationPartManager()); - - // Act - builder.UseOpenIddict(); - - var provider = services.BuildServiceProvider(); - var options = provider.GetRequiredService>(); - - // Assert - Assert.Contains(options.Value.ModelBinderProviders, binder => binder is OpenIddictMvcBinderProvider); - } } }