예제 #1
0
        public void CreateClient_DisposedConnection_ObjectDisposedException()
        {
            //Arrange
            string exchange       = nameof(exchange);
            var    connectionMock = new Mock <Rabbit.IConnection>(MockBehavior.Loose);
            var    connection     = new RabbitMQConnection(exchange, connectionMock.Object);
            string routingKey     = nameof(routingKey);

            //Act
            connection.Dispose();
            var action = new Action(() => connection.CreatePublisher(routingKey));

            //Assert
            Assert.Throws <ObjectDisposedException>(action);
        }
        public void SendMessage_InvalidBody_ArgumentNullException(byte[] body)
        {
            //Arrange
            string exchange   = nameof(exchange);
            string routingKey = nameof(routingKey);
            var    connection = new RabbitMQConnection(exchange, _connectionMock.Object);
            var    publisher  = connection.CreatePublisher(routingKey);

            //Act
            var action = new Action(() => publisher.SendMessage(body));

            //Assert
            Assert.Throws <ArgumentNullException>(nameof(body), action);
            _connectionMock.Verify(_createModelExpression);
            _modelMock.Verify(_exchangeDeclareExpression);
        }
        public void SendMessage_PublisherDisposed_ObjectDisposedException()
        {
            //Arrange
            string exchange   = nameof(exchange);
            string routingKey = nameof(routingKey);
            var    connection = new RabbitMQConnection(exchange, _connectionMock.Object);
            var    publisher  = connection.CreatePublisher(routingKey);
            var    body       = new byte[1] {
                0x01
            };

            //Act
            publisher.Dispose();
            var action = new Action(() => publisher.SendMessage(body));

            //Assert
            Assert.Throws <ObjectDisposedException>(action);
            _connectionMock.Verify(_createModelExpression);
            _modelMock.Verify(_exchangeDeclareExpression);
            _modelMock.Verify(_disposeExpression, Times.Once);
        }
        public void SendMessage_Success()
        {
            //Arrange
            string exchange   = nameof(exchange);
            string routingKey = nameof(routingKey);

            _modelMock.Setup(_isClosedExpression)
            .Returns(false)
            .Verifiable();
            var connection = new RabbitMQConnection(exchange, _connectionMock.Object);
            var publisher  = connection.CreatePublisher(routingKey);
            var body       = new byte[1] {
                0x01
            };

            //Act
            publisher.SendMessage(body);

            //Assert
            _connectionMock.Verify(_createModelExpression);
            _modelMock.Verify(_exchangeDeclareExpression);
            _modelMock.Verify(_isClosedExpression);
            _modelMock.Verify(_basicPublishExpression);
        }
        public void SendMessage_ModelClosed_InvalidOperationException()
        {
            //Arrange
            string exchange   = nameof(exchange);
            string routingKey = nameof(routingKey);

            _modelMock.Setup(_isClosedExpression)
            .Returns(true)
            .Verifiable();
            var connection = new RabbitMQConnection(exchange, _connectionMock.Object);
            var publisher  = connection.CreatePublisher(routingKey);
            var body       = new byte[1] {
                0x01
            };

            //Act
            var action = new Action(() => publisher.SendMessage(body));

            //Assert
            Assert.Throws <InvalidOperationException>(action);
            _connectionMock.Verify(_createModelExpression);
            _modelMock.Verify(_exchangeDeclareExpression);
            _modelMock.Verify((model) => model.IsClosed);
        }