Annotation For tests/mail.rs
Logged in as anonymous

Origin for each line in tests/mail.rs from check-in 78b11b0319:

f4660639ca 2026-07-31        arcade: use smtp2tg::mail::MailServer;
f4660639ca 2026-07-31        arcade: 
78b11b0319 2026-08-01        arcade: use config::FileFormat::Toml;
f4660639ca 2026-07-31        arcade: use stacked_errors::{
f4660639ca 2026-07-31        arcade: 	Result,
f4660639ca 2026-07-31        arcade: 	StackableErr,
78b11b0319 2026-08-01        arcade: 	ensure,
78b11b0319 2026-08-01        arcade: 	ensure_eq,
f4660639ca 2026-07-31        arcade: };
f4660639ca 2026-07-31        arcade: 
f4660639ca 2026-07-31        arcade: use tgbot::types::ChatPeerId;
78b11b0319 2026-08-01        arcade: 
78b11b0319 2026-08-01        arcade: #[test]
78b11b0319 2026-08-01        arcade: fn get_id_properly_resolves_addresses () -> Result<()> {
78b11b0319 2026-08-01        arcade: 	let server = MailServer::new(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: 			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
78b11b0319 2026-08-01        arcade: 		"#, Toml))
f4660639ca 2026-07-31        arcade: 		.build()
78b11b0319 2026-08-01        arcade: 		.stack()?)?;
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),
78b11b0319 2026-08-01        arcade: 		("SOMEONE@example.com", 1),	// uppercase local part
78b11b0319 2026-08-01        arcade: 		("someone@EXAMPLE.COM", 1),	// uppercase domain
78b11b0319 2026-08-01        arcade: 		("some.one@example.com", 0),	// dot are not skipped
78b11b0319 2026-08-01        arcade: 		("some-one-2", 0),	// Hyphens
f4660639ca 2026-07-31        arcade: 	];
f4660639ca 2026-07-31        arcade: 	for (email, id) in cases {
78b11b0319 2026-08-01        arcade: 		ensure_eq!(*server.get_id(email)?, ChatPeerId::from(id), format!("email [{email}] expected to return id [{id}]"));
78b11b0319 2026-08-01        arcade: 	}
78b11b0319 2026-08-01        arcade: 	let cases = [
78b11b0319 2026-08-01        arcade: 		"someone@otherdomain.net",
78b11b0319 2026-08-01        arcade: 		"@example.com",             // empty local part
78b11b0319 2026-08-01        arcade: 		"some@one@example.com",     // more than one '@'
78b11b0319 2026-08-01        arcade: 		"someone@example.com.evil",
78b11b0319 2026-08-01        arcade: 		"someone@example.org",
78b11b0319 2026-08-01        arcade: 	];
78b11b0319 2026-08-01        arcade: 	for email in cases {
78b11b0319 2026-08-01        arcade: 		ensure!(server.get_id(email).is_err(), format!("this email should be rejected: {email}"));
78b11b0319 2026-08-01        arcade: 	}
78b11b0319 2026-08-01        arcade: 	Ok(())
78b11b0319 2026-08-01        arcade: }
78b11b0319 2026-08-01        arcade: 
78b11b0319 2026-08-01        arcade: #[test]
78b11b0319 2026-08-01        arcade: fn wrong_server_config () -> Result<()> {
78b11b0319 2026-08-01        arcade: 	let configs = [
78b11b0319 2026-08-01        arcade: 		"domains = []",
78b11b0319 2026-08-01        arcade: 		"",
78b11b0319 2026-08-01        arcade: 		"[recipents]\na = 1",
78b11b0319 2026-08-01        arcade: 		r#"
78b11b0319 2026-08-01        arcade: 		api_key = "test-api-key"
78b11b0319 2026-08-01        arcade: 		api_gateway = "https://api.telegram.org"
78b11b0319 2026-08-01        arcade: 		default = 0
78b11b0319 2026-08-01        arcade: 		fields = ["date", "from", "subject"]
78b11b0319 2026-08-01        arcade: 		domains = ["example.com"]
78b11b0319 2026-08-01        arcade: 		# no recipients
78b11b0319 2026-08-01        arcade: 		"#,
78b11b0319 2026-08-01        arcade: 		r#"
78b11b0319 2026-08-01        arcade: 		ap_key = "test-api-key" # bad one
78b11b0319 2026-08-01        arcade: 		api_gateway = "https://api.telegram.org"
78b11b0319 2026-08-01        arcade: 		default = 0
78b11b0319 2026-08-01        arcade: 		fields = ["date", "from", "subject"]
78b11b0319 2026-08-01        arcade: 		domains = ["example.com"]
78b11b0319 2026-08-01        arcade: 
78b11b0319 2026-08-01        arcade: 		[recipients]
78b11b0319 2026-08-01        arcade: 		"someone@example.com" = 1
78b11b0319 2026-08-01        arcade: 		"root" = -1"#,
78b11b0319 2026-08-01        arcade: 		r#"
78b11b0319 2026-08-01        arcade: 		api_key = "test-api-key"
78b11b0319 2026-08-01        arcade: 		api_gateway = "https://api.telegram.org"
78b11b0319 2026-08-01        arcade: 		default = 0
78b11b0319 2026-08-01        arcade: 		fields = ["date", "from", "subject"]
78b11b0319 2026-08-01        arcade: 		domains = [] # empty
78b11b0319 2026-08-01        arcade: 
78b11b0319 2026-08-01        arcade: 		[recipients]
78b11b0319 2026-08-01        arcade: 		"someone@example.com" = 1
78b11b0319 2026-08-01        arcade: 		"root" = -1"#,
78b11b0319 2026-08-01        arcade: 	];
78b11b0319 2026-08-01        arcade: 	for config in configs {
78b11b0319 2026-08-01        arcade: 		let settings = config::Config::builder()
78b11b0319 2026-08-01        arcade: 			.add_source(config::File::from_str(config, Toml))
78b11b0319 2026-08-01        arcade: 			.build()
78b11b0319 2026-08-01        arcade: 			.stack()?;
78b11b0319 2026-08-01        arcade: 		ensure!(MailServer::new(settings).is_err(), format!("this config shouldn't be valid:\n{config}"));
f4660639ca 2026-07-31        arcade: 	}
78b11b0319 2026-08-01        arcade: 	
f4660639ca 2026-07-31        arcade: 	Ok(())
f4660639ca 2026-07-31        arcade: }