public void StartingTheHostASecondTimeThrowsException() { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); const string queue = "testQueue"; string[] topics = { "Topic1", "Topic2" }; contextMock.Setup(e => e.CreateMessageReceiver("testQueue", topics)) .Returns(receiverMock.Object); var listeners = new[] { new MicroserviceListener { TopicExpressions = topics } }; var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object); host.Start(); // Act void Act() => host.Start(); // Assert BusConfigurationException exception = Assert.ThrowsException <BusConfigurationException>(Act); Assert.AreEqual("Attempted to start the MicroserviceHost, but it has already started.", exception.Message); }
public void StartListeningIsCalledOnReceiver() { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); const string queue = "testQueue"; string[] topics = { "Topic1", "Topic2" }; contextMock.Setup(e => e.CreateMessageReceiver(queue, topics)) .Returns(receiverMock.Object); var listeners = new[] { new MicroserviceListener { TopicExpressions = topics } }; var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object); // Act host.Start(); // Assert receiverMock.Verify(e => e.StartReceivingMessages()); }
public void ResumingHostSetsIsPausedToFalse() { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); const string queue = "testQueue"; string[] topics = { "Topic1", "Topic2" }; contextMock.Setup(e => e.CreateMessageReceiver(queue, topics)) .Returns(receiverMock.Object); var listeners = new[] { new MicroserviceListener { TopicExpressions = topics } }; var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object); host.Start(); host.Pause(); // Act host.Resume(); // Assert Assert.AreEqual(false, host.IsPaused); }
public void CreateListenerIsCalledOnce(int listenerAmount) { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); contextMock.Setup(e => e.CreateMessageReceiver(It.IsAny <string>(), It.IsAny <IEnumerable <string> >())) .Returns(receiverMock.Object); var listeners = Enumerable.Range(0, listenerAmount).Select(e => new MicroserviceListener()); var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), "test.queue", logger.Object); // Act host.Start(); // Assert contextMock.Verify(e => e.CreateMessageReceiver(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()), Times.Once); }
public void ResumingTriggersHostResumedEventWithProperValues() { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); const string queue = "testQueue"; string[] topics = { "Topic1", "Topic2" }; contextMock.Setup(e => e.CreateMessageReceiver(queue, topics)) .Returns(receiverMock.Object); var listeners = new[] { new MicroserviceListener { TopicExpressions = topics } }; var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object); host.Start(); host.Pause(); IMicroserviceHost resultHost = null; HostResumedEventArgs eventArgs = null; host.HostResumed += (microserviceHost, args) => { resultHost = microserviceHost; eventArgs = args; }; // Act host.Resume(); // Assert Assert.AreEqual(host, resultHost); Assert.IsNotNull(eventArgs); }
public void CreateListenerIsCalledWithProperParameters(string queueName, string topics) { // Arrange var contextMock = new Mock <IBusContext <IConnection> >(); var receiverMock = new Mock <IMessageReceiver>(); var logger = new Mock <ILogger <MicroserviceHost> >(); string[] topicNames = topics.Split(','); contextMock.Setup(e => e.CreateMessageReceiver(queueName, topicNames)) .Returns(receiverMock.Object); var listeners = new[] { new MicroserviceListener { TopicExpressions = topicNames } }; var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queueName, logger.Object); // Act host.Start(); // Assert contextMock.Verify(e => e.CreateMessageReceiver(queueName, topicNames)); }