public void WarewolfWebRequestForwarder_Consume_GivenMappableInputsAndXmlData_ShouldCreateCorrectPostBody() { //---------------------------------Arrange-------------------------------- var mockHttpClient = new Mock <IHttpClient>(); var mockHttpClientFactory = new Mock <IHttpClientFactory>(); var postBody = ""; var headers = new Headers(); headers["Warewolf-Custom-Transaction-Id"] = new [] { new Guid().ToString() }; mockHttpClient.Setup(c => c.PostAsync(It.IsAny <string>(), It.IsAny <string>())).Callback((string o, string p) => { postBody = p; }).Returns(Task <HttpResponseMessage> .FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.OK))); mockHttpClientFactory.Setup(o => o.New(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), headers)).Returns(mockHttpClient.Object); var testUrl = "http://warewolf.io:0420/test/url"; var inputs = new List <IServiceInputBase> { new ServiceInput("Name", "FirstName") }; var WarewolfWebRequestForwarder = new WarewolfWebRequestForwarder(mockHttpClientFactory.Object, new Mock <IPublisher>().Object, testUrl, "", "", inputs, false); var expectedPostBody = "{\"Name\":\"My Name\"}"; //---------------------------------Act------------------------------------ string message = "<Root><FirstName>My Name</FirstName></Root>"; var result = WarewolfWebRequestForwarder.Consume(Encoding.UTF8.GetBytes(message), headers).Result; //---------------------------------Assert--------------------------------- Assert.AreEqual(ConsumerResult.Success, result); Assert.AreEqual(expectedPostBody, postBody); }
public void Run() { var logger = new ExecutionLogger(new JsonSerializer(), new WebSocketPool()); logger.Info("Starting queue worker", _config.QueueName); try { if (_config.Source != null) { var deadletterPublisher = CreateDeadLetterPublisher(); var requestForwarder = new WarewolfWebRequestForwarder(new HttpClientFactory(), deadletterPublisher, _config.WorkflowUrl, _config.Username, _config.Password, _config.Inputs, _config.MapEntireMessage); var loggingForwarder = new LoggingConsumerWrapper(logger, requestForwarder, _config.TriggerId, _config.Username); var queue = _config.Source; Console.WriteLine($"Starting listening: {queue.ResourceName} Queue: {_config.QueueName}"); Console.WriteLine($"Workflow: {_config.WorkflowUrl} Inputs: {_config.Inputs}"); var connection = queue.NewConnection(); connection.StartConsuming(_config.QueueConfig, loggingForwarder); } else { Console.WriteLine("Failed to start queue worker: No queue source."); logger.Error("Failed to start queue worker: No queue source", _config.QueueName); } } catch (Exception ex) { Console.WriteLine(ex.Message); logger.Error(ex.Message, _config.QueueName); } }
public async Task WarewolfWebRequestForwarder_Consume_GivenSuccessResponse_ShouldNotPublishMessageToDeadLetterQueueAsync() { //---------------------------------Arrange-------------------------------- var mockHttpClient = new Mock <IHttpClient>(); var mockPublisher = new Mock <IPublisher>(); mockPublisher.Setup(p => p.Publish(It.IsAny <byte[]>())).Verifiable(); var headers = new Headers(); headers["Warewolf-Custom-Transaction-Id"] = new [] { new Guid().ToString() }; var mockHttpClientFactory = new Mock <IHttpClientFactory>(); mockHttpClient.Setup(c => c.PostAsync(It.IsAny <string>(), It.IsAny <string>())).Returns(Task <HttpResponseMessage> .FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.OK))); mockHttpClientFactory.Setup(o => o.New(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), headers)).Returns(mockHttpClient.Object); var testUrl = "http://warewolf.io:0420/test/url"; var inputs = new List <IServiceInputBase>(); var WarewolfWebRequestForwarder = new WarewolfWebRequestForwarder(mockHttpClientFactory.Object, mockPublisher.Object, testUrl, "", "", inputs, false); //---------------------------------Act------------------------------------ string message = "{\"FirstName\":\"My Name\"}"; var result = await WarewolfWebRequestForwarder.Consume(Encoding.UTF8.GetBytes(message), headers); //---------------------------------Assert--------------------------------- Assert.AreEqual(ConsumerResult.Success, result); mockPublisher.Verify(p => p.Publish(It.IsAny <byte[]>()), Times.Never); }
public void WarewolfWebRequestForwarder_Consume_Should_CallPostAsync() { //---------------------------------Arrange-------------------------------- var mockHttpClient = new Mock <IHttpClient>(); var mockHttpClientFactory = new Mock <IHttpClientFactory>(); mockHttpClient.Setup(c => c.PostAsync(It.IsAny <string>(), It.IsAny <string>())).Returns(Task <HttpResponseMessage> .FromResult(new HttpResponseMessage(System.Net.HttpStatusCode.OK))); mockHttpClientFactory.Setup(o => o.New(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(mockHttpClient.Object); var testUrl = "http://warewolf.io:0420/test/url"; var WarewolfWebRequestForwarder = new WarewolfWebRequestForwarder(mockHttpClientFactory.Object, new Mock <IPublisher>().Object, testUrl, "", "", new List <IServiceInputBase>(), false); //---------------------------------Act------------------------------------ var result = WarewolfWebRequestForwarder.Consume(Encoding.UTF8.GetBytes("This is a message")).Result; //---------------------------------Assert--------------------------------- Assert.AreEqual(ConsumerResult.Success, result); mockHttpClient.Verify(o => o.PostAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Once); }