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"); }
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."); }
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); }
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); }