From d8363d70e8998e87cec0b243c03118f774aaa7ac Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Sat, 22 Jul 2023 12:14:37 +0200 Subject: [PATCH] more tests for content type --- src/mime/content_fields.rs | 97 -------------------------------------- src/mime/type.rs | 36 ++++++++++++++ 2 files changed, 36 insertions(+), 97 deletions(-) delete mode 100644 src/mime/content_fields.rs diff --git a/src/mime/content_fields.rs b/src/mime/content_fields.rs deleted file mode 100644 index c9617be..0000000 --- a/src/mime/content_fields.rs +++ /dev/null @@ -1,97 +0,0 @@ -use std::borrow::Cow; -use encoding_rs::Encoding; -use nom::{ - branch::alt, - bytes::complete::{tag,take_while1}, - character::complete as character, - combinator::{into, opt}, - multi::many0, - sequence::{delimited, preceded, tuple}, - IResult, -}; - -use crate::error::IMFError; -use crate::fragments::lazy; -use crate::fragments::whitespace::cfws; -use crate::fragments::quoted::quoted_string; - - - - - -/* -impl<'a> From<&'a str> for MultipartSubtype<'a> { - fn from(csub: &'a str) -> Self { - match csub.to_lowercase().as_ref() { - "alternative" => MultipartSubtype::Alternative, - "mixed" => MultipartSubtype::Mixed, - "digest" => MultipartSubtype::Digest, - "parallel" => MultipartSubtype::Parallel, - "report" => MultipartSubtype::Report, - _ => MultipartSubtype::Other(csub), - } - } -} - -impl<'a> From<&'a str> for MessageSubtype<'a> { - fn from(csub: &'a str) -> Self { - match csub.to_lowercase().as_ref() { - "rfc822" => MessageSubtype::RFC822, - "partial" => MessageSubtype::Partial, - "external" => MessageSubtype::External, - _ => MessageSubtype::Other(csub), - } - } -} - -impl<'a> From<&'a str> for TextSubtype<'a> { - fn from(csub: &'a str) -> Self { - match csub.to_lowercase().as_ref() { - "html" => TextSubtype::Html, - "plain" => TextSubtype::Plain, - _ => TextSubtype::Other(csub), - } - } -} -*/ - -#[cfg(test)] -mod tests { - use super::*; - use crate::fragments::lazy; - - - - #[test] - fn test_content_type_multipart() { - assert_eq!( - Type::try_from(&lazy::Type("multipart/mixed;\r\n\tboundary=\"--==_mimepart_64a3f2c69114f_2a13d020975fe\";\r\n\tcharset=UTF-8")), - Ok(Type::Multipart(MultipartDesc { - subtype: MultipartSubtype::Mixed, - boundary: "--==_mimepart_64a3f2c69114f_2a13d020975fe".into(), - unknown_parameters: vec![Parameter::Charset(EmailCharset::UTF_8)], - })) - ); - } - - #[test] - fn test_content_type_message() { - assert_eq!( - Type::try_from(&lazy::Type("message/rfc822")), - Ok(Type::Message(MessageDesc { - subtype: MessageSubtype::RFC822, - unknown_parameters: vec![], - })) - ); - } - - #[test] - fn test_parameter_ascii() { - assert_eq!( - parameter("charset=us-ascii (Plain text)"), - Ok(("", Parameter::Charset(EmailCharset::US_ASCII))) - ); - } - - -} diff --git a/src/mime/type.rs b/src/mime/type.rs index c8bb1c5..7c533e7 100644 --- a/src/mime/type.rs +++ b/src/mime/type.rs @@ -195,4 +195,40 @@ mod tests { }) ); } + + + #[test] + fn test_content_type_multipart() { + let (rest, nt) = naive_type(b"multipart/mixed;\r\n\tboundary=\"--==_mimepart_64a3f2c69114f_2a13d020975fe\";\r\n\tcharset=UTF-8").unwrap(); + assert_eq!(rest, &[]); + assert_eq!( + nt.to_type(), + Type::Multipart(MultipartDesc { + subtype: MultipartSubtype::Mixed, + boundary: "--==_mimepart_64a3f2c69114f_2a13d020975fe".into(), + }) + ); + } + + #[test] + fn test_content_type_message() { + let (rest, nt) = naive_type(b"message/rfc822").unwrap(); + assert_eq!(rest, &[]); + + assert_eq!( + nt.to_type(), + Type::Message(MessageSubtype::RFC822), + ); + } + + #[test] + fn test_parameter_ascii() { + assert_eq!( + parameter(b"charset = (simple) us-ascii (Plain text)"), + Ok((&b""[..], Parameter { + name: &b"charset"[..], + value: MIMEWord::Atom(&b"us-ascii"[..]), + })) + ); + } }