示例#1
0
        private bool GetSingleFile(string Endpoint, out string StatusCode, out TransmissionMessageDTO Data)
        {
            var Result = false;

            StatusCode = "";

            var Request = WebRequest.Create(Endpoint) as FtpWebRequest;

            Request.Method = WebRequestMethods.Ftp.DownloadFile;

            using (var Response = Request.GetResponse() as FtpWebResponse)
            {
                StatusCode = Response.StatusCode.ToString();
                Result     = Response.StatusCode.Equals(HttpStatusCode.OK);

                if (Result)
                {
                    using (var DataStream = Response.GetResponseStream())
                    {
                        Data = new TransmissionMessageDTO()
                        {
                            Content = this.ExtractFromStream(DataStream)
                        };
                    }
                }
                else
                {
                    Data              = new TransmissionMessageDTO();
                    Data.Error.Code   = StatusCode;
                    Data.Error.Reason = Response.StatusDescription;
                }
            }

            return(Result);
        }
示例#2
0
        public void TestSendMessage()
        {
            // Arrange
            var TestQueueName     = "foo";
            var TestTransactionID = 100;
            var TestHeaders       = new Dictionary <string, object> {
                { "bar", "baz" }
            };
            var TestRequestMessage = new TransmissionMessageDTO()
            {
                Content = "Test message!"
            };
            var TestTransaction = new TransactionDTO()
            {
                TransactionID = TestTransactionID, Headers = TestHeaders, RequestMessage = TestRequestMessage
            };

            var TestContext = new LinkerSharpContext();

            TestContext.DirectQueues.Add(TestQueueName, new Queue <TransactionDTO>());
            TestContext.DirectQueues[TestQueueName].Enqueue(TestTransaction);

            var TestFactory  = new EndpointFactory <IConsumer>();
            var TestConsumer = TestFactory.GetFrom($"direct->{TestQueueName}", TestContext);

            // Execution
            var TestResults = TestConsumer.ReceiveMessages();

            // Assertions
            Assert.AreEqual(1, TestResults.Count, "TestConsumer should have results!");
            Assert.AreEqual(TestTransactionID, TestResults[0].TransactionID);
            Assert.AreEqual(TestHeaders["bar"], TestResults[0].Headers["bar"]);
            Assert.AreEqual(TestRequestMessage.Content, TestResults[0].RequestMessage.Content);
            Assert.IsTrue(TestResults[0].ResponseMessage == null);
        }
示例#3
0
        public void TestSetBody()
        {
            // Arrange
            var TestMessageNewContent = "fee";
            var TestSecondMessage     = new TransmissionMessageDTO()
            {
                Name = this.TestMessage.Name, Content = this.TestMessage.Content
            };
            var TestSecondTransaction = new TransactionDTO()
            {
                TransactionID   = 1000,
                Transport       = TransportTypeEnum.IN_OUT,
                RequestMessage  = TestSecondMessage,
                ResponseMessage = TestSecondMessage
            };
            var TestSecondRoute = new RouteDefinition(new List <TransactionDTO>()
            {
                TestSecondTransaction
            }, this.TestContext);

            // Execution
            var TestResult       = this.TestRoute.SetBody(TestMessageNewContent);
            var TestSecondResult = TestSecondRoute.SetBody(TestMessageNewContent, true);

            // Assertions
            Assert.IsInstanceOfType(TestResult, typeof(RouteDefinition));
            Assert.IsInstanceOfType(TestSecondResult, typeof(RouteDefinition));
            Assert.AreEqual(TestMessageNewContent, this.TestMessage.Content, $"Content should have change from {TEST_MESSAGE_CONTENT} to {TestMessageNewContent}!");
            Assert.AreEqual(TEST_MESSAGE_CONTENT + TestMessageNewContent, TestSecondMessage.Content, $"Content should have change from {TEST_MESSAGE_CONTENT} to {TEST_MESSAGE_CONTENT + TestMessageNewContent}!");
        }
