aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/tests/encrypted.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-05-27 09:30:46 -0700
committerDaniel Mueller <deso@posteo.net>2019-05-27 09:30:46 -0700
commite6d89a69521db96e27d65d8284acfa81f0ff4b2d (patch)
tree7ee5e07c1ff46781db98cffe0adde603ec02b70c /nitrocli/src/tests/encrypted.rs
parenta00e3f75349dc5f48abf441fd4e5c369c2e2055a (diff)
downloadnitrocli-e6d89a69521db96e27d65d8284acfa81f0ff4b2d.tar.gz
nitrocli-e6d89a69521db96e27d65d8284acfa81f0ff4b2d.tar.bz2
Rename storage command to encrypted
This change is the last step in the process of restructuring the storage command. In particular, now that functionality pertaining hidden volumes has been moved out into a dedicated top-level command, it renames said command to encrypted, because dealing with the encrypted volume is the only functionality it provides.
Diffstat (limited to 'nitrocli/src/tests/encrypted.rs')
-rw-r--r--nitrocli/src/tests/encrypted.rs90
1 files changed, 90 insertions, 0 deletions
diff --git a/nitrocli/src/tests/encrypted.rs b/nitrocli/src/tests/encrypted.rs
new file mode 100644
index 0000000..8aef864
--- /dev/null
+++ b/nitrocli/src/tests/encrypted.rs
@@ -0,0 +1,90 @@
+// encrypted.rs
+
+// *************************************************************************
+// * Copyright (C) 2019 Daniel Mueller (deso@posteo.net) *
+// * *
+// * This program is free software: you can redistribute it and/or modify *
+// * it under the terms of the GNU General Public License as published by *
+// * the Free Software Foundation, either version 3 of the License, or *
+// * (at your option) any later version. *
+// * *
+// * This program is distributed in the hope that it will be useful, *
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+// * GNU General Public License for more details. *
+// * *
+// * You should have received a copy of the GNU General Public License *
+// * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+// *************************************************************************
+
+use super::*;
+
+#[test_device]
+fn status_open_close(device: nitrokey::Storage) -> crate::Result<()> {
+ fn make_re(open: Option<bool>) -> regex::Regex {
+ let encrypted = match open {
+ Some(open) => {
+ if open {
+ "active"
+ } else {
+ "(read-only|inactive)"
+ }
+ }
+ None => "(read-only|active|inactive)",
+ };
+ let re = format!(
+ r#"
+ volumes:
+ unencrypted: (read-only|active|inactive)
+ encrypted: {}
+ hidden: (read-only|active|inactive)
+$"#,
+ encrypted
+ );
+ regex::Regex::new(&re).unwrap()
+ }
+
+ let mut ncli = Nitrocli::with_dev(device);
+ let out = ncli.handle(&["status"])?;
+ assert!(make_re(None).is_match(&out), out);
+
+ let _ = ncli.handle(&["encrypted", "open"])?;
+ let out = ncli.handle(&["status"])?;
+ assert!(make_re(Some(true)).is_match(&out), out);
+
+ let _ = ncli.handle(&["encrypted", "close"])?;
+ let out = ncli.handle(&["status"])?;
+ assert!(make_re(Some(false)).is_match(&out), out);
+
+ Ok(())
+}
+
+#[test_device]
+fn encrypted_open_on_pro(device: nitrokey::Pro) {
+ let res = Nitrocli::with_dev(device).handle(&["encrypted", "open"]);
+ assert_eq!(
+ res.unwrap_str_err(),
+ "This command is only available on the Nitrokey Storage",
+ );
+}
+
+#[test_device]
+fn encrypted_open_close(device: nitrokey::Storage) -> crate::Result<()> {
+ let mut ncli = Nitrocli::with_dev(device);
+ let out = ncli.handle(&["encrypted", "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(&["encrypted", "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(())
+}