diff --git a/src/dc_mimeparser.rs b/src/dc_mimeparser.rs index 735852720..5b92959da 100644 --- a/src/dc_mimeparser.rs +++ b/src/dc_mimeparser.rs @@ -1778,6 +1778,7 @@ pub unsafe fn mailimf_find_optional_field( #[cfg(test)] mod tests { use super::*; + use crate::test_utils::*; use std::ffi::CStr; #[test] @@ -1852,4 +1853,30 @@ mod tests { mailmime_free(mime); } } + #[test] + fn test_dc_mimeparser_with_context() { + unsafe { + let context = dummy_context(); + let raw = b"Content-Type: multipart/mixed; boundary=\"==break==\";\nSubject: outer-subject\nX-Special-A: special-a\nFoo: Bar\nChat-Version: 0.0\n\n--==break==\nContent-Type: text/plain; protected-headers=\"v1\";\nSubject: inner-subject\nX-Special-B: special-b\nFoo: Xy\nChat-Version: 1.0\n\ntest1\n\n--==break==--\n\n\x00"; + let mut mimeparser = dc_mimeparser_parse(&context.ctx, &raw[..]); + + assert_eq!( + as_str(mimeparser.subject as *const libc::c_char), + "inner-subject", + ); + + let mut of: *mut mailimf_optional_field = + dc_mimeparser_lookup_optional_field(&mimeparser, "X-Special-A"); + assert_eq!(as_str((*of).fld_value as *const libc::c_char), "special-a",); + + of = dc_mimeparser_lookup_optional_field(&mimeparser, "Foo"); + assert_eq!(as_str((*of).fld_value as *const libc::c_char), "Bar",); + + of = dc_mimeparser_lookup_optional_field(&mimeparser, "Chat-Version"); + assert_eq!(as_str((*of).fld_value as *const libc::c_char), "1.0",); + assert_eq!(mimeparser.parts.len(), 1); + + dc_mimeparser_unref(&mut mimeparser); + } + } } diff --git a/tests/stress.rs b/tests/stress.rs index 8f969bcc3..b825a8aa5 100644 --- a/tests/stress.rs +++ b/tests/stress.rs @@ -3,7 +3,6 @@ use std::collections::HashSet; use std::ffi::CString; -use mmime::mailimf_types::*; use tempfile::{tempdir, TempDir}; use deltachat::chat::{self, Chat}; @@ -12,7 +11,6 @@ use deltachat::constants::*; use deltachat::contact::*; use deltachat::context::*; use deltachat::dc_imex::*; -use deltachat::dc_mimeparser::*; use deltachat::dc_tools::*; use deltachat::key::*; use deltachat::keyring::*; @@ -653,33 +651,6 @@ unsafe fn create_test_context() -> TestContext { TestContext { ctx: ctx, dir: dir } } -#[test] -fn test_dc_mimeparser_with_context() { - unsafe { - let context = create_test_context(); - let raw = b"Content-Type: multipart/mixed; boundary=\"==break==\";\nSubject: outer-subject\nX-Special-A: special-a\nFoo: Bar\nChat-Version: 0.0\n\n--==break==\nContent-Type: text/plain; protected-headers=\"v1\";\nSubject: inner-subject\nX-Special-B: special-b\nFoo: Xy\nChat-Version: 1.0\n\ntest1\n\n--==break==--\n\n\x00"; - let mut mimeparser = dc_mimeparser_parse(&context.ctx, &raw[..]); - - assert_eq!( - as_str(mimeparser.subject as *const libc::c_char), - "inner-subject", - ); - - let mut of: *mut mailimf_optional_field = - dc_mimeparser_lookup_optional_field(&mimeparser, "X-Special-A"); - assert_eq!(as_str((*of).fld_value as *const libc::c_char), "special-a",); - - of = dc_mimeparser_lookup_optional_field(&mimeparser, "Foo"); - assert_eq!(as_str((*of).fld_value as *const libc::c_char), "Bar",); - - of = dc_mimeparser_lookup_optional_field(&mimeparser, "Chat-Version"); - assert_eq!(as_str((*of).fld_value as *const libc::c_char), "1.0",); - assert_eq!(mimeparser.parts.len(), 1); - - dc_mimeparser_unref(&mut mimeparser); - } -} - #[test] fn test_dc_get_oauth2_url() { let ctx = unsafe { create_test_context() };