selfware 0.6.3

Your personal AI workshop — software you own, software that lasts
Documentation
use super::*;

#[test]
fn test_security_severity_ordering() {
    assert!(SecuritySeverity::Critical > SecuritySeverity::High);
    assert!(SecuritySeverity::High > SecuritySeverity::Medium);
    assert!(SecuritySeverity::Medium > SecuritySeverity::Low);
    assert!(SecuritySeverity::Low > SecuritySeverity::Info);
}

#[test]
fn test_security_severity_scores() {
    assert_eq!(SecuritySeverity::Info.score(), 0.0);
    assert_eq!(SecuritySeverity::Low.score(), 3.0);
    assert_eq!(SecuritySeverity::Medium.score(), 5.5);
    assert_eq!(SecuritySeverity::High.score(), 7.5);
    assert_eq!(SecuritySeverity::Critical.score(), 9.5);
}

#[test]
fn test_security_severity_as_str() {
    assert_eq!(SecuritySeverity::Info.as_str(), "info");
    assert_eq!(SecuritySeverity::Low.as_str(), "low");
    assert_eq!(SecuritySeverity::Medium.as_str(), "medium");
    assert_eq!(SecuritySeverity::High.as_str(), "high");
    assert_eq!(SecuritySeverity::Critical.as_str(), "critical");
}

#[test]
fn test_security_category_as_str() {
    assert_eq!(
        SecurityCategory::HardcodedSecret.as_str(),
        "hardcoded_secret"
    );
    assert_eq!(SecurityCategory::Injection.as_str(), "injection");
    assert_eq!(SecurityCategory::Authentication.as_str(), "authentication");
    assert_eq!(SecurityCategory::Authorization.as_str(), "authorization");
    assert_eq!(SecurityCategory::DataExposure.as_str(), "data_exposure");
    assert_eq!(SecurityCategory::Cryptography.as_str(), "cryptography");
    assert_eq!(SecurityCategory::Configuration.as_str(), "configuration");
    assert_eq!(SecurityCategory::Dependency.as_str(), "dependency");
    assert_eq!(SecurityCategory::Compliance.as_str(), "compliance");
    assert_eq!(SecurityCategory::CodeQuality.as_str(), "code_quality");
    assert_eq!(
        SecurityCategory::Custom("custom_cat".to_string()).as_str(),
        "custom_cat"
    );
}

#[test]
fn test_execution_mode_default() {
    let default: ExecutionMode = Default::default();
    assert_eq!(default, ExecutionMode::Normal);
}

#[test]
fn test_risk_level_variants() {
    let low = RiskLevel::Low;
    let medium = RiskLevel::Medium;
    let high = RiskLevel::High;

    assert!(matches!(low, RiskLevel::Low));
    assert!(matches!(medium, RiskLevel::Medium));
    assert!(matches!(high, RiskLevel::High));
}

#[test]
fn test_risk_level_as_str() {
    assert_eq!(RiskLevel::Low.as_str(), "low");
    assert_eq!(RiskLevel::Medium.as_str(), "medium");
    assert_eq!(RiskLevel::High.as_str(), "high");
}

#[test]
fn test_permission_result_variants() {
    let allow = PermissionResult::Allow;
    let deny = PermissionResult::Deny {
        reason: "test".to_string(),
    };
    let prompt = PermissionResult::Prompt {
        reason: "confirm".to_string(),
    };

    assert!(matches!(allow, PermissionResult::Allow));
    assert!(matches!(deny, PermissionResult::Deny { .. }));
    assert!(matches!(prompt, PermissionResult::Prompt { .. }));
}