use crate::cc_attestation;
use crate::cc_attestation::mock::MockAttestationProvider;
use crate::error::{Error, Result};
use serde_json::Value;
use tdx_workload_attestation::get_platform_name;
use tdx_workload_attestation::provider::AttestationProvider;
#[test]
fn test_mock_attestation() -> Result<()> {
let provider = MockAttestationProvider::new("test-platform");
let report = provider
.get_attestation_report()
.map_err(|e| Error::CCAttestationError(e.to_string()))?;
let report_json: Value = serde_json::from_str(&report)?;
assert_eq!(report_json["report_type"], "mock_attestation");
assert_eq!(report_json["platform"], "test-platform");
assert!(report_json["timestamp"].is_string());
assert_eq!(report_json["version"], "1.0");
assert_eq!(report_json["status"], "simulated");
assert_eq!(
report_json["message"],
"This is a mock attestation report for non-Linux or unsupported platforms"
);
Ok(())
}
#[test]
fn test_platform_selection() -> Result<()> {
let report = cc_attestation::get_report(false)?;
let report_json: Value = serde_json::from_str(&report)?;
let platform_name =
get_platform_name().map_err(|e| Error::CCAttestationError(e.to_string()))?;
if platform_name == "tdx-linux" {
assert_ne!(report_json["td_info"]["mrtd"].as_array(), None);
} else {
assert_eq!(report_json["report_type"], "mock_attestation");
}
Ok(())
}
#[test]
fn test_get_report_with_show() -> Result<()> {
let report = cc_attestation::get_report(true)?;
assert!(!report.is_empty());
Ok(())
}
#[test]
fn test_attestation_in_manifest() -> Result<()> {
use atlas_c2pa_lib::assertion::CustomAssertion;
use tempfile::tempdir;
let temp_dir = tempdir()?;
let file_path = temp_dir.path().join("test_file.txt");
std::fs::write(&file_path, b"test data")?;
let report = cc_attestation::get_report(false)?;
let assertion = CustomAssertion {
label: "test-platform".to_string(),
data: serde_json::Value::String(report),
};
assert_eq!(assertion.label, "test-platform");
assert!(assertion.data.is_string());
temp_dir.close()?;
Ok(())
}