blob: f4c761eb5ff65c921413b5d22338a15453d94328 [file] [log] [blame]
#![cfg(feature = "git")]
use cargo_lock::Lockfile;
use once_cell::sync::Lazy;
use rustsec::{database::Query, repository::git::Repository, Database};
use std::{path::Path, sync::Mutex};
static DEFAULT_DATABASE: Lazy<Mutex<Database>> = Lazy::new(|| {
Mutex::new(
Database::load_from_repo(&Repository::fetch_default_repo().unwrap())
.expect("Should be fetchable."),
)
});
#[test]
fn enumerate_vulnerabilities() {
let lockfile_path = Path::new("./tests/support/cratesio_cargo.lock");
let lockfile =
Lockfile::load(lockfile_path).expect("Should find the lock file in support folder.");
let db = DEFAULT_DATABASE.lock().unwrap();
let vuln = db.vulnerabilities(&lockfile);
assert_eq!(vuln.len(), 1);
}
#[test]
fn query_vulnerabilitie() {
let lockfile_path = Path::new("./tests/support/cratesio_cargo.lock");
let lockfile =
Lockfile::load(lockfile_path).expect("Should find the lock file in support folder.");
let db = DEFAULT_DATABASE.lock().unwrap();
let vuln_all = db.query_vulnerabilities(&lockfile, &Query::crate_scope());
let vuln = db.vulnerabilities(&lockfile);
assert_eq!(vuln_all, vuln);
}