示例#4
0
        public void Init()
        {
            this.TestFilePath = $"{AppDomain.CurrentDomain.BaseDirectory.Replace(@"bin\Debug", "TestFiles")}\\Destiny\\";

            this.TestContext = new LinkerSharpContext();

            var TestFactory = new EndpointFactory <IProducer>();

            this.TestProducer = TestFactory.GetFrom($"file->{this.TestFilePath}", this.TestContext);

            this.TestMessage = new TransmissionMessageDTO()
            {
                Content = "this is a test file.", Name = "Testfile.txt", Destiny = this.TestFilePath
            };
        }
示例#5
0
        private bool GetMultiFiles(string Endpoint, out string StatusCode, out List <TransmissionMessageDTO> Data)
        {
            StatusCode = "";
            Data       = new List <TransmissionMessageDTO>();
            var Result = false;

            #region File List
            var Request = WebRequest.Create(Endpoint) as FtpWebRequest;
            Request.Method = WebRequestMethods.Ftp.ListDirectory;

            var Files = new List <string>();
            using (var Response = Request.GetResponse() as FtpWebResponse)
            {
                StatusCode = Response.StatusCode.ToString();
                Result     = Response.StatusCode.Equals(HttpStatusCode.OK);

                if (Result)
                {
                    using (var DataStream = new StreamReader(Response.GetResponseStream()))
                    {
                        string Line = DataStream.ReadLine();
                        while (!string.IsNullOrEmpty(Line))
                        {
                            Files.Add(Line);
                            Line = DataStream.ReadLine();
                        }
                    }
                }
                else
                {
                    var DataUnit = new TransmissionMessageDTO();
                    DataUnit.Error.Code   = StatusCode;
                    DataUnit.Error.Reason = Response.StatusDescription;

                    Data.Add(DataUnit);
                    return(Result);
                }
            }
            #endregion

            foreach (var File in Files)
            {
                this.GetSingleFile($"{Endpoint}/{File}", out StatusCode, out TransmissionMessageDTO Message);
                Data.Add(Message);
            }

            return(Result);
        }
示例#6
0
        public void Init()
        {
            this.TestFilePath = $"{AppDomain.CurrentDomain.BaseDirectory.Replace(@"bin\Debug", "TestFiles")}\\Destiny\\";

            this.TestContext = new LinkerSharpContext();

            var TestFactory = new EndpointFactory <IProducer>();

            this.TestProducer = new FTPProducer($"ftp->{this.TestFilePath}", this.TestContext, new FTPConnectorMock(FTPConnectorMock.Behaviour.SUCCESS));


            this.TestMessage = new TransmissionMessageDTO()
            {
                Content = "This is a test file.", Name = "Testfile.txt", Destiny = this.TestFilePath
            };
        }
示例#7
0
        public void Init()
        {
            this.TestMessage = new TransmissionMessageDTO()
            {
                Name = TEST_MESSAGE_NAME, Content = TEST_MESSAGE_CONTENT
            };
            this.TestTransaction = new TransactionDTO()
            {
                TransactionID   = TEST_TRANSACT_ID,
                Transport       = TransportTypeEnum.IN_OUT,
                RequestMessage  = this.TestMessage,
                ResponseMessage = this.TestMessage
            };

            this.TestContext = new LinkerSharpContext();

            this.TestRoute = new RouteDefinition(new List <TransactionDTO>()
            {
                TestTransaction
            }, this.TestContext);
        }
示例#8
0
        public void TestSendMessage()
        {
            // Arrange
            var TestContext   = new LinkerSharpContext();
            var TestQueueName = "foo";
            var TestMessage   = new TransmissionMessageDTO()
            {
                Content = "this is a direct test message.", Name = "", Destiny = TestQueueName
            };
            var TestTransaction = new TransactionDTO()
            {
                RequestMessage = TestMessage, ResponseMessage = TestMessage
            };

            var TestFactory  = new EndpointFactory <IProducer>();
            var TestProducer = TestFactory.GetFrom($"direct->{TestQueueName}", TestContext);

            TestProducer.Transaction = TestTransaction;

            // Execution
            var Result = TestProducer.SendMessage();

            // Assertions
        }