#[test] fn cli_run_offline_mode_executes_and_writes_json() { let db_dir = tempfile::tempdir().expect("db tempdir"); let repo_dir = tempfile::tempdir().expect("repo tempdir"); let out_dir = tempfile::tempdir().expect("out tempdir"); let report_path = out_dir.path().join("report.json"); let policy_path = out_dir.path().join("policy.toml"); std::fs::write(&policy_path, "sync_preference = \"rsync_only\"\n").expect("write policy"); let tal_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("tests/fixtures/tal/apnic-rfc7730-https.tal"); let ta_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("tests/fixtures/ta/apnic-ta.cer"); let argv = vec![ "rpki".to_string(), "--db".to_string(), db_dir.path().to_string_lossy().to_string(), "--policy".to_string(), policy_path.to_string_lossy().to_string(), "--tal-path".to_string(), tal_path.to_string_lossy().to_string(), "--ta-path".to_string(), ta_path.to_string_lossy().to_string(), "--rsync-local-dir".to_string(), repo_dir.path().to_string_lossy().to_string(), "--max-depth".to_string(), "0".to_string(), "--max-instances".to_string(), "1".to_string(), "--report-json".to_string(), report_path.to_string_lossy().to_string(), ]; rpki::cli::run(&argv).expect("cli run"); let bytes = std::fs::read(&report_path).expect("read report json"); let v: serde_json::Value = serde_json::from_slice(&bytes).expect("parse report json"); assert_eq!(v["format_version"], 1); }