summaryrefslogtreecommitdiff
path: root/src/tests/device.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/device.rs')
-rw-r--r--src/tests/device.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/tests/device.rs b/src/tests/device.rs
index 68f1a39..7f7a819 100644
--- a/src/tests/device.rs
+++ b/src/tests/device.rs
@@ -1,10 +1,24 @@
use std::ffi::CStr;
+use std::process::Command;
+use std::{thread, time};
use tests::util::{Target, ADMIN_PASSWORD, USER_PASSWORD};
use {Authenticate, CommandError, CommandStatus, Config, Device};
static ADMIN_NEW_PASSWORD: &str = "1234567890";
static USER_NEW_PASSWORD: &str = "abcdefghij";
+fn count_nitrokey_block_devices() -> usize {
+ thread::sleep(time::Duration::from_secs(2));
+ let output = Command::new("lsblk")
+ .args(&["-o", "MODEL"])
+ .output()
+ .expect("Could not list block devices");
+ String::from_utf8_lossy(&output.stdout)
+ .split("\n")
+ .filter(|&s| s == "Nitrokey Storage")
+ .count()
+}
+
#[test]
#[cfg_attr(not(feature = "test-no-device"), ignore)]
fn connect_no_device() {
@@ -227,3 +241,39 @@ fn unlock_user_pin() {
);
device.authenticate_user(USER_PASSWORD).unwrap();
}
+
+#[test]
+#[cfg_attr(not(feature = "test-storage"), ignore)]
+fn encrypted_volume() {
+ let device = Target::connect().unwrap();
+ assert_eq!(CommandStatus::Success, device.lock());
+
+ assert_eq!(1, count_nitrokey_block_devices());
+ assert_eq!(CommandStatus::Success, device.disable_encrypted_volume());
+ assert_eq!(1, count_nitrokey_block_devices());
+ assert_eq!(
+ CommandStatus::Error(CommandError::WrongPassword),
+ device.enable_encrypted_volume("123")
+ );
+ assert_eq!(1, count_nitrokey_block_devices());
+ assert_eq!(
+ CommandStatus::Success,
+ device.enable_encrypted_volume(USER_PASSWORD)
+ );
+ assert_eq!(2, count_nitrokey_block_devices());
+ assert_eq!(CommandStatus::Success, device.disable_encrypted_volume());
+ assert_eq!(1, count_nitrokey_block_devices());
+}
+
+#[test]
+#[cfg_attr(not(feature = "test-storage"), ignore)]
+fn lock() {
+ let device = Target::connect().unwrap();
+
+ assert_eq!(
+ CommandStatus::Success,
+ device.enable_encrypted_volume(USER_PASSWORD)
+ );
+ assert_eq!(CommandStatus::Success, device.lock());
+ assert_eq!(1, count_nitrokey_block_devices());
+}