use std::time::Duration;
use crate::keytypes::User;
use crate::KeyManager;
use super::utils;
#[test]
fn instantiate_invalid_key() {
let key = utils::invalid_key();
let manager = KeyManager::test_new(key);
let payload = &b"payload"[..];
let err = manager.instantiate(None, payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn reject_invalid_key() {
let key = utils::invalid_key();
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let errno = errno::Errno(libc::EKEYREJECTED);
let err = manager.reject(None, duration, errno).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn negate_invalid_key() {
let key = utils::invalid_key();
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let err = manager.negate(None, duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn instantiate_into_not_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("instantiate_into_not_key", payload)
.unwrap();
let mut not_a_keyring = utils::key_as_keyring(&key);
let manager = KeyManager::test_new(key);
let payload = &b"payload"[..];
let err = manager
.instantiate(&mut not_a_keyring, payload)
.unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn reject_into_not_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("reject_into_not_key", payload)
.unwrap();
let mut not_a_keyring = utils::key_as_keyring(&key);
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let errno = errno::Errno(libc::EKEYREJECTED);
let err = manager
.reject(&mut not_a_keyring, duration, errno)
.unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn negate_into_not_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("negate_into_not_key", payload)
.unwrap();
let mut not_a_keyring = utils::key_as_keyring(&key);
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let err = manager.negate(&mut not_a_keyring, duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn instantiate_already_instantiated() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("instantiate_already_instantiated", payload)
.unwrap();
let manager = KeyManager::test_new(key);
let err = manager.instantiate(None, payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn reject_already_instantiated() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("reject_already_instantiated", payload)
.unwrap();
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let errno = errno::Errno(libc::EKEYREJECTED);
let err = manager.reject(None, duration, errno).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn negate_already_instantiated() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("negate_already_instantiated", payload)
.unwrap();
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let err = manager.negate(None, duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn instantiate_unlinked_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("instantiate_unlinked_key", payload)
.unwrap();
keyring.unlink_key(&key).unwrap();
utils::wait_for_key_gc(&key);
let manager = KeyManager::test_new(key);
let err = manager.instantiate(None, payload).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn reject_unlinked_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("reject_unlinked_key", payload)
.unwrap();
keyring.unlink_key(&key).unwrap();
utils::wait_for_key_gc(&key);
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let errno = errno::Errno(libc::EKEYREJECTED);
let err = manager.reject(None, duration, errno).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}
#[test]
fn negate_unlinked_key() {
let mut keyring = utils::new_test_keyring();
let payload = &b"payload"[..];
let key = keyring
.add_key::<User, _, _>("negate_unlinked_key", payload)
.unwrap();
keyring.unlink_key(&key).unwrap();
utils::wait_for_key_gc(&key);
let manager = KeyManager::test_new(key);
let duration = Duration::from_secs(1);
let err = manager.negate(None, duration).unwrap_err();
assert_eq!(err, errno::Errno(libc::EPERM));
}