Example #1
0
        public void Read_EmailFieldWithTagWithValue_CorrectXmlReturned()
        {
            //arrange
            var buffer     = new char[100];
            var reader     = new StringReader("To: Antoine Lloyd <*****@*****.**>\r\nasd<test>text</test>asd");
            var lexer      = new EmailXmlLexer(reader);
            var textReader = new EmailXmlTextReader(lexer, typeof(SaveReservationDto));

            //act
            var count = textReader.Read(buffer, 0, buffer.Length);
            var str   = new string(buffer, 0, count);

            //assert
            Assert.Equal("<SaveReservationDto><test>text</test></SaveReservationDto>", str);
        }
Example #2
0
        public void Read_TextBeforeAndAfterWithNestedTagWithValue_CorrectXmlReturned()
        {
            //arrange
            var buffer     = new char[100];
            var reader     = new StringReader("asd<test><inner>text</inner></test>asd");
            var lexer      = new EmailXmlLexer(reader);
            var textReader = new EmailXmlTextReader(lexer, typeof(SaveReservationDto));

            //act
            var count = textReader.Read(buffer, 0, buffer.Length);
            var str   = new string(buffer, 0, count);

            //assert
            Assert.Equal("<SaveReservationDto><test><inner>text</inner></test></SaveReservationDto>", str);
        }
Example #3
0
        public override Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context, Encoding encoding)
        {
            var request = context.HttpContext.Request;
            
            request.EnableBuffering();

            using (var stream = new StreamReader(new NonDisposableStream(request.Body)))
            using (var text = new EmailXmlTextReader(new EmailXmlLexer(stream), context.ModelType))
            using (var reader = XmlReader.Create(text))
            {
                var serializer = new XmlSerializer(context.ModelType);
                var model = serializer.Deserialize(reader);

                return InputFormatterResult.SuccessAsync(model);
            }
        }
Example #4
0
        public void Serialization_EmailContentWithEmailAddress_ValuesDeserializedCorrectly()
        {
            var email = Assembly
                        .GetExecutingAssembly()
                        .GetManifestResourceStream("Serko.Expense.Tests.Resources.EmailTo");

            using (email)
                using (var stream = new EmailXmlTextReader(new EmailXmlLexer(new StreamReader(email)), typeof(SaveReservationDto)))
                    using (var reader = XmlReader.Create(stream))
                    {
                        var serializer = new XmlSerializer(typeof(SaveReservationDto));
                        var model      = (SaveReservationDto)serializer.Deserialize(reader);

                        Assert.Equal("Thursday 27 April 2017", model.Date);
                        Assert.Equal(new DateTime(2017, 4, 27), model.DateTime);
                        Assert.Equal("Viaduct Steakhouse", model.Vendor);
                        Assert.Equal("DEV002", model.Expense.CostCentre);
                        Assert.Equal(1024.01m, model.Expense.Total);
                    }
        }
Example #5
0
        public void Read_BufferIsCorrectlyRolled_CorrectXmlReturned()
        {
            //arrange
            var buffer     = new char[5];
            var output     = new StringBuilder();
            var reader     = new StringReader("asd<test><inner>text</inner></test>asd");
            var lexer      = new EmailXmlLexer(reader);
            var textReader = new EmailXmlTextReader(lexer, typeof(SaveReservationDto));

            //act
            var count = textReader.Read(buffer, 0, buffer.Length);

            while (count != 0)
            {
                output.Append(buffer, 0, count);

                buffer = new char[5];
                count  = textReader.Read(buffer, 0, buffer.Length);
            }

            //assert
            Assert.Equal("<SaveReservationDto><test><inner>text</inner></test></SaveReservationDto>", output.ToString());
        }