using AutoFixture; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc; using Bit.Api.Controllers; using AutoFixture.Kernel; using System; using Bit.Test.Common.AutoFixture; using Org.BouncyCastle.Security; namespace Bit.Api.Test.AutoFixture { /// /// Disables setting of Auto Properties on the Controller to avoid ASP.net initialization errors. Still sets constructor dependencies. /// /// public class ControllerCustomization : ICustomization { private readonly Type _controllerType; public ControllerCustomization(Type controllerType) { if (!controllerType.IsAssignableTo(typeof(Controller))) { throw new InvalidParameterException($"{nameof(controllerType)} must derive from {typeof(Controller).Name}"); } _controllerType = controllerType; } public void Customize(IFixture fixture) { fixture.Customizations.Add(new BuilderWithoutAutoProperties(_controllerType)); } } public class ControllerCustomization : ICustomization where T : Controller { public void Customize(IFixture fixture) => new ControllerCustomization(typeof(T)).Customize(fixture); } }