blob: 1d4776986b9abe1b41ece1deb540c1eb5cdb6af1 [file] [log] [blame]
use insta::assert_snapshot;
use super::*;
fn mock_aggregate(sources: Vec<(String, AuditsFile)>) -> String {
match crate::do_aggregate_audits(sources) {
Ok(merged) => crate::serialization::to_formatted_toml(merged, None)
.unwrap()
.to_string(),
Err(error) => format!("{:?}", miette::Report::new(error)),
}
}
#[test]
fn test_merge_audits_files_basic() {
let _enter = TEST_RUNTIME.enter();
let audits_files = vec![
(
"https://source1.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [].into_iter().collect(),
wildcard_audits: [(
"package2".to_owned(),
vec![wildcard_audit(1, "safe-to-deploy")],
)]
.into_iter()
.collect(),
audits: [(
"package1".to_owned(),
vec![full_audit(ver(DEFAULT_VER), "safe-to-deploy")],
)]
.into_iter()
.collect(),
trusted: [].into_iter().collect(),
},
),
(
"https://source2.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [].into_iter().collect(),
wildcard_audits: [
(
"package2".to_owned(),
vec![wildcard_audit(2, "safe-to-deploy")],
),
(
"package3".to_owned(),
vec![wildcard_audit(1, "safe-to-deploy")],
),
]
.into_iter()
.collect(),
audits: [
(
"package1".to_owned(),
vec![
full_audit(ver(5), "safe-to-deploy"),
full_audit(ver(DEFAULT_VER), "safe-to-deploy"),
],
),
(
"package2".to_owned(),
vec![full_audit(ver(DEFAULT_VER), "safe-to-deploy")],
),
]
.into_iter()
.collect(),
trusted: [].into_iter().collect(),
},
),
];
let output = mock_aggregate(audits_files);
assert_snapshot!(output);
}
#[test]
fn test_merge_audits_files_custom_criteria() {
let _enter = TEST_RUNTIME.enter();
let audits_files = vec![
(
"https://source1.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [
(
"criteria1".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 1".to_owned()),
description_url: None,
aggregated_from: vec!["https://elsewhere.example.com/audits.toml"
.to_owned()
.into()],
},
),
(
"criteria2".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 2".to_owned()),
description_url: None,
aggregated_from: vec![],
},
),
]
.into_iter()
.collect(),
wildcard_audits: [].into_iter().collect(),
audits: [(
"package1".to_owned(),
vec![
full_audit(ver(DEFAULT_VER), "criteria1"),
full_audit(ver(DEFAULT_VER), "criteria2"),
],
)]
.into_iter()
.collect(),
trusted: [].into_iter().collect(),
},
),
(
"https://source2.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [
(
"criteria1".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 1".to_owned()),
description_url: None,
aggregated_from: vec!["https://beyond.example.com/audits.toml"
.to_owned()
.into()],
},
),
(
"criteria3".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 3".to_owned()),
description_url: None,
aggregated_from: vec![],
},
),
]
.into_iter()
.collect(),
wildcard_audits: [].into_iter().collect(),
audits: [
(
"package1".to_owned(),
vec![full_audit(ver(DEFAULT_VER), "criteria3")],
),
(
"package2".to_owned(),
vec![full_audit(ver(DEFAULT_VER), "criteria1")],
),
]
.into_iter()
.collect(),
trusted: [].into_iter().collect(),
},
),
];
let output = mock_aggregate(audits_files);
assert_snapshot!(output);
}
#[test]
fn test_merge_audits_files_custom_criteria_conflict() {
let _enter = TEST_RUNTIME.enter();
let audits_files = vec![
(
"https://source1.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [
(
"criteria1".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 1".to_owned()),
description_url: None,
aggregated_from: vec![],
},
),
(
"criteria2".to_owned(),
CriteriaEntry {
implies: vec!["criteria1".to_owned().into()],
description: Some("Criteria 2".to_owned()),
description_url: None,
aggregated_from: vec![],
},
),
(
"criteria3".to_owned(),
CriteriaEntry {
implies: vec!["criteria2".to_owned().into()],
description: None,
description_url: Some("https://criteria3".to_owned()),
aggregated_from: vec![],
},
),
]
.into_iter()
.collect(),
wildcard_audits: [].into_iter().collect(),
audits: [].into_iter().collect(),
trusted: [].into_iter().collect(),
},
),
(
"https://source2.example.com/supply_chain/audits.toml".to_owned(),
AuditsFile {
criteria: [
(
"criteria1".to_owned(),
CriteriaEntry {
implies: vec![],
description: Some("Criteria 1 (alt)".to_owned()),
description_url: None,
aggregated_from: vec![],
},
),
(
"criteria2".to_owned(),
CriteriaEntry {
implies: vec!["criteria1".to_owned().into()],
description: None,
description_url: Some("https://criteria2".to_owned()),
aggregated_from: vec![],
},
),
(
"criteria3".to_owned(),
CriteriaEntry {
implies: vec!["criteria1".to_owned().into()],
description: None,
description_url: Some("https://criteria3.alt".to_owned()),
aggregated_from: vec![],
},
),
]
.into_iter()
.collect(),
wildcard_audits: [].into_iter().collect(),
audits: [].into_iter().collect(),
trusted: [].into_iter().collect(),
},
),
];
let output = mock_aggregate(audits_files);
assert_snapshot!(output);
}