remove hack for decoding, and add a test that encoding/decoding works now

This commit is contained in:
holger krekel
2019-12-10 01:21:28 +01:00
parent 2cbf287998
commit d0a04be825
4 changed files with 4 additions and 26 deletions

View File

@@ -185,7 +185,7 @@ jobs:
- *restore-cache - *restore-cache
- run: - run:
name: Run cargo clippy name: Run cargo clippy
command: cargo clippy --all command: cargo clippy
workflows: workflows:

View File

@@ -652,6 +652,7 @@ class TestOnlineAccount:
msg_in = ac2.get_message_by_id(msg_out.id) msg_in = ac2.get_message_by_id(msg_out.id)
assert msg_in.text == "message1" assert msg_in.text == "message1"
assert not msg_in.is_forwarded() assert not msg_in.is_forwarded()
assert msg_in.get_sender_contact().display_name == ac1.get_config("displayname")
lp.sec("check the message arrived in contact-requets/deaddrop") lp.sec("check the message arrived in contact-requets/deaddrop")
chat2 = msg_in.chat chat2 = msg_in.chat

View File

@@ -1583,10 +1583,6 @@ fn dc_add_or_lookup_contacts_by_address_list(
origin: Origin, origin: Origin,
to_ids: &mut ContactIds, to_ids: &mut ContactIds,
) -> Result<()> { ) -> Result<()> {
// XXX we use manual decoding
// https://github.com/staktrace/mailparse/issues/50
use email::rfc2047::decode_rfc2047;
let addrs = match mailparse::addrparse(addr_list_raw) { let addrs = match mailparse::addrparse(addr_list_raw) {
Ok(addrs) => addrs, Ok(addrs) => addrs,
Err(err) => { Err(err) => {
@@ -1601,22 +1597,18 @@ fn dc_add_or_lookup_contacts_by_address_list(
for addr in addrs.iter() { for addr in addrs.iter() {
match addr { match addr {
mailparse::MailAddr::Single(info) => { mailparse::MailAddr::Single(info) => {
// mailparse does not give us decoded vals
let display_name = decode_rfc2047(&info.display_name.clone().unwrap_or_default());
to_ids.insert(add_or_lookup_contact_by_addr( to_ids.insert(add_or_lookup_contact_by_addr(
context, context,
&display_name, &info.display_name,
&info.addr, &info.addr,
origin, origin,
)?); )?);
} }
mailparse::MailAddr::Group(infos) => { mailparse::MailAddr::Group(infos) => {
for info in &infos.addrs { for info in &infos.addrs {
let display_name =
decode_rfc2047(&info.display_name.clone().unwrap_or_default());
to_ids.insert(add_or_lookup_contact_by_addr( to_ids.insert(add_or_lookup_contact_by_addr(
context, context,
&display_name, &info.display_name,
&info.addr, &info.addr,
origin, origin,
)?); )?);

View File

@@ -1055,8 +1055,6 @@ pub fn needs_encoding(to_check: impl AsRef<str>) -> bool {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use email::rfc2047::decode_rfc2047;
use mailparse::{addrparse, MailAddr};
#[test] #[test]
fn test_render_email_address() { fn test_render_email_address() {
@@ -1071,20 +1069,7 @@ mod tests {
); );
println!("{}", s); println!("{}", s);
assert!(s.is_ascii());
assert_eq!(s, "=?utf-8?q?=C3=A4_space?= <x@y.org>"); assert_eq!(s, "=?utf-8?q?=C3=A4_space?= <x@y.org>");
match &addrparse(&s).unwrap()[0] {
MailAddr::Single(info) => {
// XXX addrparse should not return rfc2047 encoding
// but the decoded string, see
// https://github.com/staktrace/mailparse/issues/50
let s = decode_rfc2047(&info.display_name.clone().unwrap());
assert_eq!(s, Some(display_name.to_string()));
assert_eq!(info.addr, addr.to_string());
}
_ => panic!(),
}
} }
} }