public void TestReassembleRfc2046Example() { var message0 = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "rfc2046.0.eml")); var message1 = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "rfc2046.1.eml")); var original = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "rfc2046.eml")); Assert.IsNotNull(message0, "Failed to parse rfc2046.0.eml"); Assert.IsNotNull(message1, "Failed to parse rfc2046.1.eml"); Assert.IsTrue(message0.Body is MessagePartial, "The body of rfc2046.0.eml is not a message/partial"); Assert.IsTrue(message1.Body is MessagePartial, "The body of rfc2046.1.eml is not a message/partial"); var partials = new MessagePartial[] { (MessagePartial)message0.Body, (MessagePartial)message1.Body }; Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null, message0, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join((MimeMessage)null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join((ParserOptions)null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null)); var message = MessagePartial.Join(message0, partials); Assert.IsNotNull(message, "Failed to reconstruct the message"); Assert.AreEqual("Audio mail", message.Subject, "Subjects do not match"); Assert.IsTrue(message.Body.ContentType.IsMimeType("audio", "basic"), "Parsed message body is not audio/basic"); AssertRawMessageStreams(original, message); }
public void TestReassemble() { var message1 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.1.msg.txt")); var message2 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.2.msg.txt")); Assert.IsNotNull(message1, "Failed to parse message-partial.1.msg"); Assert.IsNotNull(message2, "Failed to parse message-partial.2.msg"); Assert.IsTrue(message1.Body is MessagePartial, "The body of message-partial.1.msg is not a message/partial"); Assert.IsTrue(message2.Body is MessagePartial, "The body of message-partial.2.msg is not a message/partial"); var partials = new MessagePartial[] { (MessagePartial)message1.Body, (MessagePartial)message2.Body }; Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null)); var message = MessagePartial.Join(partials); Assert.IsNotNull(message, "Failed to reconstruct the message"); Assert.AreEqual("{15_3779; Victoria & Cherry}: suzeFan - 2377h003.jpg", message.Subject, "Subjects do not match"); Assert.IsTrue(message.Body is Multipart, "Parsed message body is not a multipart"); var multipart = (Multipart)message.Body; Assert.AreEqual(2, multipart.Count, "Multipart does not contain the expected number of parts"); var part = multipart[1] as MimePart; Assert.IsNotNull(part, "Second part is null or not a MimePart"); Assert.IsTrue(part.ContentType.IsMimeType("image", "jpeg"), "Attachment is not an image/jpeg"); Assert.AreEqual("2377h003.jpg", part.FileName, "Attachment filename is not the expected value"); }
public void TestReassemble() { var message0 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.0.eml")); var message1 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.1.eml")); var message2 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.2.eml")); var original = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.eml")); Assert.IsNotNull(message0, "Failed to parse message-partial.0.eml"); Assert.IsNotNull(message1, "Failed to parse message-partial.1.eml"); Assert.IsNotNull(message2, "Failed to parse message-partial.2.eml"); Assert.IsTrue(message0.Body is MessagePartial, "The body of message-partial.0.eml is not a message/partial"); Assert.IsTrue(message1.Body is MessagePartial, "The body of message-partial.1.eml is not a message/partial"); Assert.IsTrue(message2.Body is MessagePartial, "The body of message-partial.2.eml is not a message/partial"); var partials = new MessagePartial[] { (MessagePartial)message0.Body, (MessagePartial)message1.Body, (MessagePartial)message2.Body }; Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null)); var message = MessagePartial.Join(partials); Assert.IsNotNull(message, "Failed to reconstruct the message"); Assert.AreEqual("Photo of a girl with feather earrings", message.Subject, "Subjects do not match"); Assert.IsTrue(message.Body is Multipart, "Parsed message body is not a multipart"); var multipart = (Multipart)message.Body; Assert.AreEqual(2, multipart.Count, "Multipart does not contain the expected number of parts"); var part = multipart[1] as MimePart; Assert.IsNotNull(part, "Second part is null or not a MimePart"); Assert.IsTrue(part.ContentType.IsMimeType("image", "jpeg"), "Attachment is not an image/jpeg"); Assert.AreEqual("earrings.jpg", part.FileName, "Attachment filename is not the expected value"); using (var stream = new MemoryStream()) { var options = FormatOptions.Default.Clone(); options.NewLineFormat = NewLineFormat.Unix; original.WriteTo(options, stream); var bytes0 = new byte[stream.Position]; Array.Copy(stream.GetBuffer(), 0, bytes0, 0, (int)stream.Position); stream.Position = 0; message.WriteTo(options, stream); var bytes1 = new byte[stream.Position]; Array.Copy(stream.GetBuffer(), 0, bytes1, 0, (int)stream.Position); Assert.AreEqual(bytes0.Length, bytes1.Length, "bytes"); for (int i = 0; i < bytes0.Length; i++) { Assert.AreEqual(bytes0[i], bytes1[i], "bytes[{0}]", i); } } }
public void TestArgumentExceptions() { var message = new MimeMessage(); Assert.Throws <ArgumentNullException> (() => new MessagePartial(null, 1, 5)); Assert.Throws <ArgumentOutOfRangeException> (() => new MessagePartial("id", 0, 5)); Assert.Throws <ArgumentOutOfRangeException> (() => new MessagePartial("id", 6, 5)); Assert.Throws <ArgumentNullException> (() => new MessagePartial("id", 1, 5).Accept(null)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Split(null, 500).ToList()); Assert.Throws <ArgumentOutOfRangeException> (() => MessagePartial.Split(message, 0).ToList()); }
public void TestSplit() { var message1 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.1.msg.txt")); var message2 = Load(Path.Combine("..", "..", "TestData", "partial", "message-partial.2.msg.txt")); var partials = new MessagePartial[] { (MessagePartial)message1.Body, (MessagePartial)message2.Body }; var message = MessagePartial.Join(partials); var split = MessagePartial.Split(message, 1024 * 16).ToList(); var parts = new List <MessagePartial> (); Assert.AreEqual(10, split.Count, "Unexpected count"); for (int i = 0; i < split.Count; i++) { parts.Add((MessagePartial)split[i].Body); Assert.AreEqual(10, parts[i].Total, "Total"); Assert.AreEqual(i + 1, parts[i].Number, "Number"); } var combined = MessagePartial.Join(parts); using (var stream = new MemoryStream()) { var options = FormatOptions.Default.Clone(); options.NewLineFormat = NewLineFormat.Unix; message.WriteTo(options, stream); var bytes0 = new byte[stream.Position]; Array.Copy(stream.GetBuffer(), 0, bytes0, 0, (int)stream.Position); stream.Position = 0; combined.WriteTo(options, stream); var bytes1 = new byte[stream.Position]; Array.Copy(stream.GetBuffer(), 0, bytes1, 0, (int)stream.Position); Assert.AreEqual(bytes0.Length, bytes1.Length, "bytes"); for (int i = 0; i < bytes0.Length; i++) { Assert.AreEqual(bytes0[i], bytes1[i], "bytes[{0}]", i); } } }
public void TestSplit() { var message = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "message-partial.eml")); var split = MessagePartial.Split(message, 1024 * 16).ToList(); var parts = new List <MessagePartial> (); Assert.AreEqual(11, split.Count, "Unexpected count"); for (int i = 0; i < split.Count; i++) { parts.Add((MessagePartial)split[i].Body); Assert.AreEqual(11, parts[i].Total, "Total"); Assert.AreEqual(i + 1, parts[i].Number, "Number"); } var combined = MessagePartial.Join(message, parts); AssertRawMessageStreams(message, combined); }
public void TestReassembleGirlOnTrainPhotoExample() { var message0 = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "message-partial.0.eml")); var message1 = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "message-partial.1.eml")); var message2 = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "message-partial.2.eml")); var original = Load(Path.Combine(TestHelper.ProjectDir, "TestData", "partial", "message-partial.eml")); Assert.IsNotNull(message0, "Failed to parse message-partial.0.eml"); Assert.IsNotNull(message1, "Failed to parse message-partial.1.eml"); Assert.IsNotNull(message2, "Failed to parse message-partial.2.eml"); Assert.IsTrue(message0.Body is MessagePartial, "The body of message-partial.0.eml is not a message/partial"); Assert.IsTrue(message1.Body is MessagePartial, "The body of message-partial.1.eml is not a message/partial"); Assert.IsTrue(message2.Body is MessagePartial, "The body of message-partial.2.eml is not a message/partial"); var partials = new MessagePartial[] { (MessagePartial)message0.Body, (MessagePartial)message1.Body, (MessagePartial)message2.Body }; Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null, message0, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join((MimeMessage)null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join((ParserOptions)null, partials)); Assert.Throws <ArgumentNullException> (() => MessagePartial.Join(null)); var message = MessagePartial.Join(partials); Assert.IsNotNull(message, "Failed to reconstruct the message"); Assert.AreEqual("Photo of a girl with feather earrings", message.Subject, "Subjects do not match"); Assert.IsTrue(message.Body is Multipart, "Parsed message body is not a multipart"); var multipart = (Multipart)message.Body; Assert.AreEqual(2, multipart.Count, "Multipart does not contain the expected number of parts"); var part = multipart[1] as MimePart; Assert.IsNotNull(part, "Second part is null or not a MimePart"); Assert.IsTrue(part.ContentType.IsMimeType("image", "jpeg"), "Attachment is not an image/jpeg"); Assert.AreEqual("earrings.jpg", part.FileName, "Attachment filename is not the expected value"); AssertRawMessageStreams(original, message); }
protected internal override void VisitMessagePartial(MessagePartial entity) { MessagePartial++; base.VisitMessagePartial(entity); }