f4660639ca 2026-07-31 arcade: use smtp2tg::mail::MailServer;
f4660639ca 2026-07-31 arcade:
f4660639ca 2026-07-31 arcade: use stacked_errors::{
f4660639ca 2026-07-31 arcade: Result,
f4660639ca 2026-07-31 arcade: StackableErr,
f4660639ca 2026-07-31 arcade: };
f4660639ca 2026-07-31 arcade:
f4660639ca 2026-07-31 arcade: use tgbot::types::ChatPeerId;
f4660639ca 2026-07-31 arcade: /// Builds a `MailServer` purely from an in-memory TOML source, no
f4660639ca 2026-07-31 arcade: /// network access is performed while constructing it.
f4660639ca 2026-07-31 arcade: fn build_server () -> Result<MailServer> {
f4660639ca 2026-07-31 arcade: let settings = config::Config::builder()
f4660639ca 2026-07-31 arcade: .add_source(config::File::from_str(r#"
f4660639ca 2026-07-31 arcade: api_key = "test-api-key"
f4660639ca 2026-07-31 arcade: api_gateway = "https://api.telegram.org"
f4660639ca 2026-07-31 arcade: default = 0
f4660639ca 2026-07-31 arcade: unknown = "relay"
f4660639ca 2026-07-31 arcade: fields = ["date", "from", "subject"]
f4660639ca 2026-07-31 arcade: domains = ["example.com"]
f4660639ca 2026-07-31 arcade:
f4660639ca 2026-07-31 arcade: [recipients]
f4660639ca 2026-07-31 arcade: "someone@example.com" = 1
f4660639ca 2026-07-31 arcade: "root" = -1
f4660639ca 2026-07-31 arcade: "#, config::FileFormat::Toml))
f4660639ca 2026-07-31 arcade: .build()
f4660639ca 2026-07-31 arcade: .stack()?;
f4660639ca 2026-07-31 arcade: MailServer::new(settings)
f4660639ca 2026-07-31 arcade: }
f4660639ca 2026-07-31 arcade:
f4660639ca 2026-07-31 arcade: #[test]
f4660639ca 2026-07-31 arcade: fn get_id_returns_configured_recipient () -> Result<()> {
f4660639ca 2026-07-31 arcade: let server = build_server()?;
f4660639ca 2026-07-31 arcade: let cases = [
f4660639ca 2026-07-31 arcade: ("someone@example.com", 1),
f4660639ca 2026-07-31 arcade: ("someone", 0),
f4660639ca 2026-07-31 arcade: ("root", -1),
f4660639ca 2026-07-31 arcade: ("unknown@example.com", 0),
f4660639ca 2026-07-31 arcade: ];
f4660639ca 2026-07-31 arcade: for (email, id) in cases {
f4660639ca 2026-07-31 arcade: assert_eq!(*server.get_id(email)?, ChatPeerId::from(id), "email [{email}] expected to return id [{id}]");
f4660639ca 2026-07-31 arcade: }
f4660639ca 2026-07-31 arcade: Ok(())
f4660639ca 2026-07-31 arcade: }