use nuts_memory::Settings;
use crate::header::plain_secret::tests::{rev0, rev1, rev2};
use crate::header::plain_secret::{PlainRev0, PlainRev1, PlainSecret};
#[test]
fn rev0_no_top_id() {
let mut plain_secret = PlainSecret::Rev0(PlainRev0 {
sid: Some(666),
..rev0()
});
assert!(plain_secret.convert_to_latest(666));
assert!(matches!(plain_secret, PlainSecret::Rev2(rev2)
if rev2.magics == 4711.into() &&
*rev2.key == [1, 2] &&
*rev2.iv == [3, 4, 5] &&
rev2.sid == Some(666) &&
rev2.top_id.is_none() &&
rev2.settings == Settings));
}
#[test]
fn rev0_top_id() {
let mut plain_secret = PlainSecret::Rev0(PlainRev0 {
sid: Some(666),
top_id: Some("4711".parse().unwrap()),
..rev0()
});
assert!(plain_secret.convert_to_latest(666));
assert!(matches!(plain_secret, PlainSecret::Rev2(rev2)
if rev2.magics == 4711.into() &&
*rev2.key == [1, 2] &&
*rev2.iv == [3, 4, 5] &&
rev2.sid == Some(666) &&
rev2.top_id.unwrap().to_string() == "4711" &&
rev2.settings == Settings));
}
#[test]
fn rev1_no_top_id() {
let mut plain_secret = PlainSecret::Rev1(PlainRev1 {
top_id: None,
..rev1()
});
assert!(plain_secret.convert_to_latest(666));
assert!(matches!(plain_secret, PlainSecret::Rev2(rev2)
if rev2.magics == 4711.into() &&
*rev2.key == [1, 2] &&
*rev2.iv == [3, 4, 5] &&
rev2.sid == Some(666) &&
rev2.top_id.is_none() &&
rev2.settings == Settings));
}
#[test]
fn rev1_top_id() {
let mut plain_secret = PlainSecret::Rev1(rev1());
assert!(plain_secret.convert_to_latest(666));
assert!(matches!(plain_secret, PlainSecret::Rev2(rev2)
if rev2.magics == 4711.into() &&
*rev2.key == [1, 2] &&
*rev2.iv == [3, 4, 5] &&
rev2.sid == Some(666) &&
rev2.top_id.unwrap().to_string() == "666" &&
rev2.settings == Settings));
}
#[test]
fn rev2_not_modified() {
let mut plain_secret = PlainSecret::Rev2(rev2(None, None));
assert!(!plain_secret.convert_to_latest(666));
assert!(matches!(plain_secret, PlainSecret::Rev2(data) if data == rev2(None, None)));
}