Beispiel #1
0
        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);
        }
Beispiel #8
0
        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>();
        }
Beispiel #9
0
 public ConnectionStringProvider(Tenants tenants, TenantIdentificationStrategy tenantIdStrategy)
 {
     _tenants          = tenants;
     _tenantIdStrategy = tenantIdStrategy;
 }
Beispiel #10
0
 public Database(TenantIdentificationStrategy tenantIdStrategy, IConnectionStringProvider connectionStringProvider)
 {
     _tenantIdStrategy         = tenantIdStrategy;
     _connectionStringProvider = connectionStringProvider;
 }
Beispiel #11
0
 public Dependency(TenantIdentificationStrategy tenantIdStrategy, IDatabase database)
 {
     _database         = database;
     _tenantIdStrategy = tenantIdStrategy;
 }