use std::time::Duration;
use crate::keytypes::User;
use super::utils;
#[test]
fn invalid_key() {
let key = utils::invalid_key();
let err = key.revoke().unwrap_err();
assert_eq!(err, errno::Errno(libc::EINVAL));
}
#[test]
fn invalid_keyring() {
let keyring = utils::invalid_keyring();
let err = keyring.revoke().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 key = keyring
.add_key::<User, _, _>("unlinked_key", payload)
.unwrap();
keyring.unlink_key(&key).unwrap();
utils::wait_for_key_gc(&key);
let err = key.revoke().unwrap_err();
assert_eq!(err, errno::Errno(libc::ENOKEY));
}
#[test]
fn revoked_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("revoked_key", payload)
.unwrap();
let mut key_observer = key.clone();
key.revoke().unwrap();
let err = key_observer.description().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let err = key_observer.read().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let duration = Duration::from_secs(1);
let err = key_observer.set_timeout(duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let err = key_observer.invalidate().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
}
#[test]
fn revoked_keyring() {
let mut keyring = utils::new_test_keyring();
let new_keyring = keyring.add_keyring("revoked_keyring").unwrap();
let mut keyring_observer = new_keyring.clone();
new_keyring.revoke().unwrap();
let err = keyring_observer.read().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let err = keyring_observer.description().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let duration = Duration::from_secs(1);
let err = keyring_observer.set_timeout(duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
let err = keyring_observer.invalidate().unwrap_err();
assert_eq!(err, errno::Errno(libc::EKEYREVOKED));
}