From 37f7800766fe12af43d0cdba13aea9545cbe7755 Mon Sep 17 00:00:00 2001 From: Daniel Mueller Date: Sun, 20 Jan 2019 13:56:48 -0800 Subject: Add test for storage hidden subcommand This change adds a test for the creation, opening, and closing of a hidden subvolume. In order to support that in a non-interactive fashion, we introduce and honor the NITROCLI_PASSWORD environment variable, that prevents an interactive password query. --- nitrocli/src/tests/mod.rs | 4 ++++ nitrocli/src/tests/storage.rs | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'nitrocli/src/tests') diff --git a/nitrocli/src/tests/mod.rs b/nitrocli/src/tests/mod.rs index a3855f8..0337029 100644 --- a/nitrocli/src/tests/mod.rs +++ b/nitrocli/src/tests/mod.rs @@ -77,6 +77,7 @@ struct Nitrocli { user_pin: Option, new_admin_pin: Option, new_user_pin: Option, + password: Option, } impl Nitrocli { @@ -87,6 +88,7 @@ impl Nitrocli { user_pin: Some(NITROKEY_DEFAULT_USER_PIN.into()), new_admin_pin: None, new_user_pin: None, + password: None, } } @@ -100,6 +102,7 @@ impl Nitrocli { user_pin: Some(NITROKEY_DEFAULT_USER_PIN.into()), new_admin_pin: None, new_user_pin: None, + password: Some("1234567".into()), }; drop(device); @@ -143,6 +146,7 @@ impl Nitrocli { user_pin: self.user_pin.clone(), new_admin_pin: self.new_admin_pin.clone(), new_user_pin: self.new_user_pin.clone(), + password: self.password.clone(), }; (f(ctx, args), stdout, stderr) diff --git a/nitrocli/src/tests/storage.rs b/nitrocli/src/tests/storage.rs index d017f34..be933ca 100644 --- a/nitrocli/src/tests/storage.rs +++ b/nitrocli/src/tests/storage.rs @@ -91,3 +91,27 @@ fn encrypted_open_close(device: nitrokey::Storage) -> crate::Result<()> { Ok(()) } + +#[test_device] +fn hidden_create_open_close(device: nitrokey::Storage) -> crate::Result<()> { + let mut ncli = Nitrocli::with_dev(device); + let out = ncli.handle(&["storage", "hidden", "create", "0", "50", "100"])?; + assert!(out.is_empty()); + + let out = ncli.handle(&["storage", "hidden", "open"])?; + assert!(out.is_empty()); + + let device = nitrokey::Storage::connect()?; + assert!(!device.get_status()?.encrypted_volume.active); + assert!(device.get_status()?.hidden_volume.active); + drop(device); + + let out = ncli.handle(&["storage", "hidden", "close"])?; + assert!(out.is_empty()); + + let device = nitrokey::Storage::connect()?; + assert!(!device.get_status()?.encrypted_volume.active); + assert!(!device.get_status()?.hidden_volume.active); + + Ok(()) +} -- cgit v1.2.1