Ejemplo n.º 1
0
        public void ConsumingSuccesfully()
        {
            var consumer = new FakeConsumer(_ => Task.Factory.StartNew(() => { }));
            var result   = new ConsumedMessage(new Foo(),
                                               FakeBasicDeliverEventArgs()).ConsumeAsync(new[] { consumer })
                           .Result;

            Assert.IsType <Success>(result);
        }
Ejemplo n.º 2
0
        public void Throws()
        {
            const String message   = "boom";
            var          exception = new Exception(message);
            var          consumer  = new FakeConsumer(_ => { throw exception; });
            var          result    = new ConsumedMessage(new Foo(),
                                                         FakeBasicDeliverEventArgs()).ConsumeAsync(new[] { consumer }).Result;
            var actual = Assert.IsType <ConsumingFailure>(result);

            Assert.Equal(1, actual.Exceptions.Length);
            Assert.Equal(message, actual.Exceptions.First().Message);
            Assert.Equal(1, consumer.Errors.Count);
            Assert.Equal(message, consumer.Errors.First().Message);
        }
Ejemplo n.º 3
0
        public void ThrowsOnRedelivered()
        {
            const String message   = "boom";
            var          exception = new Exception(message);
            var          consumer  = new FakeConsumer(_ => { throw exception; });
            var          result    = new ConsumedMessage(new Foo(),
                                                         new BasicDeliverEventArgs
            {
                Redelivered     = true,
                BasicProperties = new BasicProperties()
            }).ConsumeAsync(new[] { consumer }).Result;
            var actual = Assert.IsType <ReiteratedConsumingFailure>(result);

            Assert.Equal(1, actual.Exceptions.Length);
            Assert.Equal(message, actual.Exceptions.First().Message);
            Assert.Equal(1, consumer.Errors.Count);
            Assert.Equal(message, consumer.Errors.First().Message);
        }
Ejemplo n.º 4
0
        public void InitializationOfAmqpStuff()
        {
            const String queueName    = "queue_name";
            const String exchangeName = "exchange_name";
            const String routingKey   = "routing_key";

            var configuration = new EnvironmentConfiguration();

            configuration.GeneratesMessageIdBy(new Mock <INewId>().Object);
            configuration.ResolveMessageTypeBy(new Mock <IMessageTypeResolver>().Object);

            var model             = new Mock <IModel>();
            var connectionBuilder = StubConnectionBuilder(model);
            var broker            = new BrokerWrapper(connectionBuilder.Object, model.Object, configuration);
            var consumer          = new FakeConsumer(_ => Task.Factory.StartNew(() => { }));
            var queue             = broker.DeclareQueue(queueName);
            var exchange          = broker.DeclareDirectExchange(exchangeName);

            broker.DeclareExchangeBinding(exchange, queue, routingKey);
            broker.SubscribeByAtLeastOnce(queue, _ => { _.Consumes(consumer); });
            broker.Connect();
            model.Verify(_ => _.QueueDeclare(queueName,
                                             false,
                                             false,
                                             false,
                                             It.IsAny <IDictionary <String, Object> >()));
            model.Verify(_ => _.ExchangeDeclare(exchangeName,
                                                "direct",
                                                false,
                                                false,
                                                It.IsAny <IDictionary <String, Object> >()));
            model.Verify(_ => _.QueueBind(queueName,
                                          exchangeName,
                                          routingKey,
                                          It.IsAny <IDictionary <String, Object> >()));
        }