示例#1
0
 /// <summary>
 /// Initializes the service provider.
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="options">Middleware options</param>
 public virtual void Initialize(IServiceProvider serviceProvider, LiteApiOptions options)
 {
     _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
     if (options == null)
     {
         throw new ArgumentNullException(nameof(options));
     }
     RegisterAllInternalServices(options);
 }
示例#2
0
        public void LiteApiOptionsAddControllerAssemblies_AddsControllerAssemblies_IncreaseNumberOfAssemblies()
        {
            var options  = new LiteApiOptions();
            var assembly = Assembly.GetEntryAssembly();
            int count    = options.ControllerAssemblies.Count();

            options.AddControllerAssemblies(new[] { assembly });
            Assert.Equal(options.ControllerAssemblies.Count(), count + 1);
        }
示例#3
0
        public void LiteApiOptionsAddAdditionalQueryModelBinder_NotNullQueryModelBinder_AddsQueryModelBinder()
        {
            var options     = new LiteApiOptions();
            var modelBinder = new Fakes.FakeQueryModelBinder();

            options.AddAdditionalQueryModelBinder(modelBinder);
            var added = typeof(LiteApiOptions).GetProperty("AdditionalQueryModelBinders", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(options) as List <IQueryModelBinder>;

            Assert.Equal(modelBinder, added[0]);
        }
示例#4
0
        public void LiteApiOptionsSetLoggerFactory_NotNullLoggerFactory_SetsLoggerFactory()
        {
            var options = new LiteApiOptions();

            Assert.Null(options.LoggerFactory);

            options.SetLoggerFactory(new Fakes.FakeLoggerFactory());

            Assert.NotNull(options.LoggerFactory);
        }
示例#5
0
        public void LiteApiOptionsAddAuthorizationPolicy_ValidPolicy_AddsPolicy()
        {
            var options = new LiteApiOptions();

            options.AddAuthorizationPolicy("asd", (c) => true);
            var policyStore = typeof(LiteApiOptions).GetProperty("AuthorizationPolicyStore", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(options) as IAuthorizationPolicyStore;
            var policy      = policyStore.GetPolicy("asd");

            Assert.NotNull(policy);
        }
示例#6
0
        private void RegisterAllInternalServices(LiteApiOptions options)
        {
            if (!IsServiceRegistered <IActionDiscoverer>())
            {
                Register <IActionDiscoverer, ActionDiscoverer>();
            }

            if (!IsServiceRegistered <IActionInvoker>())
            {
                RegisterSingleton <IActionInvoker, ActionInvoker>();
            }

            if (!IsServiceRegistered <IActionsValidator>())
            {
                Register <IActionsValidator, ActionsValidator>();
            }

            if (!IsServiceRegistered <IControllerBuilder>())
            {
                Register <IControllerBuilder, ControllerBuilder>();
            }

            if (!IsServiceRegistered <IControllerDiscoverer>())
            {
                Register <IControllerDiscoverer, ControllerDiscoverer>();
            }

            if (!IsServiceRegistered <IControllersValidator>())
            {
                Register <IControllersValidator, ControllersValidator>();
            }

            if (!IsServiceRegistered <IParametersDiscoverer>())
            {
                Register <IParametersDiscoverer, ParametersDiscoverer>();
            }

            if (!IsServiceRegistered <IParametersValidator>())
            {
                Register <IParametersValidator, ParametersValidator>();
            }

            if (!IsServiceRegistered <IJsonSerializer>())
            {
                RegisterInstance <IJsonSerializer>(new JsonSerializer());
            }

            if (!IsServiceRegistered <ILiteApiOptionsAccessor>())
            {
                RegisterInstance <ILiteApiOptionsAccessor>(new LiteApiOptionsAccessor(options));
            }
        }
示例#7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="controllers">All controller contexts</param>
 /// <param name="optionsAccessor">Options accessor</param>
 /// <param name="serializer">JSON serializer</param>
 public DiscoveryHandler(
     ControllerContext[] controllers,
     ILiteApiOptionsAccessor optionsAccessor,
     IJsonSerializer serializer,
     IModelBinder modelBinders)
 {
     if (optionsAccessor == null)
     {
         throw new ArgumentNullException(nameof(optionsAccessor));
     }
     _options      = optionsAccessor.GetOptions();
     _controllers  = controllers ?? throw new ArgumentNullException(nameof(controllers));
     _serializer   = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _modelBinders = modelBinders ?? throw new ArgumentNullException(nameof(modelBinders));
 }
示例#8
0
        public void LiteApiOptionsAddAuthorizationPolicy_NullPolicy_ThrowsException()
        {
            var  options = new LiteApiOptions();
            bool error   = false;

            try
            {
                options.AddAuthorizationPolicy("abc", null);
            }
            catch (ArgumentNullException)
            {
                error = true;
            }
            Assert.True(error);
        }
示例#9
0
        public void LiteApiOptionsAddAdditionalQueryModelBinder_NullQueryModelBinder_ThrowsException()
        {
            var  options = new LiteApiOptions();
            bool error   = false;

            try
            {
                options.AddAdditionalQueryModelBinder(null);
            }
            catch (ArgumentNullException)
            {
                error = true;
            }
            Assert.True(error);
        }
示例#10
0
        public void LiteApiOptionsAddAuthorizationPolicy_NullPolicyName_ThrowsException()
        {
            var  options = new LiteApiOptions();
            bool error   = false;

            try
            {
                options.AddAuthorizationPolicy(null, (c) => true);
            }
            catch (ArgumentException ex)
            {
                Assert.True(ex.Message.Contains("cannot be null or empty or whitespace"));
                error = true;
            }
            Assert.True(error);
        }
示例#11
0
        public void LiteApiOptionsSetLoggerFactory_NullLoggerFactory_ThrowsException()
        {
            var  options = new LiteApiOptions();
            bool error   = false;

            try
            {
                options.SetLoggerFactory(null);
            }
            catch (ArgumentNullException)
            {
                error = true;
            }

            Assert.True(error);
        }
示例#12
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="options">Middleware options</param>
 public LiteApiOptionsAccessor(LiteApiOptions options)
 {
     _options = options ?? throw new ArgumentNullException(nameof(options));
 }
 /// <summary>
 /// Uses the lite API.
 /// </summary>
 /// <param name="appBuilder">Instance of <see cref="IApplicationBuilder"/></param>
 /// <param name="options">Instance of <see cref="LiteApiOptions"/> to use</param>
 /// <returns>Instance of <see cref="IApplicationBuilder"/></returns>
 public static IApplicationBuilder UseLiteApi(this IApplicationBuilder appBuilder, LiteApiOptions options)
 {
     appBuilder.UseMiddleware <LiteApiMiddleware>(options, appBuilder.ApplicationServices);
     return(appBuilder);
 }