Exemplo n.º 1
0
        public void PublishRabbitMQActivity_Execute_Failure_NullException()
        {
            //------------Setup for test--------------------------
            var resourceCatalog   = new Mock <IResourceCatalog>();
            var rabbitMQSource    = new Mock <RabbitMQSource>();
            var connectionFactory = new Mock <ConnectionFactory>();

            resourceCatalog.Setup(r => r.GetResource <RabbitMQSource>(It.IsAny <Guid>(), It.IsAny <Guid>()))
            .Returns(rabbitMQSource.Object);
            connectionFactory.Setup(c => c.CreateConnection()).Returns <IConnection>(null);

            var env        = CreateExecutionEnvironment();
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            dataObject.Setup(o => o.ExecutionID).Returns(new Guid?());
            dataObject.Setup(o => o.CustomTransactionID).Returns(new Guid?().ToString());
            dataObject.Setup(o => o.Environment).Returns(env);

            var publishRabbitMQActivity =
                new TestPublishRabbitMQActivity(resourceCatalog.Object, connectionFactory.Object);

            //------------Execute Test---------------------------
            publishRabbitMQActivity.TestExecuteTool(dataObject.Object);
            var result = publishRabbitMQActivity.TestPerformExecution(new Dictionary <string, string>
            {
                { "QueueName", "Q1" }, { "Message", "Test message" }
            });

            //------------Execute Test---------------------------
            //------------Assert Results-------------------------
            Assert.Fail("Exception not thrown");
        }
Exemplo n.º 2
0
        public void PublishRabbitMQActivity_Execute_Failure_InvalidParams()
        {
            //------------Setup for test--------------------------
            var resourceCatalog = new Mock <IResourceCatalog>();
            var rabbitMQSource  = new Mock <RabbitMQSource>();
            var param           = new Dictionary <string, string> {
            };

            resourceCatalog.Setup(r => r.GetResource <RabbitMQSource>(It.IsAny <Guid>(), It.IsAny <Guid>()))
            .Returns(rabbitMQSource.Object);

            var env        = CreateExecutionEnvironment();
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            dataObject.Setup(o => o.ExecutionID).Returns(new Guid?());
            dataObject.Setup(o => o.CustomTransactionID).Returns(new Guid?().ToString());
            dataObject.Setup(o => o.Environment).Returns(env);

            var publishRabbitMQActivity =
                new TestPublishRabbitMQActivity(resourceCatalog.Object, new ConnectionFactory());

            //------------Execute Test---------------------------
            publishRabbitMQActivity.TestExecuteTool(dataObject.Object);
            var result = publishRabbitMQActivity.TestPerformExecution(param);

            //------------Assert Results-------------------------
            Assert.AreEqual(result[0], "Failure: Queue Name and Message are required.");
        }
