Ejemplo n.º 1
0
        public void Return_True()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigurationSectionExTrue).Build();
            var section       = configuration.GetSection("TenantConfiguration");

            Assert.True(section.IsMultiTenantEnabled());
        }
Ejemplo n.º 2
0
        public void FormStrategyConfiguration_Should_Bind(string section)
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.NormalConfig).Build();

            var c2 = new FormStrategyConfiguration();

            configuration.GetSection(section).Bind(c2);
            Assert.NotNull(c2);
            Assert.Equal(2, c2.Parameters.Count);
        }
Ejemplo n.º 3
0
        public void ReturnException()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.NormalConfig).Build();
            var services      = new ServiceCollection();

            var ex = Assert.Throws <MultiTenantException>(() =>
                                                          services.AddMultiTenant().WithFormStrategy(configuration.GetSection("TenantConfiguration")).WithInMemoryStore());

            Assert.Equal($"The configuration section does not contain any valid settings for the {nameof(FormStrategyConfiguration)}.", ex.Message);
        }
Ejemplo n.º 4
0
        public void Not_Resolve_With_FormStrategy()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();
            var services      = new ServiceCollection();

            services.AddMultiTenant().WithFormStrategy(configuration.GetSection("TenantConfiguration:FormStrategyConfiguration")).WithInMemoryStore();

            var tc = services.BuildServiceProvider().GetService <ITenantContext>();

            Assert.Null(tc);
        }
Ejemplo n.º 5
0
        private static IWebHostBuilder GetTestHostBuilder(string tenantClaimName, string tenantClaimValue, bool injectConfiguration)
        {
            return(new WebHostBuilder()
                   .ConfigureAppConfiguration((hostContext, configApp) =>
            {
                if (injectConfiguration)
                {
                    configApp.AddInMemoryCollection(SharedMock.ConfigDic);
                }
            })
                   .ConfigureServices((ctx, services) =>
            {
                var logger = new Mock <ILogger <ClaimsStrategy> >();
                services.AddScoped(sp => logger.Object);

                if (injectConfiguration)
                {
                    services.AddMultiTenant()
                    .WithContribTenantContext(ctx.Configuration.GetSection("TenantConfiguration"))
                    .WithClaimsStrategy()
                    .WithInMemoryStore();
                }
                else
                {
                    services.AddMultiTenant()
                    .WithContribTenantContext()
                    .WithClaimsStrategy("TenantId")
                    .WithInMemoryStore();
                }

                services.AddMvc();
            })
                   .Configure(app =>
            {
                app.UseRouting();
                app.UseMiddleware <AuthenticatedTestRequestMiddleware>(SharedMock.GetClaimsIdentity(tenantClaimName, tenantClaimValue));
                app.UseMultiTenant();
                app.UseEndpoints(endpoints =>
                {
                    endpoints.Map("{controller}/{action}/{id?}", async context =>
                    {
                        var tenantContext = context.RequestServices.GetService <ITenantContext>();
                        Assert.NotNull(tenantContext);
                        Assert.NotNull(tenantContext.TenantConfigurations.Items);
                        Assert.True(tenantContext.TenantResolved);
                        await context.Response.WriteAsync("Ok");
                    });
                });

                var store = app.ApplicationServices.GetRequiredService <IMultiTenantStore>();
                SharedMock.PopulateTestStore(store);
            }));
        }
Ejemplo n.º 6
0
        public void Use_Last_Registered_When_Registered_2x()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));
            services.AddTenantConfigurations(configuration.GetSection("TenantConfigurationDuplicate"));

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();

            Assert.Single(configurations.Items);
            Assert.Equal("TenantIdDuplicate", configurations.Items.First(a => a.Key == Constants.TenantClaimName).Value);
        }
        public void Resolve_True_By_Default()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddHttpContextAccessor();
            services.TryAddTenantContext();
            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            var context = services.BuildServiceProvider().GetService <ITenantContext>();

            Assert.True(context.TenantResolutionRequired);
        }
        public void Resolve_False()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddHttpContextAccessor();
            services.TryAddTenantContext();
            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));
            services.AddSingleton <IValidateTenantRequirement>(new FalseRequirement());

            var context = services.BuildServiceProvider().GetService <ITenantContext>();

            Assert.False(context.TenantResolutionRequired);
        }
Ejemplo n.º 9
0
        public void Reload_On_Change()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();

            configuration[$"TenantConfiguration:{Constants.TenantClaimName}"] = "Changed";

            var configurations2 = services.BuildServiceProvider().GetService <TenantConfigurations>();

            Assert.Equal("Changed", configurations2.Items.First(a => a.Key == Constants.TenantClaimName).Value);
        }
Ejemplo n.º 10
0
        public void Combine_With_Manually_Registered_Configurations()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            services.AddSingleton <ITenantConfiguration>(new TenantConfiguration()
            {
                Key = "Manual1", Value = "Value1"
            });

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();

            Assert.Equal("Value1", configurations.Items.First(a => a.Key == "Manual1").Value);
        }
Ejemplo n.º 11
0
        public void Register()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();
            var items          = configurations.Items;

            Assert.NotNull(items);
            Assert.Equal(8, items.Count);
            Assert.Equal("TenantId", items.First(a => a.Key == Constants.TenantClaimName).Value);
            Assert.Equal("true", items.First(a => a.Key == Constants.MultiTenantEnabled).Value);
            Assert.Equal("true", items.First(a => a.Key == Constants.UseTenantCode).Value);
        }
Ejemplo n.º 12
0
        public void Get_Constants()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();

            Assert.True(configurations.IsMultiTenantEnabled());
            Assert.True(configurations.UseTenantCode());
            Assert.False(configurations.Get <bool>("bool1"));
            Assert.False(configurations.Get <bool>("bool2"));
            Assert.Equal(0, configurations.Get <int>("int"));
            Assert.Equal(string.Empty, configurations.Get <string>("string"));
        }
Ejemplo n.º 13
0
        public void Not_Have_Duplicates()
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigDic).Build();

            var services = new ServiceCollection();

            services.AddTenantConfigurations(configuration.GetSection("TenantConfiguration"));

            services.AddSingleton <ITenantConfiguration>(new TenantConfiguration()
            {
                Key = Constants.TenantClaimName, Value = "TenantId-2"
            });

            var configurations = services.BuildServiceProvider().GetService <TenantConfigurations>();

            Assert.Equal(8, configurations.Items.Count);
            Assert.Equal("TenantId", configurations.Items.First(a => a.Key == Constants.TenantClaimName).Value);
        }
Ejemplo n.º 14
0
        public void Configuration_Should_Bind(string section)
        {
            var configuration = SharedMock.GetConfigurationBuilder(SharedMock.NormalConfig).Build();

            var items =
                configuration.GetSection(section)
                .GetChildren()
                .Select(x => new TenantConfiguration()
            {
                Key = x.Key, Value = x.Value
            })
                .ToList();

            Assert.NotNull(items);
            Assert.Equal(4, items.Count);
            Assert.Equal("TenantId", items.First(a => a.Key == Constants.TenantClaimName).Value);
            Assert.Equal("true", items.First(a => a.Key == Constants.MultiTenantEnabled).Value);
            Assert.Equal("true", items.First(a => a.Key == Constants.UseTenantCode).Value);
        }