use crate::keytypes::User;
use super::utils;
#[test]
fn keyring() {
let keyring = utils::new_test_keyring();
let mut key = utils::keyring_as_key(&keyring);
let payload = &b"payload"[..];
let err = key.update::<User, _>(payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::EOPNOTSUPP));
}
#[test]
fn invalid_key() {
let mut key = utils::invalid_key();
let payload = &b"payload"[..];
let err = key.update::<User, _>(payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::EINVAL));
}
#[test]
fn unlinked_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let mut key = keyring
.add_key::<User, _, _>("unlinked_key", payload)
.unwrap();
keyring.unlink_key(&key).unwrap();
utils::wait_for_key_gc(&key);
let payload = &b"payload"[..];
let err = key.update::<User, _>(payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::ENOKEY));
}
#[test]
fn user_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let mut key = keyring.add_key::<User, _, _>("user_key", payload).unwrap();
let actual_payload = key.read().unwrap();
assert_eq!(payload, actual_payload.as_slice());
let payload = &b"updated_payload"[..];
key.update::<User, _>(payload).unwrap();
let actual_payload = key.read().unwrap();
assert_eq!(payload, actual_payload.as_slice());
}