Exemplo n.º 3
0
        public void PublishRabbitMQActivity_Execute_Success()
        {
            //------------Setup for test--------------------------
            var          env = CreateExecutionEnvironment();
            const string queueName = "Q1", message = "Test Message";
            var          param = new Dictionary <string, string> {
                { "QueueName", queueName }, { "Message", message }
            };
            var body = Encoding.UTF8.GetBytes(message);

            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            dataObject.Setup(o => o.ExecutionID).Returns(new Guid?());
            dataObject.Setup(o => o.CustomTransactionID).Returns(new Guid?().ToString());
            dataObject.Setup(o => o.Environment).Returns(env);

            var resourceCatalog     = new Mock <IResourceCatalog>();
            var rabbitMQSource      = new Mock <RabbitMQSource>();
            var connectionFactory   = new Mock <ConnectionFactory>();
            var connection          = new Mock <IConnection>();
            var channel             = new Mock <IModel>();
            var mockBasicProperties = new Mock <IBasicProperties>();

            mockBasicProperties.SetupAllProperties();

            resourceCatalog.Setup(r => r.GetResource <RabbitMQSource>(It.IsAny <Guid>(), It.IsAny <Guid>()))
            .Returns(rabbitMQSource.Object);
            connectionFactory.Setup(c => c.CreateConnection()).Returns(connection.Object);
            connection.Setup(c => c.CreateModel()).Returns(channel.Object);
            channel.Setup(c => c.QueueDeclare(queueName, false, false, false, null));
            channel.Setup(c => c.BasicPublish(string.Empty, queueName, It.IsAny <bool>(), null, body));
            channel.Setup(c => c.CreateBasicProperties()).Returns(mockBasicProperties.Object);

            var publishRabbitMQActivity =
                new TestPublishRabbitMQActivity(resourceCatalog.Object, connectionFactory.Object);

            //------------Execute Test---------------------------
            publishRabbitMQActivity.TestExecuteTool(dataObject.Object);
            var result = publishRabbitMQActivity.TestPerformExecution(param);

            //------------Assert Results-------------------------
            resourceCatalog.Verify(r => r.GetResource <RabbitMQSource>(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.AtLeastOnce);
            connectionFactory.Verify(c => c.CreateConnection(), Times.Once);
            connection.Verify(c => c.CreateModel(), Times.Once);
            channel.Verify(
                c => c.ExchangeDeclare(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <bool>(), It.IsAny <bool>(),
                                       It.IsAny <IDictionary <string, object> >()), Times.Once);
            channel.Verify(
                c => c.QueueDeclare(It.IsAny <String>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(),
                                    It.IsAny <IDictionary <string, object> >()), Times.Once);
            channel.Verify(
                c => c.BasicPublish(It.IsAny <String>(), It.IsAny <String>(), It.IsAny <bool>(), It.IsAny <IBasicProperties>(),
                                    It.IsAny <byte[]>()), Times.Once);
            Assert.AreEqual(result[0], "Success");
            Assert.IsTrue(mockBasicProperties.Object.Persistent);
        }
Exemplo n.º 4
0
        public void PublishRabbitMQActivity_Execute_GetCorrelationID_AutoCorrelation_SetTo_Manual_ExpectEvaluatedCorrelationId()
        {
            var exp   = "[[evalthis]]";
            var value = "value";
            var env   = new ExecutionEnvironment();

            env.Assign(exp, value, 0);

            var resourceId = Guid.NewGuid();

            var mockResourceCatalog = new Mock <IResourceCatalog>();

            mockResourceCatalog.Setup(o => o.GetResource <RabbitMQSource>(Common.GlobalConstants.ServerWorkspaceID, resourceId))
            .Returns(new RabbitMQSource());

            var mockDataObject = new Mock <IDSFDataObject>();

            mockDataObject.Setup(o => o.Environment)
            .Returns(env);
            mockDataObject.Setup(o => o.CustomTransactionID)
            .Returns(exp);

            var mockBasicProperties = new Mock <IBasicProperties>();

            var mockModel = new Mock <IModel>();

            mockModel.Setup(o => o.CreateBasicProperties())
            .Returns(mockBasicProperties.Object);

            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(o => o.CreateModel())
            .Returns(mockModel.Object);

            var mockConnectionFactory = new Mock <ConnectionFactory>(); //TODO: Try using ISourceConnectionFactory

            mockConnectionFactory.Setup(o => o.CreateConnection())
            .Returns(mockConnection.Object);

            var sut = new TestPublishRabbitMQActivity(mockResourceCatalog.Object, mockConnectionFactory.Object)
            {
                RabbitMQSourceResourceId = resourceId,
                QueueName       = "queue-one",
                Message         = "test:message",
                BasicProperties = new Warewolf.Data.Options.RabbitMqPublishOptions
                {
                    AutoCorrelation = new Warewolf.Data.Options.Manual
                    {
                        CorrelationID = exp
                    }
                }
            };

            sut.TestExecuteTool(mockDataObject.Object);

            mockBasicProperties.VerifySet(o => o.CorrelationId = value);
        }