public async Task GetMessage_ValidMime() { DateTime startDate = DateTime.Now; DbModel.Message testMessage1 = await GetTestMessage1(); TestMessagesRepository messagesRepository = new TestMessagesRepository(testMessage1); MessagesController messagesController = new MessagesController(messagesRepository); ApiModel.Message result = messagesController.GetMessage(testMessage1.Id); Assert.Null(result.MimeParseError); Assert.Equal(testMessage1.Id, result.Id); Assert.InRange(result.ReceivedDate, startDate, DateTime.Now); Assert.Equal("*****@*****.**", result.From); Assert.Equal("*****@*****.**", result.To); Assert.Equal("*****@*****.**", result.Bcc); Assert.Equal("*****@*****.**", result.Cc); Assert.Equal("subject", result.Subject); var allParts = result.Parts.Flatten(p => p.ChildParts).ToList(); Assert.Equal(6, allParts.Count); Assert.All(allParts, p => { Assert.Equal(testMessage1.Id, p.MessageId); Assert.NotNull(p.Id); Assert.NotEqual("", p.Id); }); //All parts have a unique Id Assert.Equal(allParts.Count, allParts.Select(p => p.Id).Distinct().Count()); }
public async Task GetPartContent() { DbModel.Message testMessage1 = await GetTestMessage1(); TestMessagesRepository messagesRepository = new TestMessagesRepository(testMessage1); MessagesController messagesController = new MessagesController(messagesRepository); var parts = messagesController.GetMessage(testMessage1.Id).Parts.Flatten(p => p.ChildParts).SelectMany(p => p.Attachments); var part = parts.First(p => p.FileName == "file2"); var result = messagesController.GetPartContent(testMessage1.Id, part.Id); var stringResult = await new StreamReader(result.FileStream, Encoding.UTF8).ReadToEndAsync(); Assert.Equal(testMessage1File2Content, stringResult); }