public void Should_Pass_Token_And_Stop() { // Arrange const string tenantToken = "mock token"; _firstResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); _secondResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult(tenantToken)); _thirdResolver.Setup(r => r.GetTenantToken()).Throws <Exception>(); var firstPair = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object }, _identifier.Object); var secondPair = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _secondResolver.Object }, _identifier.Object); var thirdPair = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _thirdResolver.Object }, _identifier.Object); var sut = new DefaultTenantIdentificationService(new List <TenantIdentificationStrategy>() { firstPair, secondPair, thirdPair }); // Act var _ = sut.GetTenantIdAsync().Result; // Assert _identifier.Verify(i => i.GetTenantIdAsync(It.Is <string>(s => string.Equals(s, tenantToken))), Times.Once()); }
public void Should_Throw_ArgumentException_If_Resolvers_Are_Empty() { // Arrange var identifier = new Mock <ITenantIdentifier>(); // Act Action act = () => { var _ = new TenantIdentificationStrategy(new List <ITenantTokenResolver>(), identifier.Object); }; // Assert act.Should().Throw <ArgumentException>(); }
public void Should_Throw_Exception_If_Resolver_Fails_Unexpected() { // Arrange _firstResolver.Setup(r => r.GetTenantToken()).Throws <Exception>(); var sut = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object, _secondResolver.Object, _thirdResolver.Object }, _identifier.Object); // Act Action act = () => Task.WaitAll(sut.TryGetTenantIdAsync()); // Assert act.Should().Throw <Exception>(); }
public void Strategy_Should_Pass_Token_To_Identifier() { // Arrange const string tenantToken = "mock token"; _firstResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult(tenantToken)); var sut = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object, _secondResolver.Object, _thirdResolver.Object }, _identifier.Object); // Act var _ = sut.TryGetTenantIdAsync().Result; // Assert _identifier.Verify(i => i.GetTenantIdAsync(It.Is <string>(s => string.Equals(s, tenantToken))), Times.Once()); }
public void Should_Throw_ArgumentNullException_If_Identifier_Is_Null() { // Arrange var tokenResolver = new Mock <ITenantTokenResolver>(); // Act Action act = () => { var _ = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { tokenResolver.Object }, null); }; // Assert act.Should().Throw <ArgumentNullException>(); }
public void Should_Return_Null_If_All_Resolvers_Fail() { // Arrange _firstResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); _secondResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); _thirdResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); var sut = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object, _secondResolver.Object, _thirdResolver.Object }, _identifier.Object); // Act var result = sut.TryGetTenantIdAsync().Result; // Assert result.Should().BeNull(); }
public void Service_Should_Return_Identifier_Result() { // Arrange const string tenantToken = "mock token"; _firstResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult(tenantToken)); var tenantId = Guid.NewGuid(); _identifier.Setup(i => i.GetTenantIdAsync(It.IsAny <string>())).Returns(Task.FromResult(tenantId)); var sut = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object, _secondResolver.Object, _thirdResolver.Object }, _identifier.Object); // Act var result = sut.TryGetTenantIdAsync().Result; // Assert result.Should().Be(tenantId); }
public void Should_Throw_TenantNotFoundException_If_All_Resolvers_Return_Null() { // Arrange _firstResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); _secondResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); _thirdResolver.Setup(r => r.GetTenantToken()).Returns(Task.FromResult <string>(null)); var identifierPair = new TenantIdentificationStrategy(new List <ITenantTokenResolver>() { _firstResolver.Object, _secondResolver.Object, _thirdResolver.Object }, _identifier.Object); var sut = new DefaultTenantIdentificationService(new List <TenantIdentificationStrategy>() { identifierPair }); // Act Action act = () => Task.WaitAll(sut.GetTenantIdAsync()); // Assert act.Should().Throw <TenantNotFoundException>(); }
public ConnectionStringProvider(Tenants tenants, TenantIdentificationStrategy tenantIdStrategy) { _tenants = tenants; _tenantIdStrategy = tenantIdStrategy; }
public Database(TenantIdentificationStrategy tenantIdStrategy, IConnectionStringProvider connectionStringProvider) { _tenantIdStrategy = tenantIdStrategy; _connectionStringProvider = connectionStringProvider; }
public Dependency(TenantIdentificationStrategy tenantIdStrategy, IDatabase database) { _database = database; _tenantIdStrategy = tenantIdStrategy; }