64 lines
2.8 KiB
Rust
64 lines
2.8 KiB
Rust
// file: crates/ksp-app-raw-transaction-ingest-desk/unit_tests/frontend_logging.rs
|
|
// version: 2
|
|
|
|
#[test]
|
|
fn frontend_log_levels_are_explicit_and_case_insensitive() {
|
|
assert!(matches!(super::parse_level(" TRACE "), std::result::Result::Ok(super::FrontendLogLevel::Trace)));
|
|
assert!(matches!(super::parse_level("debug"), std::result::Result::Ok(super::FrontendLogLevel::Debug)));
|
|
assert!(matches!(super::parse_level("Info"), std::result::Result::Ok(super::FrontendLogLevel::Info)));
|
|
assert!(matches!(super::parse_level("warn"), std::result::Result::Ok(super::FrontendLogLevel::Warn)));
|
|
assert!(matches!(super::parse_level("ERROR"), std::result::Result::Ok(super::FrontendLogLevel::Error)));
|
|
}
|
|
|
|
#[test]
|
|
fn unsupported_frontend_log_level_is_rejected() {
|
|
let result = super::parse_level("notice");
|
|
assert!(result.is_err());
|
|
let error = match result {
|
|
std::result::Result::Ok(_) => return,
|
|
std::result::Result::Err(error) => error,
|
|
};
|
|
assert_eq!(error.code(), crate::ERROR_CODE_FRONTEND_LOG_LEVEL_INVALID);
|
|
}
|
|
|
|
#[test]
|
|
fn frontend_log_targets_are_whitelisted() {
|
|
assert!(matches!(super::parse_target("frontend"), std::result::Result::Ok(super::FrontendLogTarget::Frontend)));
|
|
assert!(matches!(super::parse_target(" MAIN "), std::result::Result::Ok(super::FrontendLogTarget::Main)));
|
|
assert!(matches!(super::parse_target("Splash"), std::result::Result::Ok(super::FrontendLogTarget::Splash)));
|
|
}
|
|
|
|
#[test]
|
|
fn arbitrary_frontend_log_target_is_rejected() {
|
|
let result = super::parse_target("ksp-app-raw-transaction-ingest-desk.test.logging");
|
|
assert!(result.is_err());
|
|
let error = match result {
|
|
std::result::Result::Ok(_) => return,
|
|
std::result::Result::Err(error) => error,
|
|
};
|
|
assert_eq!(error.code(), crate::ERROR_CODE_FRONTEND_LOG_TARGET_INVALID);
|
|
}
|
|
|
|
#[test]
|
|
fn pre_012_frontend_log_ipc_rejects_unknown_fields_and_unbounded_or_control_messages() {
|
|
let unknown = serde_json::from_value::<crate::FrontendLogPayloadDto>(serde_json::json!({
|
|
"level": "info",
|
|
"targetId": "main",
|
|
"message": "safe",
|
|
"endpointUrl": "https://forbidden.invalid"
|
|
}));
|
|
assert!(unknown.is_err());
|
|
let oversized = crate::FrontendLogPayloadDto {
|
|
level: "info".to_owned(),
|
|
target_id: "main".to_owned(),
|
|
message: "x".repeat(super::FRONTEND_LOG_MESSAGE_MAX_BYTES + 1),
|
|
};
|
|
let result = super::validate_payload_shape(&oversized);
|
|
assert!(result.is_err());
|
|
if let std::result::Result::Err(error) = result {
|
|
assert_eq!(error.code(), crate::ERROR_CODE_FRONTEND_LOG_PAYLOAD_INVALID);
|
|
}
|
|
let nul = crate::FrontendLogPayloadDto { level: "info".to_owned(), target_id: "main".to_owned(), message: "safe\0hostile".to_owned() };
|
|
assert!(super::validate_payload_shape(&nul).is_err());
|
|
}
|