mirror of
https://github.com/telemt/telemt.git
synced 2026-11-01 05:12:02 +03:00
Rustfmt
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn quota_period_configuration_survives_round_trip() {
|
||||
let cfg: ProxyConfig = toml::from_str(
|
||||
r#"
|
||||
[access.users]
|
||||
alice = "0123456789abcdef0123456789abcdef"
|
||||
[access.user_data_quota]
|
||||
alice = 1024
|
||||
[access.user_quota_periods]
|
||||
alice = "monthly"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
let encoded = serde_json::to_value(&cfg).unwrap();
|
||||
assert_eq!(encoded["access"]["user_quota_periods"]["alice"], "monthly");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn quota_period_requires_a_configured_positive_quota_in_both_validation_paths() {
|
||||
for tail in [
|
||||
"[access.user_quota_periods]\nghost = 'daily'\n",
|
||||
"[access.user_quota_periods]\nalice = 'daily'\n",
|
||||
"[access.user_data_quota]\nalice = 0\n[access.user_quota_periods]\nalice = 'daily'\n",
|
||||
] {
|
||||
let source = format!("[access.users]\nalice = '0123456789abcdef0123456789abcdef'\n{tail}");
|
||||
let cfg: ProxyConfig = toml::from_str(&source).unwrap();
|
||||
assert!(
|
||||
cfg.validate()
|
||||
.unwrap_err()
|
||||
.to_string()
|
||||
.contains("user_quota_periods")
|
||||
);
|
||||
assert!(load_config_error_from_temp_toml(&source).contains("user_quota_periods"));
|
||||
}
|
||||
for period in ["daily", "weekly", "monthly"] {
|
||||
let source = format!(
|
||||
"[general]\nconfig_strict = true\n[access.users]\nalice = '0123456789abcdef0123456789abcdef'\n[access.user_data_quota]\nalice = 1024\n[access.user_quota_periods]\nalice = '{period}'\n"
|
||||
);
|
||||
assert_eq!(
|
||||
load_config_from_temp_toml(&source)
|
||||
.access
|
||||
.user_quota_periods
|
||||
.len(),
|
||||
1
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn quota_period_tokens_are_strict_and_inventory_is_bounded() {
|
||||
for token in ["'Daily'", "'yearly'", "42", "true"] {
|
||||
assert!(
|
||||
toml::from_str::<ProxyConfig>(&format!("[access.user_quota_periods]\nalice = {token}"))
|
||||
.is_err()
|
||||
);
|
||||
}
|
||||
let mut cfg = ProxyConfig::default();
|
||||
assert!(cfg.access.user_quota_periods.is_empty());
|
||||
cfg.access.users = (0..65_537)
|
||||
.map(|n| (format!("u{n}"), "0123456789abcdef0123456789abcdef".into()))
|
||||
.collect();
|
||||
cfg.access.user_data_quota.insert("u0".into(), 1);
|
||||
cfg.access
|
||||
.user_quota_periods
|
||||
.insert("u0".into(), crate::config::UserQuotaPeriod::Daily);
|
||||
assert!(cfg.validate().unwrap_err().to_string().contains("65536"));
|
||||
}
|
||||
Reference in New Issue
Block a user