diff --git a/deltachat-rpc-client/tests/conftest.py b/deltachat-rpc-client/tests/conftest.py index 19b106728..e221f7292 100644 --- a/deltachat-rpc-client/tests/conftest.py +++ b/deltachat-rpc-client/tests/conftest.py @@ -24,8 +24,16 @@ class DirectImap: def __init__(self, account: Account, addr=None, password=None) -> None: self.account = account - self.addr = addr or account.get_config("addr") - self.password = password or account.get_config("mail_pw") + if addr is None or password is None: + transport = account.list_transports()[-1] + if addr is None: + self.addr = transport["addr"] + else: + self.addr = addr + if password is None: + self.password = transport["password"] + else: + self.password = password self.logid = account.get_config("displayname") or id(account) self._idling = False self.connect() diff --git a/deltachat-rpc-client/tests/test_securejoin.py b/deltachat-rpc-client/tests/test_securejoin.py index 15664c734..0d7d84866 100644 --- a/deltachat-rpc-client/tests/test_securejoin.py +++ b/deltachat-rpc-client/tests/test_securejoin.py @@ -27,7 +27,7 @@ def test_qr_setup_contact(acf) -> None: def test_qr_setup_contact_svg(acf) -> None: alice = acf.new_configured_account() - _, _, domain = alice.get_config("addr").rpartition("@") + _, _, domain = alice.list_transports()[0]["addr"].rpartition("@") _qr_code, svg = alice.get_qr_code_svg() @@ -43,6 +43,7 @@ def test_qr_setup_contact_svg(acf) -> None: def test_qr_securejoin(acf): alice, bob, fiona = acf.get_online_accounts(3) + alice.set_config("displayname", "Alice") # Setup second device for Alice # to test observing securejoin protocol. alice2 = alice.clone() @@ -67,7 +68,7 @@ def test_qr_securejoin(acf): assert alice_contact_bob_snapshot.e2ee_avail snapshot = bob.wait_for_incoming_msg().get_snapshot() - assert snapshot.text == "You were added by {}.".format(alice.get_config("addr")) + assert snapshot.text == "You were added by Alice." bob_contact_alice = bob.create_contact(alice) bob_contact_alice_snapshot = bob_contact_alice.get_snapshot() @@ -503,11 +504,9 @@ def test_aeap_flow(acf): assert msg_in_1.text == msg_out.text logging.info("changing email account") - ac1.set_config("addr", addr) - ac1.set_config("mail_pw", password) - ac1.stop_io() - ac1.configure() - ac1.start_io() + old_addr = ac1.list_transports()[0]["addr"] + ac1.add_transport_from_qr(acf.get_account_qr()) + ac1.delete_transport(old_addr) logging.info("sending second message") msg_out = chat.send_text("changed address").get_snapshot() @@ -529,6 +528,7 @@ def test_securejoin_after_contact_resetup(acf) -> None: but different key fingerprint while a securejoin with that contact is still pending. """ ac1, ac2, ac3 = acf.get_online_accounts(3) + ac3.set_config("displayname", "ac3") # ac3 creates a group with ac1. ac3_chat = ac3.create_group("Group") @@ -540,7 +540,7 @@ def test_securejoin_after_contact_resetup(acf) -> None: # ac1 waits for member added message and creates a QR code. snapshot = ac1.wait_for_incoming_msg().get_snapshot() - assert snapshot.text == "You were added by {}.".format(ac3.get_config("addr")) + assert snapshot.text == "You were added by ac3." ac1_qr_code = snapshot.chat.get_qr_code() # ac2 sets up contact with ac1 @@ -580,6 +580,8 @@ def test_securejoin_after_contact_resetup(acf) -> None: def test_withdraw_securejoin_qr(acf): alice, bob = acf.get_online_accounts(2) + alice.set_config("displayname", "Alice") + bob.set_config("displayname", "Bob") logging.info("Alice creates a group") alice_chat = alice.create_group("Group") @@ -592,11 +594,11 @@ def test_withdraw_securejoin_qr(acf): alice.clear_all_events() snapshot = bob.wait_for_incoming_msg().get_snapshot() - assert snapshot.text == "You were added by {}.".format(alice.get_config("addr")) + assert snapshot.text == "You were added by Alice." bob_chat.leave() snapshot = alice.get_message_by_id(alice.wait_for_msgs_changed_event().msg_id).get_snapshot() - assert snapshot.text == "Group left by {}.".format(bob.get_config("addr")) + assert snapshot.text == "Group left by Bob." logging.info("Alice withdraws QR code.") qr = alice.check_qr(qr_code) diff --git a/deltachat-rpc-client/tests/test_something.py b/deltachat-rpc-client/tests/test_something.py index 541497a83..6918ca23b 100644 --- a/deltachat-rpc-client/tests/test_something.py +++ b/deltachat-rpc-client/tests/test_something.py @@ -155,7 +155,7 @@ def test_list_transports(acf) -> None: def test_account(acf) -> None: alice, bob = acf.get_online_accounts(2) - bob_addr = bob.get_config("addr") + bob_addr = bob.get_config("configured_addr") alice_contact_bob = alice.create_contact(bob, "Bob") alice_chat_bob = alice_contact_bob.create_chat() alice_chat_bob.send_text("Hello!") @@ -318,7 +318,7 @@ def test_chat(acf) -> None: def test_contact(acf) -> None: alice, bob = acf.get_online_accounts(2) - bob_addr = bob.get_config("addr") + bob_addr = bob.get_config("configured_addr") alice_contact_bob = alice.create_contact(bob, "Bob") assert alice_contact_bob == alice.get_contact_by_id(alice_contact_bob.id) @@ -604,7 +604,6 @@ def test_import_export_online_all(acf, tmp_path, rpcdata, log) -> None: (ac1, some1) = acf.get_online_accounts(2) log.section("create some chat content") - some1_addr = some1.get_config("addr") chat1 = ac1.create_contact(some1).create_chat() chat1.send_text("msg1") assert len(ac1.get_contacts()) == 1 @@ -622,7 +621,6 @@ def test_import_export_online_all(acf, tmp_path, rpcdata, log) -> None: contacts = ac.get_contacts() assert len(contacts) == 1 contact2 = contacts[0] - assert contact2.get_snapshot().address == some1_addr chat2 = contact2.create_chat() messages = chat2.get_messages() assert len(messages) == 3 + E2EE_INFO_MSGS diff --git a/src/configure.rs b/src/configure.rs index 1965b51d7..dc39b2f7a 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -155,9 +155,7 @@ impl Context { .await; self.free_ongoing().await; - res?; - - param.save_legacy(self).await + res } /// Adds a new email account as a transport diff --git a/src/login_param.rs b/src/login_param.rs index eb8ec5d22..744ba3291 100644 --- a/src/login_param.rs +++ b/src/login_param.rs @@ -9,14 +9,12 @@ use std::fmt; use anyhow::{Context as _, Result}; -use num_traits::ToPrimitive as _; use serde::{Deserialize, Serialize}; use crate::config::Config; use crate::context::Context; pub use crate::net::proxy::ProxyConfig; pub use crate::provider::Socket; -use crate::tools::ToOption; /// User-entered setting for certificate checks. /// @@ -232,62 +230,6 @@ impl EnteredLoginParam { oauth2: false, }) } - - /// Saves entered account settings, - /// so that they can be prefilled if the user wants to configure the server again. - /// - /// This is needed in case a UI is not yet updated, and still uses `get_config("mail_pw")` etc. - /// in order to prefill the entered account settings. - pub(crate) async fn save_legacy(&self, context: &Context) -> Result<()> { - context.set_config(Config::Addr, Some(&self.addr)).await?; - - context - .set_config(Config::MailServer, self.imap.server.to_option()) - .await?; - context - .set_config(Config::MailPort, self.imap.port.to_option().as_deref()) - .await?; - context - .set_config( - Config::MailSecurity, - self.imap.security.to_i32().to_option().as_deref(), - ) - .await?; - context - .set_config(Config::MailUser, self.imap.user.to_option()) - .await?; - context - .set_config(Config::MailPw, self.imap.password.to_option()) - .await?; - - context - .set_config(Config::SendServer, self.smtp.server.to_option()) - .await?; - context - .set_config(Config::SendPort, self.smtp.port.to_option().as_deref()) - .await?; - context - .set_config( - Config::SendSecurity, - self.smtp.security.to_i32().to_option().as_deref(), - ) - .await?; - context - .set_config(Config::SendUser, self.smtp.user.to_option()) - .await?; - context - .set_config(Config::SendPw, self.smtp.password.to_option()) - .await?; - - context - .set_config( - Config::ImapCertificateChecks, - self.certificate_checks.to_i32().to_option().as_deref(), - ) - .await?; - - Ok(()) - } } impl fmt::Display for EnteredLoginParam { @@ -369,41 +311,4 @@ mod tests { Ok(()) } - - #[tokio::test(flavor = "multi_thread", worker_threads = 2)] - async fn test_save_entered_login_param() -> Result<()> { - let t = TestContext::new().await; - let param = EnteredLoginParam { - addr: "alice@example.org".to_string(), - imap: EnteredImapLoginParam { - server: "".to_string(), - port: 0, - folder: "".to_string(), - security: Socket::Starttls, - user: "".to_string(), - password: "foobar".to_string(), - }, - smtp: EnteredSmtpLoginParam { - server: "".to_string(), - port: 2947, - security: Socket::default(), - user: "".to_string(), - password: "".to_string(), - }, - certificate_checks: Default::default(), - oauth2: false, - }; - param.save_legacy(&t).await?; - assert_eq!( - t.get_config(Config::Addr).await?.unwrap(), - "alice@example.org" - ); - assert_eq!(t.get_config(Config::MailPw).await?.unwrap(), "foobar"); - assert_eq!(t.get_config(Config::SendPw).await?, None); - assert_eq!(t.get_config_int(Config::SendPort).await?, 2947); - - assert_eq!(EnteredLoginParam::load_legacy(&t).await?, param); - - Ok(()) - } } diff --git a/src/tools.rs b/src/tools.rs index 14f964199..f4050a49f 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -520,32 +520,6 @@ where } } -pub(crate) trait ToOption { - fn to_option(self) -> Option; -} -impl<'a> ToOption<&'a str> for &'a String { - fn to_option(self) -> Option<&'a str> { - if self.is_empty() { None } else { Some(self) } - } -} -impl ToOption for u16 { - fn to_option(self) -> Option { - if self == 0 { - None - } else { - Some(self.to_string()) - } - } -} -impl ToOption for Option { - fn to_option(self) -> Option { - match self { - None | Some(0) => None, - Some(v) => Some(v.to_string()), - } - } -} - #[expect(clippy::arithmetic_side_effects)] pub(crate) fn remove_subject_prefix(last_subject: &str) -> String { let subject_start = if last_subject.starts_with("Chat:") {