diff --git a/src/receive_imf/tests.rs b/src/receive_imf/tests.rs index f798407f8..a9e9dfabf 100644 --- a/src/receive_imf/tests.rs +++ b/src/receive_imf/tests.rs @@ -3827,6 +3827,40 @@ async fn test_messed_up_message_id() -> Result<()> { Ok(()) } +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_big_forwarded_with_big_attachment() -> Result<()> { + let t = &TestContext::new_bob().await; + + let raw = include_bytes!("../../test-data/message/big_forwarded_with_big_attachment.eml"); + let rcvd = receive_imf(t, raw, false).await?.unwrap(); + assert_eq!(rcvd.msg_ids.len(), 3); + let msg = Message::load_from_db(t, rcvd.msg_ids[0]).await?; + assert_eq!(msg.get_viewtype(), Viewtype::Text); + assert_eq!(msg.get_text(), "Hello!"); + // Wrong: the second bubble's text is truncated, but "Show Full Message..." is going to be shown + // in the first message bubble in the UIs. + assert_eq!( + msg.id + .get_html(t) + .await? + .unwrap() + .matches("Hello!") + .count(), + 1 + ); + let msg = Message::load_from_db(t, rcvd.msg_ids[1]).await?; + assert_eq!(msg.get_viewtype(), Viewtype::Text); + assert!(msg.get_text().starts_with("this text with 42 chars is just repeated.")); + assert!(msg.get_text().ends_with("[...]")); + // Wrong: the text is truncated, but it's not possible to see the full text in HTML. + assert!(!msg.has_html()); + let msg = Message::load_from_db(t, rcvd.msg_ids[2]).await?; + assert_eq!(msg.get_viewtype(), Viewtype::File); + assert!(!msg.has_html()); + + Ok(()) +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_mua_user_adds_member() -> Result<()> { let t = TestContext::new_alice().await; diff --git a/test-data/message/big_forwarded_with_big_attachment.eml b/test-data/message/big_forwarded_with_big_attachment.eml new file mode 100644 index 000000000..f6ae39132 --- /dev/null +++ b/test-data/message/big_forwarded_with_big_attachment.eml @@ -0,0 +1,305 @@ +From: Alice +To: Bob +Date: Fri, 2 Jun 2023 13:29:17 +0000 +Message-ID: +Content-Type: multipart/mixed; boundary="zRs3OquGy6eU58KF" + + +--zRs3OquGy6eU58KF +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Hello! + +--zRs3OquGy6eU58KF +Content-Type: message/rfc822 +Content-Disposition: inline + +From: AAA +To: Alice +Subject: Some subject +Date: Fri, 2 Jun 2023 12:29:17 +0000 +Message-ID: +In-Reply-To: +Content-Type: multipart/mixed; + boundary="_innerboundary_" +MIME-Version: 1.0 + +--_innerboundary_ +Content-Type: text/plain; charset="us-ascii" +Content-Transfer-Encoding: quoted-printable + +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. + +--=20 + +Kind regards, + +Bob + +--_innerboundary_ +Content-Type: text/plain; name="deltachat-log.txt" +Content-Description: deltachat-log.txt +Content-Disposition: attachment; filename="deltachat-log.txt"; + size=55254; creation-date="Fri, 02 Jun 2023 11:33:49 GMT"; + modification-date="Fri, 02 Jun 2023 12:29:17 GMT" + +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. +this text with 42 chars is just repeated. + +--_innerboundary_-- + +--zRs3OquGy6eU58KF--