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);
        }
Esempio n. 2
0
            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);
        }
Esempio n. 4
0
        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);
        }