public async Task ResolveCurrentAsync_ValidatesArguments() { // Arrange var featureStateProvider = CreateFeatureStateProvider(); var resolver = new TenantResolver(featureStateProvider); // Act // Assert await Assert.ThrowsAsync <ArgumentNullException>(async() => await resolver.ResolveCurrentAsync(null /* httpContext */)); }
public async Task ResolveCurrentAsync_ReturnsDefault_IfTenancyNotEnabled() { // Arrange var configuration = CreateConfiguration(new Dictionary <string, string> { ["Features:Core.Tenancy:Enabled"] = "false" }); var featureStateProvider = CreateFeatureStateProvider( state: new FeatureState(CoreInfo.TenancyFeatureId, configuration.GetSection("Features:Core.Tenancy"), false)); var httpContext = CreateHttpContext(new HostString("localhost:5000")); var resolver = new TenantResolver(featureStateProvider); // Act var tenantId = await resolver.ResolveCurrentAsync(httpContext); // Assert Assert.Equal(TenantId.Default, tenantId); }
public async Task ResolveCurrentAsync_ReturnsEmpty_ForMissingTenantId() { // Arrange var configuration = CreateConfiguration(new Dictionary <string, string> { ["Features:Core.Tenancy:Enabled"] = "true", ["Features:Core.Tenancy:Tenants:Tenant01:HostNames:0"] = "localhost:5000" }); var featureStateProvider = CreateFeatureStateProvider( state: new FeatureState(CoreInfo.TenancyFeatureId, configuration.GetSection("Features:Core.Tenancy"), true)); var httpContext = CreateHttpContext(new HostString("localhost:5001")); var resolver = new TenantResolver(featureStateProvider); // Act var tenantId = await resolver.ResolveCurrentAsync(httpContext); // Assert Assert.Equal(TenantId.Empty, tenantId); }
public async Task ResolveCurrentAsync_BeginsFeatureStateTenantScope_ForMatchingHostName() { // Arrange var matchedTenantId = TenantId.Empty; var configuration = CreateConfiguration(new Dictionary <string, string> { ["Features:Core.Tenancy:Enabled"] = "true", ["Features:Core.Tenancy:Tenants:Tenant01:HostNames:0"] = "localhost:5000" }); var featureStateProvider = CreateFeatureStateProvider( state: new FeatureState(CoreInfo.TenancyFeatureId, configuration.GetSection("Features:Core.Tenancy"), true), onBeginTenantScope: t => matchedTenantId = t); var httpContext = CreateHttpContext(new HostString("localhost:5000")); var resolver = new TenantResolver(featureStateProvider); // Act var tenantId = await resolver.ResolveCurrentAsync(httpContext); // Assert Assert.Equal(tenantId, matchedTenantId); }