Beispiel #1
0
        public void BeginDialogArguments_Constructor_SetsProperties()
        {
            // Arrange
            var fromService = "FromService";
            var toService = "ToService";

            // Act
            var args = new BeginDialogArguments(fromService, toService);

            // Assert
            Assert.Equal(fromService, args.FromServiceName);
            Assert.Equal(toService, args.ToServiceName);
        }
        public async Task BeginDialogAsync_UsesTransaction()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService");
            var handle = default(ConversationHandle);

            // Act
            using (var transaction = await provider.BeginTransactionAsync())
            {
                handle = await provider.BeginDialogAsync(arguments);
                transaction.Rollback();
            }

            var sql = @"SELECT * FROM sys.conversation_endpoints WHERE conversation_handle = @handle";
            var results = await connection.QueryAsync(sql, new { handle = handle.Value });

            // Assert
            Assert.Empty(results);
        }
        public async Task BeginDialogAsync_RespectsEncryptionOn()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                Encryption = true,
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SEND ON CONVERSATION @handle;
SELECT GET_TRANSMISSION_STATUS(@handle) AS [status]";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var status = results.Single().status;

            // Assert
            Assert.StartsWith("The session keys", status);
        }
        public async Task BeginDialogAsync_RespectsEncryptionOff()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                Encryption = true,
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SEND ON CONVERSATION @handle;
SELECT * FROM sys.conversation_endpoints WHERE conversation_handle = @handle";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var conversation = results.Single();

            // Assert
            Assert.Equal("CO", conversation.state);
            Assert.Equal(Guid.Empty, conversation.outbound_session_key_identifier);
            Assert.Equal(Guid.Empty, conversation.inbound_session_key_identifier);
        }
        public async Task BeginDialogAsync_RespectsRelatedConversationHandlesAndGroupIds()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var group = Guid.NewGuid();
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                Related = (ConversationGroupId)group
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            arguments.Related = conversationHandle;
            conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SELECT e.conversation_group_id
FROM sys.conversation_endpoints e
WHERE conversation_handle = @handle
";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var conversation = results.Single();

            // Assert
            Assert.Equal(group, conversation.conversation_group_id);
        }
        public async Task BeginDialogAsync_RespectsLifeTime()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                Lifetime = TimeSpan.FromHours(23),
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SELECT e.lifetime
FROM sys.conversation_endpoints e
WHERE conversation_handle = @handle
";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var conversation = results.Single();

            // Assert
            Assert.True(conversation.lifetime < DateTime.Now.AddDays(1).ToUniversalTime());
        }
        public async Task BeginDialogAsync_RespectsContract()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                ContractName = "TestContract",
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SELECT c.name
FROM sys.conversation_endpoints e
JOIN sys.service_contracts c
    ON c.service_contract_id = e.service_contract_id
WHERE conversation_handle = @handle
";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var contract = results.Single();

            // Assert
            Assert.Equal("TestContract", contract.name);
        }
        public async Task BeginDialogAsync_RespectsBrokerInstanceCurrentDatabase()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService")
            {
                BrokerInstance = BrokerInstance.CurrentDatabase,
            };

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SELECT CAST(e.far_broker_instance AS uniqueidentifier) AS [actual],
       (SELECT service_broker_guid FROM sys.databases WHERE database_id = DB_ID()) AS [expected]
FROM sys.conversation_endpoints e
WHERE conversation_handle = @handle
";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var conversation = results.Single();

            // Assert
            Assert.Equal(conversation.expected, conversation.actual);
        }
        public async Task BeginDialogAsync_RespectsToAndFromServices()
        {
            // Arrange
            await InitializeDatabaseAsync();
            var provider = new SqlServerServiceBroker(connection);
            var arguments = new BeginDialogArguments("InitiatorService", "TargetService");

            // Act
            var conversationHandle = await provider.BeginDialogAsync(arguments);
            var sql = @"
SELECT e.state, e.far_service, e.is_initiator, s.name
FROM sys.conversation_endpoints e
JOIN sys.services s
    ON s.service_id = e.service_id
WHERE conversation_handle = @handle
";
            var results = await connection.QueryAsync(sql, new { handle = conversationHandle.Value });
            var conversation = results.Single();

            // Assert
            Assert.NotNull(conversation);
            Assert.Equal("SO", conversation.state);
            Assert.Equal("InitiatorService", conversation.name);
            Assert.Equal("TargetService", conversation.far_service);
            Assert.Equal(true, conversation.is_initiator);
        }
Beispiel #10
0
        public void BeginDialogArguments_DefaultEncryptionIsOff()
        {
            // Arrange
            var fromService = "TestService";
            var toService = "TestService";

            // Act
            var arguments = new BeginDialogArguments(fromService, toService);

            // Assert
            Assert.Equal(false, arguments.Encryption);
        }