From a0c92753a920e4fdc4f910ac45df67c78c5bc86c Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Sun, 4 Oct 2020 04:34:32 +0300 Subject: [PATCH] prepare_msg: return Err if no address is configured Address is used to generate Message-Id. Previously error toast was shown, but MsgId was returned from chat::prepare_msg anyway. Now chat::prepare_msg returns an error. error!() is removed, because FFI library shows errors via .unwrap_or_log_default(). --- src/chat.rs | 2 +- src/message.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/chat.rs b/src/chat.rs index e4a164f5b..3b22fea55 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -1015,7 +1015,7 @@ impl Chat { ); } } else { - error!(context, "Cannot send message, not configured.",); + bail!("Cannot prepare message for sending, address is not configured."); } schedule_ephemeral_task(context).await; diff --git a/src/message.rs b/src/message.rs index 9230313c5..2f09781b9 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1833,6 +1833,23 @@ mod tests { assert_eq!(_msg2.get_filemime(), None); } + /// Tests that message cannot be prepared if account has no configured address. + #[async_std::test] + async fn test_prepare_not_configured() { + let d = test::TestContext::new().await; + let ctx = &d.ctx; + + let contact = Contact::create(ctx, "", "dest@example.com") + .await + .expect("failed to create contact"); + + let chat = chat::create_by_contact_id(ctx, contact).await.unwrap(); + + let mut msg = Message::new(Viewtype::Text); + + assert!(chat::prepare_msg(ctx, chat, &mut msg).await.is_err()); + } + #[async_std::test] async fn test_get_summarytext_by_raw() { let d = test::TestContext::new().await;