blob: 5e215a955d56ee24babae3da66a7cf6ecf6ca286 [file] [log] [blame]
use crate::format::{RegistryEntry, RegistryFile};
use super::*;
#[test]
fn mock_simple_init() {
// (Pass) Should look the same as a fresh 'vet init'.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-init", metadata, store);
}
#[test]
fn mock_simple_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-no-unaudited", metadata, store);
}
#[test]
fn mock_simple_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-full-audited", metadata, store);
}
#[test]
fn builtin_simple_init() {
// (Pass) Should look the same as a fresh 'vet init'.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-init", metadata, store);
}
#[test]
fn builtin_simple_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-no-unaudited", metadata, store);
}
#[test]
fn builtin_simple_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-full-audited", metadata, store);
}
#[test]
fn mock_simple_missing_transitive() {
// (Fail) Missing an audit for a transitive dep
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits
.audits
.get_mut("transitive-third-party1")
.unwrap()
.clear();
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-missing-transitive", metadata, store);
}
#[test]
fn mock_simple_missing_direct_internal() {
// (Fail) Missing an audit for a direct dep that has children
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.get_mut("third-party1").unwrap().clear();
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-missing-direct-internal", metadata, store);
}
#[test]
fn mock_simple_missing_direct_leaf() {
// (Fail) Missing an entry for direct dep that has no children
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.get_mut("third-party2").unwrap().clear();
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-missing-direct-leaf", metadata, store);
}
#[test]
fn mock_simple_missing_leaves() {
// (Fail) Missing all leaf audits (but not the internal)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.get_mut("third-party2").unwrap().clear();
audits
.audits
.get_mut("transitive-third-party1")
.unwrap()
.clear();
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-missing-leaves", metadata, store);
}
#[test]
fn mock_simple_weaker_transitive_req() {
// (Pass) A third-party dep with weaker requirements on a child dep
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let trans_audits = &mut audits.audits.get_mut("transitive-third-party1").unwrap();
trans_audits.clear();
trans_audits.push(full_audit(ver(DEFAULT_VER), "weak-reviewed"));
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(full_audit(ver(DEFAULT_VER), "reviewed"));
config.policy.insert(
"third-party1".to_string(),
dep_policy([("transitive-third-party1", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-weaker-transitive-req", metadata, store);
}
#[test]
fn mock_simple_weaker_transitive_req_using_implies() {
// (Pass) A third-party dep with weaker requirements on a child dep
// but the child dep actually has *super* reqs, to check that implies works
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let trans_audits = &mut audits.audits.get_mut("transitive-third-party1").unwrap();
trans_audits.clear();
trans_audits.push(full_audit(ver(DEFAULT_VER), "strong-reviewed"));
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(full_audit(ver(DEFAULT_VER), "reviewed"));
config.policy.insert(
"third-party1".to_string(),
dep_policy([("transitive-third-party1", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-weaker-transitive-req-using-implies",
metadata,
store
);
}
#[test]
fn mock_simple_lower_version_review() {
// (Fail) A dep that has a review but for a lower version.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(full_audit(ver(DEFAULT_VER - 1), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-lower-version-review", metadata, store);
}
#[test]
fn mock_simple_higher_version_review() {
// (Fail) A dep that has a review but for a higher version.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(full_audit(ver(DEFAULT_VER + 1), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-higher-version-review", metadata, store);
}
#[test]
fn mock_simple_higher_and_lower_version_review() {
// (Fail) A dep that has a review but for both a higher and lower version.
// Once I mock out fake diffs it should prefer the lower one because the
// system will make application size grow quadratically.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(full_audit(ver(DEFAULT_VER - 1), DEFAULT_CRIT));
direct_audits.push(full_audit(ver(DEFAULT_VER + 1), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-higher-and-lower-version-review",
metadata,
store
);
}
#[test]
fn mock_simple_reviewed_too_weakly() {
// (Fail) A dep has a review but the criteria is too weak
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let trans_audits = &mut audits.audits.get_mut("transitive-third-party1").unwrap();
trans_audits.clear();
trans_audits.push(full_audit(ver(DEFAULT_VER), "weak-reviewed"));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-reviewed-too-weakly", metadata, store);
}
#[test]
fn mock_simple_delta_to_exemptions() {
// (Pass) A dep has a delta to an exemptions entry
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 5),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER - 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-unaudited", metadata, store);
}
#[test]
fn mock_simple_delta_to_exemptions_overshoot() {
// (Fail) A dep has a delta but it overshoots the exemptions entry.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 6),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER - 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-unaudited-overshoot", metadata, store);
}
#[test]
fn mock_simple_delta_to_exemptions_undershoot() {
// (Fail) A dep has a delta but it undershoots the exemptions entry.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 3),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER - 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-unaudited-undershoot", metadata, store);
}
#[test]
fn mock_simple_delta_to_full_audit() {
// (Pass) A dep has a delta to a fully audited entry
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 5),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-full-audit", metadata, store);
}
#[test]
fn mock_simple_delta_to_full_audit_overshoot() {
// (Fail) A dep has a delta to a fully audited entry but overshoots
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 6),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-full-audit-overshoot", metadata, store);
}
#[test]
fn mock_simple_delta_to_full_audit_undershoot() {
// (Fail) A dep has a delta to a fully audited entry but undershoots
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 3),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-delta-to-full-audit-undershoot",
metadata,
store
);
}
#[test]
fn mock_simple_reverse_delta_to_full_audit() {
// (Pass) A dep has a *reverse* delta to a fully audited entry
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER + 5),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER + 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-reverse-delta-to-full-audit", metadata, store);
}
#[test]
fn mock_simple_reverse_delta_to_exemptions() {
// (Pass) A dep has a *reverse* delta to an exemptions entry
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER + 5),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER + 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-reverse-delta-to-unaudited", metadata, store);
}
#[test]
fn mock_simple_wrongly_reversed_delta_to_exemptions() {
// (Fail) A dep has a *reverse* delta to an exemptions entry but they needed a normal one
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER),
ver(DEFAULT_VER - 5),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER - 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-wrongly-reversed-delta-to-unaudited",
metadata,
store
);
}
#[test]
fn mock_simple_wrongly_reversed_delta_to_full_audit() {
// (Fail) A dep has a *reverse* delta to a fully audited entry but they needed a normal one
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER),
ver(DEFAULT_VER - 5),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-wrongly-reversed-delta-to-full-audit",
metadata,
store
);
}
#[test]
fn mock_simple_needed_reversed_delta_to_exemptions() {
// (Fail) A dep has a delta to an exemptions entry but they needed a reversed one
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER),
ver(DEFAULT_VER + 5),
DEFAULT_CRIT,
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER + 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-simple-needed-reversed-delta-to-unaudited",
metadata,
store
);
}
#[test]
fn mock_simple_delta_to_exemptions_too_weak() {
// (Fail) A dep has a delta to an exemptions entry but it's too weak
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 5),
ver(DEFAULT_VER),
"weak-reviewed",
));
let direct_exemptions = &mut config.exemptions;
direct_exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER - 5), DEFAULT_CRIT)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-unaudited-too-weak", metadata, store);
}
#[test]
fn mock_simple_delta_to_full_audit_too_weak() {
// (Fail) A dep has a delta to a fully audited entry but it's too weak
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 5),
ver(DEFAULT_VER),
"weak-reviewed",
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), DEFAULT_CRIT));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-full-audit-too-weak", metadata, store);
}
#[test]
fn mock_simple_delta_to_too_weak_full_audit() {
// (Fail) A dep has a delta to a fully audited entry but it's too weak
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
let direct_audits = &mut audits.audits.get_mut("third-party1").unwrap();
direct_audits.clear();
direct_audits.push(delta_audit(
ver(DEFAULT_VER - 5),
ver(DEFAULT_VER),
DEFAULT_CRIT,
));
direct_audits.push(full_audit(ver(DEFAULT_VER - 5), "weak-reviewed"));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-simple-delta-to-too-weak-full-audit", metadata, store);
}
#[test]
fn mock_complex_inited() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-inited", metadata, store);
}
#[test]
fn mock_complex_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-no-unaudited", metadata, store);
}
#[test]
fn mock_complex_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-full-audited", metadata, store);
}
#[test]
fn builtin_complex_inited() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-complex-inited", metadata, store);
}
#[test]
fn builtin_complex_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-complex-no-unaudited", metadata, store);
}
#[test]
fn builtin_complex_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-complex-full-audited", metadata, store);
}
#[test]
fn builtin_complex_minimal_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_minimal_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-complex-minimal-audited", metadata, store);
}
#[test]
fn mock_complex_missing_core5() {
// (Fail) Missing an audit for the v5 version of third-core
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![full_audit(ver(DEFAULT_VER), "reviewed")],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-missing-core5", metadata, store);
}
#[test]
fn mock_complex_missing_core10() {
// (Fail) Missing an audit for the v10 version of third-core
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![full_audit(ver(5), "reviewed")],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-missing-core10", metadata, store);
}
#[test]
fn mock_complex_core10_too_weak() {
// (Fail) Criteria for core10 is too weak
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![
full_audit(ver(DEFAULT_VER), "weak-reviewed"),
full_audit(ver(5), "reviewed"),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-core10-too-weak", metadata, store);
}
#[test]
fn mock_complex_core10_partially_too_weak() {
// (Fail) Criteria for core10 is too weak for thirdA but not thirdA and thirdAB (full)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![
full_audit(ver(DEFAULT_VER), "weak-reviewed"),
full_audit(ver(5), "reviewed"),
],
);
let audit_with_weaker_req = full_audit(ver(DEFAULT_VER), "reviewed");
audits
.audits
.insert("thirdA".to_string(), vec![audit_with_weaker_req.clone()]);
audits
.audits
.insert("thirdAB".to_string(), vec![audit_with_weaker_req]);
config.policy.insert(
"thirdA".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
config.policy.insert(
"thirdAB".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("mock-complex-core10-partially-too-weak", metadata, store);
}
#[test]
fn mock_complex_core10_partially_too_weak_via_weak_delta() {
// (Fail) Criteria for core10 is too weak for thirdA but not thirdA and thirdAB (weak delta)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![
delta_audit(ver(5), ver(DEFAULT_VER), "weak-reviewed"),
full_audit(ver(5), "reviewed"),
],
);
let audit_with_weaker_req = full_audit(ver(DEFAULT_VER), "reviewed");
audits
.audits
.insert("thirdA".to_string(), vec![audit_with_weaker_req.clone()]);
audits
.audits
.insert("thirdAB".to_string(), vec![audit_with_weaker_req]);
config.policy.insert(
"thirdA".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
config.policy.insert(
"thirdAB".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-complex-core10-partially-too-weak-via-weak-delta",
metadata,
store
);
}
#[test]
fn mock_complex_core10_partially_too_weak_via_strong_delta() {
// (Fail) Criteria for core10 is too weak for thirdA but not thirdA and thirdAB
// because there's a strong delta from 5->10 but 0->5 is still weak!
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![
delta_audit(ver(5), ver(DEFAULT_VER), "reviewed"),
full_audit(ver(5), "weak-reviewed"),
],
);
let audit_with_weaker_req = full_audit(ver(DEFAULT_VER), "reviewed");
audits
.audits
.insert("thirdA".to_string(), vec![audit_with_weaker_req.clone()]);
audits
.audits
.insert("thirdAB".to_string(), vec![audit_with_weaker_req]);
config.policy.insert(
"firstA".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
config.policy.insert(
"thirdA".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
config.policy.insert(
"thirdAB".to_string(),
dep_policy([("third-core", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"mock-complex-core10-partially-too-weak-via-strong-delta",
metadata,
store
);
}
#[test]
fn mock_simple_policy_root_too_strong() {
// (Fail) Root policy is too strong
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config
.policy
.insert("root-package".to_string(), self_policy(["strong-reviewed"]));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-root-too-strong", metadata, store);
}
#[test]
fn mock_simple_policy_root_weaker() {
// (Pass) Root policy weaker than necessary
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config
.policy
.insert("root-package".to_string(), self_policy(["weak-reviewed"]));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-root-weaker", metadata, store);
}
#[test]
fn mock_simple_policy_first_too_strong() {
// (Fail) First-party policy is too strong
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config
.policy
.insert("first-party".to_string(), self_policy(["strong-reviewed"]));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-too-strong", metadata, store);
}
#[test]
fn mock_simple_policy_first_weaker() {
// (Pass) First-party policy weaker than necessary
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config
.policy
.insert("first-party".to_string(), self_policy(["weak-reviewed"]));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-weaker", metadata, store);
}
#[test]
fn mock_simple_policy_root_dep_weaker() {
// (Pass) root->first-party policy weaker than necessary
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"root-package".to_string(),
dep_policy([("first-party", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-root-dep-weaker", metadata, store);
}
#[test]
fn mock_simple_policy_root_dep_too_strong() {
// (Pass) root->first-party policy stronger than necessary
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"root-package".to_string(),
dep_policy([("first-party", ["strong-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-root-dep-too-strong", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_weaker() {
// (Pass) first-party->third-party policy weaker than necessary
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party1", ["weak-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-weaker", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_too_strong() {
// (Pass) first-party->third-party policy too strong
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party1", ["strong-reviewed"])]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-too-strong", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_stronger() {
// (Pass) first-party->third-party policy stronger but satisfied
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party2", ["strong-reviewed"])]),
);
audits.audits.insert(
"third-party2".to_string(),
vec![full_audit(ver(DEFAULT_VER), "strong-reviewed")],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-stronger", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_weaker_needed() {
// (Pass) first-party->third-party policy weaker out of necessity
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party1", ["weak-reviewed"])]),
);
audits.audits.insert(
"third-party1".to_string(),
vec![full_audit(ver(DEFAULT_VER), "weak-reviewed")],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-weaker-needed", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_extra() {
// (Pass) first-party->third-party policy has extra satisfied criteria
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party2", ["reviewed", "fuzzed"])]),
);
audits.audits.insert(
"third-party2".to_string(),
vec![
full_audit(ver(DEFAULT_VER), "reviewed"),
full_audit(ver(DEFAULT_VER), "fuzzed"),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-extra", metadata, store);
}
#[test]
fn mock_simple_policy_first_dep_extra_missing() {
// (Fail) first-party->third-party policy has extra unsatisfied criteria
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party2", ["reviewed", "fuzzed"])]),
);
audits.audits.insert(
"third-party2".to_string(),
vec![full_audit(ver(DEFAULT_VER), "reviewed")],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-dep-extra-missing", metadata, store);
}
#[test]
fn mock_simple_policy_first_extra_partially_missing() {
// (Fail) first-party policy has extra unsatisfied criteria
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
self_policy(["reviewed", "fuzzed"]),
);
audits.audits.insert(
"third-party2".to_string(),
vec![
full_audit(ver(DEFAULT_VER), "reviewed"),
full_audit(ver(DEFAULT_VER), "fuzzed"),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"simple-policy-first-extra-partially-missing",
metadata,
store
);
}
#[test]
fn mock_simple_first_policy_redundant() {
// (Pass) first-party policy has redundant implied things
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
self_policy(["reviewed", "weak-reviewed"]),
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("simple-policy-first-policy-redundant", metadata, store);
}
#[test]
fn builtin_simple_deps_inited() {
// (Pass) Should look the same as a fresh 'vet init'.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-deps-init", metadata, store);
}
#[test]
fn builtin_simple_deps_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-deps-no-unaudited", metadata, store);
}
#[test]
fn builtin_simple_deps_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-deps-full-audited", metadata, store);
}
#[test]
fn builtin_simple_deps_minimal_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_minimal_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-deps-minimal-audited", metadata, store);
}
#[test]
fn builtin_no_deps() {
// (Pass) No actual deps
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::new(vec![MockPackage {
name: "root-package",
is_workspace: true,
is_first_party: true,
deps: vec![],
..Default::default()
}]);
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-no-deps", metadata, store);
}
#[test]
fn builtin_only_first_deps() {
// (Pass) No actual deps
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::new(vec![
MockPackage {
name: "root-package",
is_workspace: true,
is_first_party: true,
deps: vec![dep("first-party")],
..Default::default()
},
MockPackage {
name: "first-party",
is_first_party: true,
deps: vec![],
..Default::default()
},
]);
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-only-first-deps", metadata, store);
}
#[test]
fn builtin_cycle_inited() {
// (Pass) Should look the same as a fresh 'vet init'.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::cycle();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-cycle-inited", metadata, store);
}
#[test]
fn builtin_cycle_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::cycle();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-cycle-unaudited", metadata, store);
}
#[test]
fn builtin_cycle_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::cycle();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-cycle-full-audited", metadata, store);
}
#[test]
fn builtin_cycle_minimal_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::cycle();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_minimal_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-cycle-minimal-audited", metadata, store);
}
#[test]
fn builtin_dev_detection() {
// (Pass) Check that we properly identify things that are or aren't only dev-deps,
// even when they're indirect or used in both contexts.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_no_exemptions(&metadata);
audits.audits.insert(
"normal".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
audits.audits.insert(
"both".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
audits.audits.insert(
"simple-dev".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
audits.audits.insert(
"simple-dev-indirect".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
audits.audits.insert(
"dev-cycle-direct".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
audits.audits.insert(
"dev-cycle-indirect".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-dev-detection", metadata, store);
}
#[test]
fn builtin_dev_detection_empty() {
// (Fail) same as above but without any audits to confirm expectations
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-dev-detection-empty", metadata, store);
}
#[test]
fn builtin_dev_detection_empty_deeper() {
// (Fail) same as above but deeper
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-dev-detection-empty-deeper", metadata, store);
}
#[test]
fn builtin_simple_exemptions_extra() {
// (Pass) there's an extra unused exemptions entry, but the other is needed
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert("third-party1".to_string(), vec![]);
config.exemptions.insert(
"third-party1".to_string(),
vec![
exemptions(ver(5), SAFE_TO_DEPLOY),
exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-extra", metadata, store);
}
#[test]
fn builtin_simple_exemptions_not_a_real_dep() {
// (Pass) there's an exemptions entry for a package that isn't in our tree at all.
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = builtin_files_full_audited(&metadata);
config.exemptions.insert(
"fake-dep".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-not-a-real-dep", metadata, store);
}
#[test]
fn builtin_simple_deps_exemptions_overbroad() {
// (Pass) the exemptions entry is needed but it's overbroad
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert("dev".to_string(), vec![]);
config.exemptions.insert(
"dev".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-overbroad", metadata, store);
}
#[test]
fn builtin_complex_exemptions_twins() {
// (Pass) two versions of a crate exist and both are exemptions and they're needed
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert("third-core".to_string(), vec![]);
config.exemptions.insert(
"third-core".to_string(),
vec![
exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY),
exemptions(ver(5), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-twins", metadata, store);
}
#[test]
fn builtin_complex_exemptions_partial_twins() {
// (Pass) two versions of a crate exist and one is exemptions and one is audited
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::complex();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-core".to_string(),
vec![full_audit(ver(5), SAFE_TO_DEPLOY)],
);
config.exemptions.insert(
"third-core".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-partial-twins", metadata, store);
}
#[test]
fn builtin_simple_exemptions_in_delta() {
// (Pass) An audited entry overlaps a delta and isn't needed
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
config.exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(5), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-in-delta", metadata, store);
}
#[test]
fn builtin_simple_exemptions_in_full() {
// (Pass) An audited entry overlaps a full audit and isn't needed
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
config.exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(3), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-in-full", metadata, store);
}
#[test]
fn builtin_simple_exemptions_in_direct_full() {
// (Pass) An audited entry overlaps a full audit which is the cur version and isn't needed
// (This test used to warn when we tried to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
config.exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-unaudited-in-direct-full", metadata, store);
}
#[test]
fn builtin_simple_exemptions_nested_weaker_req() {
// (Pass) A dep that has weaker requirements on its dep
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
delta_audit(ver(3), ver(6), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
audits.audits.insert(
"transitive-third-party1".to_string(),
vec![
delta_audit(ver(4), ver(8), SAFE_TO_RUN),
delta_audit(ver(8), ver(DEFAULT_VER), SAFE_TO_RUN),
],
);
config.policy.insert(
"third-party1".to_string(),
dep_policy([("transitive-third-party1", [SAFE_TO_RUN])]),
);
config.exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(3), SAFE_TO_DEPLOY)],
);
config.exemptions.insert(
"transitive-third-party1".to_string(),
vec![exemptions(ver(4), SAFE_TO_RUN)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-simple-unaudited-nested-weaker-req",
metadata,
store
);
}
#[test]
fn builtin_simple_exemptions_nested_stronger_req() {
// (Pass) A dep that has stronger requirements on its dep
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
config.policy.insert(
"first-party".to_string(),
dep_policy([("third-party1", [SAFE_TO_RUN])]),
);
config.policy.insert(
"third-party1".to_string(),
dep_policy([("transitive-third-party1", [SAFE_TO_DEPLOY])]),
);
audits.audits.insert(
"third-party1".to_string(),
vec![
delta_audit(ver(3), ver(6), SAFE_TO_RUN),
delta_audit(ver(6), ver(DEFAULT_VER), SAFE_TO_RUN),
],
);
audits.audits.insert(
"transitive-third-party1".to_string(),
vec![
delta_audit(ver(4), ver(8), SAFE_TO_DEPLOY),
delta_audit(ver(8), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
config.exemptions.insert(
"third-party1".to_string(),
vec![exemptions(ver(3), SAFE_TO_RUN)],
);
config.exemptions.insert(
"transitive-third-party1".to_string(),
vec![exemptions(ver(4), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-simple-unaudited-nested-stronger-req",
metadata,
store
);
}
#[test]
fn builtin_simple_deps_exemptions_adds_uneeded_criteria() {
// (Pass) An audited entry overlaps a full audit which is the cur version and isn't needed
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple_deps();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"dev".to_string(),
vec![
full_audit(ver(5), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
config
.exemptions
.insert("dev".to_string(), vec![exemptions(ver(5), SAFE_TO_DEPLOY)]);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-simple-deps-unaudited-adds-uneeded-criteria",
metadata,
store
);
}
#[test]
fn builtin_dev_detection_exemptions_adds_uneeded_criteria_indirect() {
// (Pass) An audited entry overlaps a full audit which is the cur version and isn't needed
// (This test could warn if we try to detect "useless exemptions" eagerly)
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = builtin_files_minimal_audited(&metadata);
audits.audits.insert(
"simple-dev-indirect".to_string(),
vec![
full_audit(ver(5), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
config.exemptions.insert(
"simple-dev-indirect".to_string(),
vec![exemptions(ver(5), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-dev-detection-unaudited-adds-uneeded-criteria-indirect",
metadata,
store
);
}
#[test]
fn builtin_dev_detection_cursed_full() {
// (Pass): dev-indirect has safe-to-run and by policy we only need safe-to-run
// but dev (its parent) is audited for safe-to-deploy which naively requires the child
// be safe-to-deploy. However criteria "decomposition" makes this ok, and we do succesfully
// validate for safe-to-run.
//
// This test is "cursed" because it caused some crashes in glitched out the blame system.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"simple-dev-indirect".to_string(),
vec![
full_audit(ver(5), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-dev-detection-cursed-full", metadata, store);
}
#[test]
fn builtin_dev_detection_cursed_minimal() {
// (Pass): the same as the full cursed one, but without the cursed part.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::dev_detection();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_minimal_audited(&metadata);
audits.audits.insert(
"simple-dev-indirect".to_string(),
vec![
full_audit(ver(5), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_RUN),
delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-dev-detection-cursed-minimal", metadata, store);
}
#[test]
fn builtin_simple_delta_cycle() {
// (Pass) simple delta cycle
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-delta-cycle", metadata, store);
}
#[test]
fn builtin_simple_noop_delta() {
// (Pass) completely pointless noop delta
// (This test could warn if we try to detect "useless deltas")
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-noop-delta", metadata, store);
}
#[test]
fn builtin_simple_delta_double_cycle() {
// (Pass) double delta cycle
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(2), SAFE_TO_DEPLOY),
delta_audit(ver(2), ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(4), SAFE_TO_DEPLOY),
delta_audit(ver(4), ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(4), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(6), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-delta-double-cycle", metadata, store);
}
#[test]
fn builtin_simple_delta_broken_double_cycle() {
// (Fail) double delta cycle that's broken
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(2), SAFE_TO_DEPLOY),
delta_audit(ver(2), ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(4), SAFE_TO_DEPLOY),
delta_audit(ver(4), ver(3), SAFE_TO_DEPLOY),
// broken: delta_audit(ver(4), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(6), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-delta-broken-double-cycle", metadata, store);
}
#[test]
fn builtin_simple_delta_broken_cycle() {
// (Fail) simple delta cycle that's broken
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(3), SAFE_TO_DEPLOY),
delta_audit(ver(3), ver(5), SAFE_TO_DEPLOY),
delta_audit(ver(5), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(5), SAFE_TO_DEPLOY),
// broken: delta_audit(ver(7), ver(8), SAFE_TO_DEPLOY),
delta_audit(ver(8), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-delta-broken-cycle", metadata, store);
}
#[test]
fn builtin_simple_long_cycle() {
// (Pass) long delta cycle
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(2), SAFE_TO_DEPLOY),
delta_audit(ver(2), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(6), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(8), SAFE_TO_DEPLOY),
delta_audit(ver(8), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(8), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-long-cycle", metadata, store);
}
#[test]
fn builtin_simple_useless_long_cycle() {
// (Pass) useless long delta cycle
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, mut audits, imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"third-party1".to_string(),
vec![
full_audit(ver(2), SAFE_TO_DEPLOY),
delta_audit(ver(2), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(6), SAFE_TO_DEPLOY),
delta_audit(ver(6), ver(8), SAFE_TO_DEPLOY),
delta_audit(ver(8), ver(7), SAFE_TO_DEPLOY),
delta_audit(ver(7), ver(DEFAULT_VER), SAFE_TO_DEPLOY),
],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-useless-long-cycle", metadata, store);
}
#[test]
fn builtin_haunted_init() {
// (Pass) Should look the same as a fresh 'vet init'.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::haunted_tree();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_inited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-haunted-init", metadata, store);
}
#[test]
fn builtin_haunted_no_exemptions() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::haunted_tree();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-haunted-no-unaudited", metadata, store);
}
#[test]
fn builtin_haunted_no_exemptions_deeper() {
// (Fail) Should look the same as a fresh 'vet init' but with all 'exemptions' entries deleted.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::haunted_tree();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-haunted-no-unaudited-deeper", metadata, store);
}
#[test]
fn builtin_haunted_full_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::haunted_tree();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_full_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-haunted-full-audited", metadata, store);
}
#[test]
fn builtin_haunted_minimal_audited() {
// (Pass) All entries have direct minimal audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::haunted_tree();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_minimal_audited(&metadata);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-haunted-minimal-audited", metadata, store);
}
#[test]
fn builtin_simple_audit_as_default_root_no_audit() {
// (Fail) the root is audit-as-crates-io but has no audits
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = builtin_files_inited(&metadata);
config
.policy
.insert("root-package".to_string(), audit_as_policy(Some(true)));
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-simple-audit-as-default-root-no-audit",
metadata,
store
);
}
#[test]
fn builtin_simple_audit_as_default_root() {
// (Pass) the root is audit-as-crates-io and only needs to be safe-to-run
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = builtin_files_inited(&metadata);
config
.policy
.insert("root-package".to_string(), audit_as_policy(Some(true)));
config.exemptions.insert(
"root-package".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-audit-as-default-root", metadata, store);
}
#[test]
fn builtin_simple_audit_as_default_root_too_weak() {
// (Fail) the root is audit-as-crates-io but is only safe-to-run
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = builtin_files_inited(&metadata);
config
.policy
.insert("root-package".to_string(), audit_as_policy(Some(true)));
config.exemptions.insert(
"root-package".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!(
"builtin-simple-audit-as-default-root-too-weak",
metadata,
store
);
}
#[test]
fn builtin_simple_audit_as_weaker_root() {
// (Pass) the root is audit-as-crates-io and only needs to be safe-to-run
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, audits, imports) = builtin_files_inited(&metadata);
config.policy.insert(
"root-package".to_string(),
audit_as_policy_with(Some(true), |policy| {
policy.criteria = Some(vec![SAFE_TO_RUN.to_string().into()]);
}),
);
config.exemptions.insert(
"root-package".to_string(),
vec![exemptions(ver(DEFAULT_VER), SAFE_TO_RUN)],
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin-simple-audit-as-weaker-root", metadata, store);
}
#[test]
fn builtin_simple_foreign_audited() {
// (Pass) All entries have direct full audits.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, mut imports) = builtin_files_full_audited(&metadata);
imports.audits.insert(FOREIGN.to_owned(), audits.clone());
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
..Default::default()
},
);
audits.audits.clear();
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin_simple_foreign_audited", metadata, store);
}
#[test]
fn mock_simple_foreign_audited_pun_no_mapping() {
// (Fail) All entries have direct full audits, but there isn't a mapping so the names don't match
// NOTE: it's possible this situation merits a "help" message"?
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let mut network = Network::new_mock();
network.mock_serve_toml(FOREIGN_URL, &audits);
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
..Default::default()
},
);
audits.audits.clear();
let store = Store::mock_online(
&mock_cfg(&metadata),
config,
audits,
imports,
&network,
true,
)
.unwrap();
assert_report_snapshot!(
"mock_simple_foreign_audited_pun_no_mapping",
metadata,
store
);
}
#[test]
fn mock_simple_foreign_audited_pun_mapped() {
// (Pass) All entries have direct full audits, and are mapped in
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
let mut network = Network::new_mock();
network.mock_serve_toml(FOREIGN_URL, &audits);
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
criteria_map: [(
DEFAULT_CRIT.to_owned().into(),
vec![DEFAULT_CRIT.to_owned().into()],
)]
.into_iter()
.collect(),
..Default::default()
},
);
audits.audits.clear();
let store = Store::mock_online(
&mock_cfg(&metadata),
config,
audits,
imports,
&network,
true,
)
.unwrap();
assert_report_snapshot!("mock_simple_foreign_audited_pun_mapped", metadata, store);
}
#[test]
fn mock_simple_foreign_audited_pun_wrong_mapped() {
// (Fail) All entries have direct full audits, and are mapped in... but from the wrong import
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, imports) = files_full_audited(&metadata);
// FOREIGN has the audits, but OTHER_FOREIGN has the mapping
let mut network = Network::new_mock();
network.mock_serve_toml(FOREIGN_URL, &audits);
audits.audits.clear();
network.mock_serve_toml(OTHER_FOREIGN_URL, &audits);
config.imports.insert(
OTHER_FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![OTHER_FOREIGN_URL.to_owned()],
criteria_map: [(
DEFAULT_CRIT.to_owned().into(),
vec![DEFAULT_CRIT.to_owned().into()],
)]
.into_iter()
.collect(),
..Default::default()
},
);
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
..Default::default()
},
);
let store = Store::mock_online(
&mock_cfg(&metadata),
config,
audits,
imports,
&network,
true,
)
.unwrap();
assert_report_snapshot!(
"mock_simple_foreign_audited_pun_wrong_mapped",
metadata,
store
);
}
#[test]
fn builtin_simple_foreign_tag_team() {
// (Pass) An audit is achieved by connecting a foreign builtin audit to a local one
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, mut imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"transitive-third-party1".to_owned(),
vec![full_audit(ver(5), SAFE_TO_DEPLOY)],
);
imports.audits.insert(
FOREIGN.to_owned(),
AuditsFile {
criteria: SortedMap::new(),
wildcard_audits: SortedMap::new(),
audits: [(
"transitive-third-party1".to_owned(),
vec![delta_audit(ver(5), ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
)]
.into_iter()
.collect(),
trusted: SortedMap::new(),
},
);
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
..Default::default()
},
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin_simple_foreign_tag_team", metadata, store);
}
#[test]
fn builtin_simple_mega_foreign_tag_team() {
// (Pass) An audit is achieved by connecting a two foreign imports together
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (mut config, mut audits, mut imports) = builtin_files_full_audited(&metadata);
audits.audits.insert(
"transitive-third-party1".to_owned(),
vec![full_audit(ver(3), SAFE_TO_DEPLOY)],
);
imports.audits.insert(
FOREIGN.to_owned(),
AuditsFile {
criteria: SortedMap::new(),
wildcard_audits: SortedMap::new(),
audits: [(
"transitive-third-party1".to_owned(),
vec![delta_audit(ver(3), ver(6), SAFE_TO_DEPLOY)],
)]
.into_iter()
.collect(),
trusted: SortedMap::new(),
},
);
config.imports.insert(
FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![FOREIGN_URL.to_owned()],
..Default::default()
},
);
imports.audits.insert(
OTHER_FOREIGN.to_owned(),
AuditsFile {
criteria: SortedMap::new(),
wildcard_audits: SortedMap::new(),
audits: [(
"transitive-third-party1".to_owned(),
vec![delta_audit(ver(6), ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
)]
.into_iter()
.collect(),
trusted: SortedMap::new(),
},
);
config.imports.insert(
OTHER_FOREIGN.to_owned(),
crate::format::RemoteImport {
url: vec![OTHER_FOREIGN_URL.to_owned()],
..Default::default()
},
);
let store = Store::mock(config, audits, imports);
assert_report_snapshot!("builtin_simple_mega_foreign_tag_team", metadata, store);
}
#[test]
fn builtin_simple_registry_suggestions() {
// (Pass) After a failing audit, registry suggestions may be proposed if run
// with network access.
let _enter = TEST_RUNTIME.enter();
let mock = MockMetadata::simple();
let metadata = mock.metadata();
let (config, audits, imports) = builtin_files_no_exemptions(&metadata);
let mut network = Network::new_mock();
network.mock_serve_toml(
crate::storage::REGISTRY_URL,
&RegistryFile {
registry: [
(
FOREIGN.to_owned(),
RegistryEntry {
url: vec![FOREIGN_URL.to_owned()],
},
),
(
OTHER_FOREIGN.to_owned(),
RegistryEntry {
url: vec![OTHER_FOREIGN_URL.to_owned()],
},
),
]
.into_iter()
.collect(),
},
);
network.mock_serve_toml(
FOREIGN_URL,
&AuditsFile {
criteria: SortedMap::new(),
wildcard_audits: SortedMap::new(),
audits: [
(
"third-party1".to_owned(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
),
(
"third-party2".to_owned(),
vec![delta_audit(ver(1), ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
),
]
.into_iter()
.collect(),
trusted: SortedMap::new(),
},
);
network.mock_serve_toml(
OTHER_FOREIGN_URL,
&AuditsFile {
criteria: SortedMap::new(),
wildcard_audits: SortedMap::new(),
audits: [
(
"transitive-third-party1".to_owned(),
vec![full_audit(ver(8), SAFE_TO_DEPLOY)],
),
(
"third-party2".to_owned(),
vec![full_audit(ver(DEFAULT_VER), SAFE_TO_DEPLOY)],
),
]
.into_iter()
.collect(),
trusted: SortedMap::new(),
},
);
let store = Store::mock_online(
&mock_cfg(&metadata),
config,
audits,
imports,
&network,
true,
)
.unwrap();
assert_report_snapshot!(
"builtin_simple_registry_suggestions",
metadata,
store,
Some(&network)
);
}