karma-web: show each board's source channel + server from a bot-written meta sidecar
All checks were successful
ci / check (push) Successful in 46s

This commit is contained in:
Jean Chevronnet 2026-07-30 00:48:57 +00:00
parent 7f6327270b
commit 4ccca54963
No known key found for this signature in database
GPG key ID: 439666D63A9477E4
7 changed files with 145 additions and 29 deletions

View file

@ -1,5 +1,5 @@
use rustbot::i18n::Locale;
use rustbot::karma_web::{parse_board, parse_events, render};
use rustbot::karma_web::{parse_board, parse_events, parse_meta, render};
fn board_with_events(net: &str, store: &str, log: &str) -> rustbot::karma_web::Board {
let mut b = parse_board(net, store);
@ -101,6 +101,32 @@ fn renders_spanish_chrome() {
assert!(html.contains("buen PR") && html.contains(">rust<"));
}
#[test]
fn parses_meta_server_and_channels() {
let (server, channels) =
parse_meta(r##"{"server":"irc.libera.chat","channels":["#argentina","#ar"]}"##);
assert_eq!(server, "irc.libera.chat");
assert_eq!(channels, vec!["#argentina".to_string(), "#ar".to_string()]);
// missing/garbage meta degrades to empty
assert_eq!(parse_meta("not json"), (String::new(), Vec::new()));
}
#[test]
fn renders_source_channel_and_server() {
let mut b = parse_board("libera", r#"{"romaka":2}"#);
b.server = "irc.libera.chat".to_string();
b.channels = vec!["#argentina".to_string()];
let en = render(&[b], 0, Locale::En);
assert!(en.contains("#argentina"), "channel missing: {en}");
assert!(en.contains("irc.libera.chat"), "server missing");
assert!(en.contains(">from<"), "from label missing");
// localized label
let mut b2 = parse_board("libera", r#"{"romaka":2}"#);
b2.channels = vec!["#argentina".to_string()];
let es = render(&[b2], 0, Locale::Es);
assert!(es.contains(">desde<") && es.contains("#argentina"), "{es}");
}
#[test]
fn escapes_untrusted_irc_input_everywhere() {
let log = "{\"t\":1,\"o\":\"<script>\",\"d\":1,\"by\":\"a&b\",\"why\":\"\\\"><img src=x>\"}\n";