e45c7e529b 2026-07-31 1: use smtp2tg::mail::MailServer;
e45c7e529b 2026-07-31 2:
e45c7e529b 2026-07-31 3: use stacked_errors::{
e45c7e529b 2026-07-31 4: Result,
e45c7e529b 2026-07-31 5: StackableErr,
e45c7e529b 2026-07-31 6: };
e45c7e529b 2026-07-31 7:
e45c7e529b 2026-07-31 8: use tgbot::types::ChatPeerId;
e45c7e529b 2026-07-31 9: /// Builds a `MailServer` purely from an in-memory TOML source, no
e45c7e529b 2026-07-31 10: /// network access is performed while constructing it.
e45c7e529b 2026-07-31 11: fn build_server () -> Result<MailServer> {
e45c7e529b 2026-07-31 12: let settings = config::Config::builder()
e45c7e529b 2026-07-31 13: .add_source(config::File::from_str(r#"
e45c7e529b 2026-07-31 14: api_key = "test-api-key"
e45c7e529b 2026-07-31 15: api_gateway = "https://api.telegram.org"
e45c7e529b 2026-07-31 16: default = 0
e45c7e529b 2026-07-31 17: unknown = "relay"
e45c7e529b 2026-07-31 18: fields = ["date", "from", "subject"]
e45c7e529b 2026-07-31 19: domains = ["example.com"]
e45c7e529b 2026-07-31 20:
e45c7e529b 2026-07-31 21: [recipients]
e45c7e529b 2026-07-31 22: "someone@example.com" = 1
e45c7e529b 2026-07-31 23: "root" = -1
e45c7e529b 2026-07-31 24: "#, config::FileFormat::Toml))
e45c7e529b 2026-07-31 25: .build()
e45c7e529b 2026-07-31 26: .stack()?;
e45c7e529b 2026-07-31 27: MailServer::new(settings)
e45c7e529b 2026-07-31 28: }
e45c7e529b 2026-07-31 29:
e45c7e529b 2026-07-31 30: #[test]
e45c7e529b 2026-07-31 31: fn get_id_returns_configured_recipient_for_full_address () -> Result<()> {
e45c7e529b 2026-07-31 32: let server = build_server()?;
e45c7e529b 2026-07-31 33: assert_eq!(*server.get_id("someone@example.com")?, ChatPeerId::from(1));
e45c7e529b 2026-07-31 34: Ok(())
e45c7e529b 2026-07-31 35: }
e45c7e529b 2026-07-31 36:
e45c7e529b 2026-07-31 37: #[test]
e45c7e529b 2026-07-31 38: fn get_id_returns_configured_recipient_for_bare_name () -> Result<()> {
e45c7e529b 2026-07-31 39: let server = build_server()?;
e45c7e529b 2026-07-31 40: assert_eq!(*server.get_id("root")?, ChatPeerId::from(-1));
e45c7e529b 2026-07-31 41: Ok(())
e45c7e529b 2026-07-31 42: }
e45c7e529b 2026-07-31 43:
e45c7e529b 2026-07-31 44: #[test]
e45c7e529b 2026-07-31 45: fn get_id_falls_back_to_default_for_unknown_address () -> Result<()> {
e45c7e529b 2026-07-31 46: let server = build_server()?;
e45c7e529b 2026-07-31 47: assert_eq!(*server.get_id("unknown@example.com")?, ChatPeerId::from(0));
e45c7e529b 2026-07-31 48: Ok(())
e45c7e529b 2026-07-31 49: }