From f1c4c40aec1baf54b0b9fc50a2f404df5365c2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Mon, 5 Jul 2021 22:25:51 +0200 Subject: [PATCH 1/6] make fix --- src/chat.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/chat.rs b/src/chat.rs index 46f5896d9..2b3e9770b 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2797,8 +2797,11 @@ pub async fn forward_msgs(context: &Context, msg_ids: &[MsgId], chat_id: ChatId) // we tested a sort of broadcast // by not marking own forwarded messages as such, // however, this turned out to be to confusing and unclear. + + if msg.get_viewtype() != Viewtype::Sticker { msg.param .set_int(Param::Forwarded, src_msg_id.to_u32() as i32); + } msg.param.remove(Param::GuaranteeE2ee); msg.param.remove(Param::ForcePlaintext); From e100dca34884deb92c3b0d4d5d5cada7dcc0d40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Mon, 5 Jul 2021 22:25:57 +0200 Subject: [PATCH 2/6] tests --- src/chat.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/src/chat.rs b/src/chat.rs index 2b3e9770b..fb4015947 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2799,8 +2799,8 @@ pub async fn forward_msgs(context: &Context, msg_ids: &[MsgId], chat_id: ChatId) // however, this turned out to be to confusing and unclear. if msg.get_viewtype() != Viewtype::Sticker { - msg.param - .set_int(Param::Forwarded, src_msg_id.to_u32() as i32); + msg.param + .set_int(Param::Forwarded, src_msg_id.to_u32() as i32); } msg.param.remove(Param::GuaranteeE2ee); @@ -4169,4 +4169,57 @@ mod tests { ) .await } + + #[async_std::test] + async fn test_sticker_forward(filename: &str, bytes: &[u8], w: i32, h: i32) -> Result<()> { + let file_name = "sticker.jpg"; + let bytes = include_bytes!("../test-data/image/avatar1000x1000.jpg"); + + // sent a sticker from alice to bob + let alice = TestContext::new_alice().await; + let bob = TestContext::new_bob().await; + let alice_chat = alice.create_chat(&bob).await; + let bob_chat = bob.create_chat(&alice).await; + + let file = alice.get_blobdir().join(file_name); + File::create(&file).await?.write_all(bytes).await?; + let mut msg = Message::new(Viewtype::Sticker); + msg.set_file(file.to_str().unwrap(), None); + let sent_msg = alice.send_msg(bob_chat.get_id(), &mut msg).await; + bob.recv_msg(&sent_msg).await; + let msg = bob.get_last_msg().await; + + forward_msgs(&bob, &[msg.id], alice_chat.get_id()) + .await + .unwrap(); + + let msg = alice.get_last_msg().await; + info!(alice, "{:?}", msg); + assert!(!msg.is_forwarded()); + + Ok(()) + } + + #[async_std::test] + async fn test_forward(filename: &str, bytes: &[u8], w: i32, h: i32) -> Result<()> { + let alice = TestContext::new_alice().await; + let bob = TestContext::new_bob().await; + let alice_chat = alice.create_chat(&bob).await; + let bob_chat = bob.create_chat(&alice).await; + + let mut msg = Message::new(Viewtype::Text); + msg.set_text(Some("Hi Bob".to_owned())); + let sent_msg = alice.send_msg(bob_chat.get_id(), &mut msg).await; + bob.recv_msg(&sent_msg).await; + let msg = bob.get_last_msg().await; + + forward_msgs(&bob, &[msg.id], alice_chat.get_id()) + .await + .unwrap(); + + let msg = alice.get_last_msg().await; + assert!(msg.get_text().unwrap() == "Hi Bob"); + assert!(msg.is_forwarded()); + Ok(()) + } } From 350fe06ea9a0f1844dda5b777edf21b1236a1f6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Tue, 6 Jul 2021 17:26:16 +0200 Subject: [PATCH 3/6] fix tests --- src/chat.rs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/chat.rs b/src/chat.rs index fb4015947..32186e9c3 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -4172,31 +4172,36 @@ mod tests { #[async_std::test] async fn test_sticker_forward(filename: &str, bytes: &[u8], w: i32, h: i32) -> Result<()> { - let file_name = "sticker.jpg"; - let bytes = include_bytes!("../test-data/image/avatar1000x1000.jpg"); - - // sent a sticker from alice to bob + // create chats let alice = TestContext::new_alice().await; let bob = TestContext::new_bob().await; let alice_chat = alice.create_chat(&bob).await; let bob_chat = bob.create_chat(&alice).await; + // create sticker + let file_name = "sticker.jpg"; + let bytes = include_bytes!("../test-data/image/avatar1000x1000.jpg"); let file = alice.get_blobdir().join(file_name); File::create(&file).await?.write_all(bytes).await?; let mut msg = Message::new(Viewtype::Sticker); msg.set_file(file.to_str().unwrap(), None); - let sent_msg = alice.send_msg(bob_chat.get_id(), &mut msg).await; + + // send sticker to bob + let sent_msg = alice.send_msg(alice_chat.get_id(), &mut msg).await; bob.recv_msg(&sent_msg).await; let msg = bob.get_last_msg().await; - forward_msgs(&bob, &[msg.id], alice_chat.get_id()) + // forward said sticker to alice + forward_msgs(&bob, &[msg.id], bob_chat.get_id()) .await .unwrap(); + let forwarded_msg = bob.pop_sent_msg().await; + alice.recv_msg(&forwarded_msg).await; + // retrieve forwarded sticker which should not have forwarded-flag let msg = alice.get_last_msg().await; - info!(alice, "{:?}", msg); - assert!(!msg.is_forwarded()); + assert!(!msg.is_forwarded()); Ok(()) } @@ -4209,14 +4214,17 @@ mod tests { let mut msg = Message::new(Viewtype::Text); msg.set_text(Some("Hi Bob".to_owned())); - let sent_msg = alice.send_msg(bob_chat.get_id(), &mut msg).await; + let sent_msg = alice.send_msg(alice_chat.get_id(), &mut msg).await; bob.recv_msg(&sent_msg).await; let msg = bob.get_last_msg().await; - forward_msgs(&bob, &[msg.id], alice_chat.get_id()) + forward_msgs(&bob, &[msg.id], bob_chat.get_id()) .await .unwrap(); + let forwarded_msg = bob.pop_sent_msg().await; + alice.recv_msg(&forwarded_msg).await; + let msg = alice.get_last_msg().await; assert!(msg.get_text().unwrap() == "Hi Bob"); assert!(msg.is_forwarded()); From 5bffdc6bbfdfcd5f774981f1c8c77c35b51bb42d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Tue, 6 Jul 2021 20:04:35 +0200 Subject: [PATCH 4/6] use ?-operator instead of unwrap() --- src/chat.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/chat.rs b/src/chat.rs index 32186e9c3..b13bdbbbc 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -4193,8 +4193,7 @@ mod tests { // forward said sticker to alice forward_msgs(&bob, &[msg.id], bob_chat.get_id()) - .await - .unwrap(); + .await?; let forwarded_msg = bob.pop_sent_msg().await; alice.recv_msg(&forwarded_msg).await; @@ -4219,8 +4218,7 @@ mod tests { let msg = bob.get_last_msg().await; forward_msgs(&bob, &[msg.id], bob_chat.get_id()) - .await - .unwrap(); + .await?; let forwarded_msg = bob.pop_sent_msg().await; alice.recv_msg(&forwarded_msg).await; From 77aa8b2c3f9b10512269f1054998223eb7e9ea0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Tue, 6 Jul 2021 20:05:18 +0200 Subject: [PATCH 5/6] remove unnecessary function-args --- Cargo.toml | 2 +- src/chat.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 070ca3ffc..ef99ce8e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -115,7 +115,7 @@ name = "search_msgs" harness = false [features] -default = [] +default = ["vendored"] internals = [] repl = ["internals", "rustyline", "log", "pretty_env_logger", "ansi_term", "dirs"] vendored = ["async-native-tls/vendored", "async-smtp/native-tls-vendored", "rusqlite/bundled"] diff --git a/src/chat.rs b/src/chat.rs index b13bdbbbc..b0eed7096 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -4171,7 +4171,7 @@ mod tests { } #[async_std::test] - async fn test_sticker_forward(filename: &str, bytes: &[u8], w: i32, h: i32) -> Result<()> { + async fn test_sticker_forward() -> Result<()> { // create chats let alice = TestContext::new_alice().await; let bob = TestContext::new_bob().await; @@ -4205,7 +4205,7 @@ mod tests { } #[async_std::test] - async fn test_forward(filename: &str, bytes: &[u8], w: i32, h: i32) -> Result<()> { + async fn test_forward() -> Result<()> { let alice = TestContext::new_alice().await; let bob = TestContext::new_bob().await; let alice_chat = alice.create_chat(&bob).await; From 64088f02a2933c60c0cc7a7ca39fc53a9c553869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kl=C3=A4hn?= Date: Tue, 6 Jul 2021 20:08:40 +0200 Subject: [PATCH 6/6] format --- src/chat.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/chat.rs b/src/chat.rs index b0eed7096..d4bf010d9 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -4192,8 +4192,7 @@ mod tests { let msg = bob.get_last_msg().await; // forward said sticker to alice - forward_msgs(&bob, &[msg.id], bob_chat.get_id()) - .await?; + forward_msgs(&bob, &[msg.id], bob_chat.get_id()).await?; let forwarded_msg = bob.pop_sent_msg().await; alice.recv_msg(&forwarded_msg).await; @@ -4217,8 +4216,7 @@ mod tests { bob.recv_msg(&sent_msg).await; let msg = bob.get_last_msg().await; - forward_msgs(&bob, &[msg.id], bob_chat.get_id()) - .await?; + forward_msgs(&bob, &[msg.id], bob_chat.get_id()).await?; let forwarded_msg = bob.pop_sent_msg().await; alice.recv_msg(&forwarded_msg).await;