rubot/tests/config.rs
2026-07-30 01:40:18 +00:00

60 lines
1.8 KiB
Rust

use rustbot::config::parse_str;
#[test]
fn flat_config_is_a_single_network() {
let cfgs = parse_str("server = irc.example.org\nnick = flatbot\nchannels = #a #b\n");
assert_eq!(cfgs.len(), 1);
assert_eq!(cfgs[0].server, "irc.example.org");
assert_eq!(cfgs[0].nick, "flatbot");
assert_eq!(cfgs[0].channels, vec!["#a", "#b"]);
assert_eq!(cfgs[0].name, "irc.example.org");
}
#[test]
fn sections_inherit_top_level_defaults_and_override() {
let cfgs = parse_str(
"nick = shared\nchannels = #lobby\n\
[libera]\nserver = irc.libera.chat\ntls = true\n\
[oftc]\nserver = irc.oftc.net\nnick = other\nchannels = #oftc\n",
);
assert_eq!(cfgs.len(), 2);
let libera = &cfgs[0];
assert_eq!(libera.name, "libera");
assert_eq!(libera.server, "irc.libera.chat");
assert_eq!(libera.nick, "shared");
assert_eq!(libera.channels, vec!["#lobby"]);
assert!(libera.tls);
assert_eq!(libera.port, 6697);
let oftc = &cfgs[1];
assert_eq!(oftc.name, "oftc");
assert_eq!(oftc.server, "irc.oftc.net");
assert_eq!(oftc.nick, "other");
assert_eq!(oftc.channels, vec!["#oftc"]);
assert!(!oftc.tls);
}
#[test]
fn a_section_may_rename_itself() {
let cfgs = parse_str("[net]\nname = pretty\nserver = irc.example.org\n");
assert_eq!(cfgs.len(), 1);
assert_eq!(cfgs[0].name, "pretty");
}
#[test]
fn comments_and_blanks_are_ignored() {
let cfgs = parse_str("# comment\n; also\n\n \n");
assert_eq!(cfgs.len(), 1);
assert_eq!(cfgs[0].server, "irc.tchatou.fr");
}
#[test]
fn admin_list_is_parsed_and_inherited() {
let cfgs = parse_str("admin = reverse, alice\nwebchat = https://w/\n[net]\nserver = x\n");
assert_eq!(
cfgs[0].admin,
vec!["reverse".to_string(), "alice".to_string()]
);
assert_eq!(cfgs[0].webchat, "https://w/");
}