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
All checks were successful
ci / check (push) Successful in 46s
This commit is contained in:
parent
7f6327270b
commit
4ccca54963
7 changed files with 145 additions and 29 deletions
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue