roscal_lib 0.1.0

Open Security Controls Assessment Language In Rust
Documentation
use std::{
    fs::{read_dir, File},
    io::BufReader,
};

use roscal_lib::{
    assessment::{
        assessment_plan::AssessmentPlan, assessment_results::AssessmentResults,
        poam::PlanOfActionAndMilestones,
    },
    control::{catalog::Catalog, profile::Profile},
    implementation::{
        component_definition::ComponentDefinition, ssp::SystemSecurityPlan,
    },
};

#[test]
fn parse_json_ap() {
    for e in read_dir("tests/ap/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<AssessmentPlan, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_ap() {
    for e in read_dir("tests/ap/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<AssessmentPlan, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_ar() {
    for e in read_dir("tests/ar/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<AssessmentResults, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_ar() {
    for e in read_dir("tests/ar/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<AssessmentResults, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_catalog() {
    for e in read_dir("tests/catalog/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<Catalog, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_catalog() {
    for e in read_dir("tests/catalog/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<Catalog, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_component_def() {
    for e in read_dir("tests/component-definition/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<ComponentDefinition, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_component_def() {
    for e in read_dir("tests/component-definition/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<ComponentDefinition, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_poam() {
    for e in read_dir("tests/poam/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<PlanOfActionAndMilestones, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_poam() {
    for e in read_dir("tests/poam/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<PlanOfActionAndMilestones, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_profile() {
    for e in read_dir("tests/profile/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<Profile, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_profile() {
    for e in read_dir("tests/profile/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<Profile, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_json_ssp() {
    for e in read_dir("tests/ssp/json").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path).unwrap();
        let reader = BufReader::new(file);
        let res: Result<SystemSecurityPlan, serde_json::Error> =
            serde_json::from_reader(reader);
        assert_eq!(true, res.is_ok())
    }
}

#[test]
fn parse_yaml_ssp() {
    for e in read_dir("tests/ssp/yaml").unwrap() {
        let entry = e.unwrap();
        let path = entry.path();
        let file = File::open(path.clone()).unwrap();
        let reader = BufReader::new(file);
        let res: Result<SystemSecurityPlan, serde_yaml::Error> =
            serde_yaml::from_reader(reader);
        let a = res.map_err(|e| eprintln!("{}:::{}", e, path.display()));
        assert_eq!(true, a.is_ok())
    }
}