diff options
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/device.rs | 50 | 
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()); +} | 
