Exemplo n.º 1
0
        public void WithRabbitServer_SetsServer()
        {
            // Arrange
            var factory     = new FakeConnectionFactory();
            var otherServer = new RabbitServer();

            factory.WithRabbitServer(otherServer);

            // Act
            var result = factory.Server;

            // Assert
            Assert.Same(otherServer, result);
        }
Exemplo n.º 2
0
        public void UnderlyingConnection_WithConnection_ReturnsConnection()
        {
            // Arrange
            var factory    = new FakeConnectionFactory();
            var connection = new FakeConnection(new RabbitServer());

            factory.WithConnection(connection);

            // Act
            var result = factory.UnderlyingConnection;

            // Assert
            Assert.Same(connection, result);
        }
Exemplo n.º 3
0
        public void Publication_on_topic_is_consumed_with_wildcards(string bindingKey)
        {
            const string exchangeName = "my_exchange";
            const string queueName    = "my_queue";

            var rabbitServer      = new RabbitServer();
            var connectionFactory = new FakeConnectionFactory(rabbitServer);

            var ok = false;

            // Consumer
            using (var consumerConnection = connectionFactory.CreateConnection())
                using (var consumerChannel = consumerConnection.CreateModel())
                {
                    consumerChannel.QueueDeclare(queueName, false, false, false, null);
                    consumerChannel.ExchangeDeclare(exchangeName, ExchangeType.Topic);
                    consumerChannel.QueueBind(queueName, exchangeName, bindingKey, null);

                    var consumer = new EventingBasicConsumer(consumerChannel);
                    consumer.Received += (s, e) =>
                    {
                        var message    = Encoding.ASCII.GetString(e.Body);
                        var routingKey = e.RoutingKey;
                        var exchange   = e.Exchange;

                        Assert.Equal("hello world!", message);
                        Assert.Equal("foo.bar.baz", routingKey);
                        Assert.Equal(exchangeName, exchange);

                        ok = true;
                    };

                    consumerChannel.BasicConsume(queueName, autoAck: true, consumer);

                    // Publisher
                    using (var publisherConnection = connectionFactory.CreateConnection())
                        using (var publisherChannel = publisherConnection.CreateModel())
                        {
                            const string message     = "hello world!";
                            var          messageBody = Encoding.ASCII.GetBytes(message);
                            publisherChannel.BasicPublish(exchangeName, "foo.bar.baz", false, null, messageBody);
                        }
                }

            Assert.True(ok);
        }
Exemplo n.º 4
0
        public void A_Channel_with_its_BasicReturn_event_bound_should_not_throw()
        {
            var rabbitServer      = new RabbitServer();
            var connectionFactory = new FakeConnectionFactory(rabbitServer);

            using var publisherConnection = connectionFactory.CreateConnection();
            using var publisherChannel    = publisherConnection.CreateModel();

            publisherChannel.BasicReturn += (s, e) => _ = 42;

            const string message     = "hello world!";
            var          messageBody = Encoding.ASCII.GetBytes(message);

            publisherChannel.BasicPublish("test_exchange", "foo.bar.baz", false, null, messageBody);

            Assert.True(true); // If we didn't throw, we reached this point.
        }
Exemplo n.º 5
0
        public void Publication_on_default_is_consumed_as_long_as_key_is_empty(string routingKey, bool shouldBeOK)
        {
            const string exchangeName = "my_exchange";
            const string queueName    = "my_queue";

            var rabbitServer      = new RabbitServer();
            var connectionFactory = new FakeConnectionFactory(rabbitServer);

            var ok = false;

            // Consumer
            using (var consumerConnection = connectionFactory.CreateConnection())
                using (var consumerChannel = consumerConnection.CreateModel())
                {
                    consumerChannel.QueueDeclare(queueName, false, false, false, null);
                    consumerChannel.ExchangeDeclare(exchangeName, null); // null -> Default Exchange Type
                    consumerChannel.QueueBind(queueName, exchangeName, "whatever", null);

                    var consumer = new EventingBasicConsumer(consumerChannel);
                    consumer.Received += (s, e) =>
                    {
                        var message    = Encoding.ASCII.GetString(e.Body);
                        var routingKey = e.RoutingKey;
                        var exchange   = e.Exchange;

                        Assert.Equal("hello world!", message);
                        Assert.Equal("", routingKey);
                        Assert.Equal(exchangeName, exchange);

                        ok = true;
                    };

                    consumerChannel.BasicConsume(queueName, autoAck: true, consumer);

                    // Publisher
                    using (var publisherConnection = connectionFactory.CreateConnection())
                        using (var publisherChannel = publisherConnection.CreateModel())
                        {
                            const string message     = "hello world!";
                            var          messageBody = Encoding.ASCII.GetBytes(message);
                            publisherChannel.BasicPublish(exchangeName, routingKey, false, null, messageBody);
                        }
                }

            Assert.Equal(ok, shouldBeOK);
        }
Exemplo n.º 6
0
        public void A_Channel_with_its_BasicReturn_event_bound_should_not_throw()
        {
            var rabbitServer      = new RabbitServer();
            var connectionFactory = new FakeConnectionFactory(rabbitServer);

            using (var publisherConnection = connectionFactory.CreateConnection())
                using (var publisherChannel = publisherConnection.CreateModel())
                {
                    publisherChannel.BasicReturn += (s, e) =>
                    {
                        _ = 42; // useless code
                    };

                    const string message     = "hello world!";
                    var          messageBody = Encoding.ASCII.GetBytes(message);
                    publisherChannel.BasicPublish("test_exchange", "foo.bar.baz", false, null, messageBody);
                }
        }
        public void Connection_is_null_when_no_connection_was_provided()
        {
            var factory = new FakeConnectionFactory();

            Assert.Null(factory.GetCurrentConnectionForUnitTests());
        }