mirror of
https://github.com/usestrix/firewall.git
synced 2026-11-09 05:19:35 -10:00
* Block versions published under a minimum age * Trim comments and tidy the age filter
28 lines
1.1 KiB
Rust
28 lines
1.1 KiB
Rust
use firewall::policies::screen;
|
|
use firewall::{Firewall, FirewallConfig};
|
|
use rama::rt::blocking::Runtime;
|
|
|
|
const OLD_DOWNLOADS: &[&str] = &[
|
|
"https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
|
|
"https://files.pythonhosted.org/packages/aa/bb/requests-2.31.0-py3-none-any.whl",
|
|
"https://static.crates.io/crates/serde/1.0.200",
|
|
"https://rubygems.org/gems/rake-13.0.6.gem",
|
|
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v1.3.2.zip",
|
|
];
|
|
|
|
#[test]
|
|
#[ignore = "queries every registry"]
|
|
fn every_registry_reports_when_a_version_was_published() {
|
|
let runtime = Runtime::try_new().expect("runtime");
|
|
runtime.block_on(async {
|
|
let firewall =
|
|
|hours| Firewall::new(FirewallConfig { min_age_hours: hours, ..Default::default() });
|
|
let (lenient, strict) = (firewall(24), firewall(24 * 365 * 100));
|
|
for url in OLD_DOWNLOADS {
|
|
assert_eq!(screen(url, &lenient).await, None, "{url}");
|
|
let blocked = screen(url, &strict).await.unwrap_or_default();
|
|
assert!(blocked.contains("hour minimum"), "{url}: {blocked:?}");
|
|
}
|
|
});
|
|
}
|