mirror of
https://github.com/chatmail/core.git
synced 2026-04-19 06:26:30 +03:00
fix: Make Message-ID of pre-messages stable across resends (#8007)
This commit is contained in:
@@ -56,23 +56,27 @@ async fn test_sending_pre_message() -> Result<()> {
|
||||
.is_some()
|
||||
);
|
||||
|
||||
let post_rfc724_mid = post_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId);
|
||||
assert_eq!(
|
||||
post_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId),
|
||||
post_rfc724_mid,
|
||||
Some(format!("<{}>", msg.rfc724_mid)),
|
||||
"Post-Message should have the rfc message id of the database message"
|
||||
);
|
||||
|
||||
let pre_rfc724_mid = pre_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId);
|
||||
assert_ne!(
|
||||
pre_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId),
|
||||
post_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId),
|
||||
pre_rfc724_mid, post_rfc724_mid,
|
||||
"message ids of Pre-Message and Post-Message should be different"
|
||||
);
|
||||
assert_eq!(
|
||||
pre_rfc724_mid,
|
||||
Some(format!("<{}>", msg.pre_rfc724_mid)),
|
||||
"Unexpected pre-message RFC 724 ID"
|
||||
);
|
||||
|
||||
let decrypted_post_message = bob.parse_msg(post_message).await;
|
||||
assert_eq!(decrypted_post_message.decrypting_failed, false);
|
||||
@@ -86,9 +90,7 @@ async fn test_sending_pre_message() -> Result<()> {
|
||||
decrypted_pre_message
|
||||
.get_header(HeaderDef::ChatPostMessageId)
|
||||
.map(String::from),
|
||||
post_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId)
|
||||
post_rfc724_mid,
|
||||
);
|
||||
assert!(
|
||||
pre_message_parsed
|
||||
@@ -98,6 +100,25 @@ async fn test_sending_pre_message() -> Result<()> {
|
||||
"no Chat-Post-Message-ID header in unprotected headers of Pre-Message"
|
||||
);
|
||||
|
||||
chat::resend_msgs(alice, &[msg_id]).await?;
|
||||
let smtp_rows = alice.get_smtp_rows_for_msg(msg_id).await;
|
||||
assert_eq!(smtp_rows.len(), 2);
|
||||
|
||||
let pre_message_parsed = mailparse::parse_mail(smtp_rows[0].payload.as_bytes())?;
|
||||
assert_eq!(
|
||||
pre_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId),
|
||||
pre_rfc724_mid
|
||||
);
|
||||
let post_message_parsed = mailparse::parse_mail(smtp_rows[1].payload.as_bytes())?;
|
||||
assert_eq!(
|
||||
post_message_parsed
|
||||
.headers
|
||||
.get_header_value(HeaderDef::MessageId),
|
||||
post_rfc724_mid
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user