| 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); |
| } |