more tests for content type
This commit is contained in:
parent
0d4e472d41
commit
d8363d70e8
2 changed files with 36 additions and 97 deletions
|
@ -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)))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -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"[..]),
|
||||||
|
}))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue