use serde_json::Value;
pub(crate) fn fixtures() -> Value {
let raw = include_str!("testdata/eddsa.json");
serde_json::from_str(raw).expect("valid eddsa.json fixture")
}
#[cfg(test)]
mod tests {
use super::super::key::Key;
use super::fixtures;
#[test]
fn go_keys_load_and_round_trip() {
let f = fixtures();
let keys: Vec<Key> = f["signing_keys"]
.as_array()
.unwrap()
.iter()
.map(|v| serde_json::from_value(v.clone()).expect("load Go eddsatss key"))
.collect();
assert_eq!(keys.len(), 2);
for k in &keys {
k.validate_basic().unwrap();
assert_eq!(k.ks.len(), 2);
assert_eq!(k.eddsa_pub.curve, "ed25519");
}
assert_eq!(keys[0].eddsa_pub.coords, keys[1].eddsa_pub.coords);
let json = keys[0].to_json().unwrap();
let k2 = Key::from_json(&json).unwrap();
assert_eq!(k2.xi, keys[0].xi);
assert_eq!(k2.ks, keys[0].ks);
assert_eq!(k2.big_xj[1].coords, keys[0].big_xj[1].coords);
assert!(keys[0].eddsa_pub_point().is_some());
}
}