public void Return_True() { var configuration = SharedMock.GetConfigurationBuilder(SharedMock.ConfigurationSectionExTrue).Build(); var section = configuration.GetSection("TenantConfiguration"); Assert.True(section.IsMultiTenantEnabled()); }
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); }
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); }
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); }
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); })); }
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); }
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); }
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); }
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); }
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")); }
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); }
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); }