diff --git a/src/mimeparser.rs b/src/mimeparser.rs index a7a7c66ff..7277c9900 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -1223,4 +1223,47 @@ mod tests { assert_eq!(mimeparser.user_avatar, AvatarAction::None); assert!(mimeparser.group_avatar.is_change()); } + + #[test] + fn test_mimeparser_message_kml() { + let context = dummy_context(); + let raw = b"Chat-Version: 1.0\n\ +From: foo \n\ +To: bar \n\ +Subject: Location streaming\n\ +Content-Type: multipart/mixed; boundary=\"==break==\"\n\ +\n\ +\n\ +--==break==\n\ +Content-Type: text/plain; charset=utf-8\n\ +\n\ +--\n\ +Sent with my Delta Chat Messenger: https://delta.chat\n\ +\n\ +--==break==\n\ +Content-Type: application/vnd.google-earth.kml+xml\n\ +Content-Disposition: attachment; filename=\"message.kml\"\n\ +\n\ +\n\ +\n\ +\n\ +XXX0.0,0.0\n\ +\n\ +\n\ +\n\ +--==break==--\n\ +;"; + + let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap(); + assert_eq!( + mimeparser.get_subject(), + Some("Location streaming".to_string()) + ); + assert!(mimeparser.location_kml.is_none()); + assert!(mimeparser.message_kml.is_some()); + + // There is only one part because message.kml attachment is special + // and only goes into message_kml. + assert_eq!(mimeparser.parts.len(), 1); + } }