diff --git a/src/config.rs b/src/config.rs index 929530376..1641f1953 100644 --- a/src/config.rs +++ b/src/config.rs @@ -35,9 +35,6 @@ pub enum Config { SmtpCertificateChecks, ServerFlags, - #[strum(props(default = "INBOX"))] - ImapFolder, - Displayname, Selfstatus, Selfavatar, @@ -319,11 +316,6 @@ mod tests { ); } - #[test] - fn test_default_prop() { - assert_eq!(Config::ImapFolder.get_str("default"), Some("INBOX")); - } - #[async_std::test] async fn test_selfavatar_outside_blobdir() { let t = TestContext::new().await; diff --git a/src/context.rs b/src/context.rs index 2dc0ed3bd..189bdbee1 100644 --- a/src/context.rs +++ b/src/context.rs @@ -323,6 +323,9 @@ impl Context { .unwrap_or_else(|| "".to_string()); let mut res = get_info(); + + // insert values + res.insert("bot", self.get_config_int(Config::Bot).await.to_string()); res.insert("number_of_chats", chats.to_string()); res.insert("number_of_chat_messages", real_msgs.to_string()); res.insert("messages_in_contact_requests", deaddrop_msgs.to_string()); @@ -341,6 +344,16 @@ impl Context { res.insert("is_configured", is_configured.to_string()); res.insert("entered_account_settings", l.to_string()); res.insert("used_account_settings", l2.to_string()); + res.insert( + "fetch_existing_msgs", + self.get_config_int(Config::FetchExistingMsgs) + .await + .to_string(), + ); + res.insert( + "show_emails", + self.get_config_int(Config::ShowEmails).await.to_string(), + ); res.insert("inbox_watch", inbox_watch.to_string()); res.insert("sentbox_watch", sentbox_watch.to_string()); res.insert("mvbox_watch", mvbox_watch.to_string()); @@ -350,6 +363,10 @@ impl Context { res.insert("configured_mvbox_folder", configured_mvbox_folder); res.insert("mdns_enabled", mdns_enabled.to_string()); res.insert("e2ee_enabled", e2ee_enabled.to_string()); + res.insert( + "key_gen_type", + self.get_config_int(Config::KeyGenType).await.to_string(), + ); res.insert("bcc_self", bcc_self.to_string()); res.insert( "private_key_count", @@ -360,6 +377,40 @@ impl Context { pub_key_cnt.unwrap_or_default().to_string(), ); res.insert("fingerprint", fingerprint_str); + res.insert( + "webrtc_instance", + self.get_config(Config::WebrtcInstance) + .await + .unwrap_or_else(|| "".to_string()), + ); + res.insert( + "media_quality", + self.get_config_int(Config::MediaQuality).await.to_string(), + ); + res.insert( + "delete_device_after", + self.get_config_int(Config::DeleteDeviceAfter) + .await + .to_string(), + ); + res.insert( + "delete_server_after", + self.get_config_int(Config::DeleteServerAfter) + .await + .to_string(), + ); + res.insert( + "last_housekeeping", + self.get_config_int(Config::LastHousekeeping) + .await + .to_string(), + ); + res.insert( + "scan_all_folders_debounce_secs", + self.get_config_int(Config::ScanAllFoldersDebounceSecs) + .await + .to_string(), + ); let elapsed = self.creation_time.elapsed(); res.insert("uptime", duration_to_str(elapsed.unwrap_or_default())); @@ -524,6 +575,7 @@ mod tests { use super::*; use crate::test_utils::TestContext; + use strum::IntoEnumIterator; #[async_std::test] async fn test_wrong_db() { @@ -614,4 +666,47 @@ mod tests { assert!(info.get("database_dir").is_none()); assert_eq!(info.get("level").unwrap(), "awesome"); } + + #[async_std::test] + async fn test_get_info_completeness() { + // For easier debugging, + // get_info() shall return all important information configurable by the Config-values. + // + // There are exceptions for Config-values considered to be unimportant, + // too sensitive or summarized in another item. + let skip_from_get_info = vec![ + "addr", + "displayname", + "imap_certificate_checks", + "mail_server", + "mail_user", + "mail_pw", + "mail_port", + "mail_security", + "notify_about_wrong_pw", + "save_mime_headers", + "selfstatus", + "send_server", + "send_user", + "send_pw", + "send_port", + "send_security", + "server_flags", + "smtp_certificate_checks", + ]; + let t = TestContext::new().await; + let info = t.get_info().await; + for key in Config::iter() { + let key: String = key.to_string(); + if !skip_from_get_info.contains(&&*key) + && !key.starts_with("configured") + && !key.starts_with("sys.") + { + assert!( + info.contains_key(&*key), + format!("'{}' missing in get_info() output", key) + ); + } + } + } }