tests: Add Request trait and reply types

This commit is contained in:
Robin Krahl
2024-05-22 22:55:32 +02:00
parent aad05b9573
commit efed1896bc
3 changed files with 82 additions and 33 deletions
+11 -19
View File
@@ -3,13 +3,8 @@
mod virt;
mod webauthn;
use std::collections::BTreeMap;
use ciborium::Value;
use ctap_types::ctap2::Operation;
use virt::Ctap2Error;
use webauthn::{MakeCredentialRequest, PubKeyCredParam, Rp, User};
use webauthn::{GetInfo, MakeCredential, PubKeyCredParam, Rp, User};
#[test]
fn test_ping() {
@@ -21,10 +16,9 @@ fn test_ping() {
#[test]
fn test_get_info() {
virt::run_ctap2(|device| {
let reply: BTreeMap<u8, Value> = device.call(Operation::GetInfo, &Value::Null).unwrap();
let versions: Vec<String> = reply.get(&1).unwrap().deserialized().unwrap();
assert!(versions.contains(&"FIDO_2_0".to_owned()));
assert!(versions.contains(&"FIDO_2_1".to_owned()));
let reply = device.exec(GetInfo).unwrap();
assert!(reply.versions.contains(&"FIDO_2_0".to_owned()));
assert!(reply.versions.contains(&"FIDO_2_1".to_owned()));
});
}
@@ -36,13 +30,11 @@ fn test_make_credential() {
.name("john.doe")
.display_name("John Doe");
let pub_key_cred_params = vec![PubKeyCredParam::new("public-key", -7)];
let request = MakeCredentialRequest::new(b"", rp, user, pub_key_cred_params);
let reply: BTreeMap<u8, Value> = device
.call(Operation::MakeCredential, &request.into())
.unwrap();
assert_eq!(reply.get(&1).unwrap(), &Value::from("packed"));
assert!(reply.contains_key(&2));
assert!(reply.contains_key(&3));
let request = MakeCredential::new(b"", rp, user, pub_key_cred_params);
let reply = device.exec(request).unwrap();
assert_eq!(reply.fmt, "packed");
assert!(reply.auth_data.is_bytes());
assert!(reply.att_stmt.is_map());
});
}
@@ -54,8 +46,8 @@ fn test_make_credential_invalid_params() {
.name("john.doe")
.display_name("John Doe");
let pub_key_cred_params = vec![PubKeyCredParam::new("public-key", -11)];
let request = MakeCredentialRequest::new(b"", rp, user, pub_key_cred_params);
let result = device.call::<Value>(Operation::MakeCredential, &request.into());
let request = MakeCredential::new(b"", rp, user, pub_key_cred_params);
let result = device.exec(request);
assert_eq!(result, Err(Ctap2Error(0x26)));
});
}