use super::vulnerability_view::SeverityView;
#[allow(dead_code)]
#[derive(Debug, Clone, Default)]
pub struct ResolutionGuideView {
pub entries: Vec<ResolutionEntryView>,
}
#[allow(dead_code)]
#[derive(Debug, Clone)]
pub struct ResolutionEntryView {
pub vulnerable_package: String,
pub current_version: String,
pub fixed_version: Option<String>,
pub severity: SeverityView,
pub vulnerability_id: String,
pub introduced_by: Vec<IntroducedByView>,
}
#[allow(dead_code)]
#[derive(Debug, Clone)]
pub struct IntroducedByView {
pub package_name: String,
pub version: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_resolution_guide_view_default() {
let view = ResolutionGuideView::default();
assert!(view.entries.is_empty());
}
#[test]
fn test_resolution_entry_view_creation() {
let entry = ResolutionEntryView {
vulnerable_package: "urllib3".to_string(),
current_version: "1.26.5".to_string(),
fixed_version: Some("1.26.18".to_string()),
severity: SeverityView::High,
vulnerability_id: "CVE-2023-43804".to_string(),
introduced_by: vec![IntroducedByView {
package_name: "requests".to_string(),
version: "2.28.0".to_string(),
}],
};
assert_eq!(entry.vulnerable_package, "urllib3");
assert_eq!(entry.current_version, "1.26.5");
assert_eq!(entry.fixed_version, Some("1.26.18".to_string()));
assert_eq!(entry.severity, SeverityView::High);
assert_eq!(entry.vulnerability_id, "CVE-2023-43804");
assert_eq!(entry.introduced_by.len(), 1);
assert_eq!(entry.introduced_by[0].package_name, "requests");
assert_eq!(entry.introduced_by[0].version, "2.28.0");
}
#[test]
fn test_resolution_entry_view_without_fixed_version() {
let entry = ResolutionEntryView {
vulnerable_package: "some-pkg".to_string(),
current_version: "0.1.0".to_string(),
fixed_version: None,
severity: SeverityView::Critical,
vulnerability_id: "CVE-2024-0001".to_string(),
introduced_by: vec![],
};
assert_eq!(entry.fixed_version, None);
assert_eq!(entry.severity, SeverityView::Critical);
assert!(entry.introduced_by.is_empty());
}
#[test]
fn test_introduced_by_view_creation() {
let view = IntroducedByView {
package_name: "requests".to_string(),
version: "2.28.0".to_string(),
};
assert_eq!(view.package_name, "requests");
assert_eq!(view.version, "2.28.0");
}
}