Files
bsodfather 0e8f1ca03a
CI / Rust Checks (push) Failing after 4m28s
CI / UI Checks (push) Has been skipped
CI / Frontend E2E (push) Has been skipped
CI / Community Image Smoke (push) Has been skipped
CI / Deploy (push) Has been skipped
наблюдаемость: завершить базовый контур Community
Добавить структурированные журналы, метрики, трассировку и безопасный канал критических ошибок. Усилить границы рантайма, тесты, проверку зависимостей и сценарии развёртывания.
2026-07-31 01:01:14 +03:00

34 lines
1.2 KiB
Rust

use crank_observability::{CriticalErrorCategory, SentryConfig, SentryConfigError};
#[test]
fn missing_or_blank_dsn_disables_critical_error_channel() {
assert!(!SentryConfig::parse(None).expect("missing DSN").enabled());
assert!(!SentryConfig::parse(Some("")).expect("empty DSN").enabled());
assert!(
!SentryConfig::parse(Some(" "))
.expect("blank DSN")
.enabled()
);
}
#[test]
fn invalid_explicit_dsn_is_rejected_without_echoing_the_value() {
let secret_value = "not-a-dsn?token=control-secret";
let error = SentryConfig::parse(Some(secret_value)).expect_err("invalid DSN must fail");
assert!(matches!(error, SentryConfigError::InvalidDsn));
assert!(!error.to_string().contains(secret_value));
assert!(!error.to_string().contains("control-secret"));
}
#[test]
fn critical_error_categories_are_closed_and_stable() {
assert_eq!(CriticalErrorCategory::Panic.as_str(), "panic");
assert_eq!(CriticalErrorCategory::Startup.as_str(), "startup");
assert_eq!(CriticalErrorCategory::Internal.as_str(), "internal");
assert_eq!(
CriticalErrorCategory::DataIntegrity.as_str(),
"data_integrity"
);
}