aboutsummaryrefslogtreecommitdiff
path: root/nitrocli
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-01-14 16:04:21 -0800
committerDaniel Mueller <deso@posteo.net>2019-01-14 16:04:21 -0800
commitd6652b913b33e432a748187f9f5623cec1e9926e (patch)
tree34c725f70797b13009398542670ce106f386a6a5 /nitrocli
parent3399c44a72fa52113d3935c2040765a9d5e42f2c (diff)
downloadnitrocli-d6652b913b33e432a748187f9f5623cec1e9926e.tar.gz
nitrocli-d6652b913b33e432a748187f9f5623cec1e9926e.tar.bz2
Add tests for config command
This change adds a set of tests for the config get and set commands. We cover chosen valid parameter combinations and verify that they work as expected as well as an invalid one.
Diffstat (limited to 'nitrocli')
-rw-r--r--nitrocli/src/tests/config.rs66
-rw-r--r--nitrocli/src/tests/mod.rs1
2 files changed, 67 insertions, 0 deletions
diff --git a/nitrocli/src/tests/config.rs b/nitrocli/src/tests/config.rs
new file mode 100644
index 0000000..8983cb8
--- /dev/null
+++ b/nitrocli/src/tests/config.rs
@@ -0,0 +1,66 @@
+// config.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 get(device: nitrokey::DeviceWrapper) -> crate::Result<()> {
+ let re = regex::Regex::new(
+ r#"^Config:
+ numlock binding: (not set|\d+)
+ capslock binding: (not set|\d+)
+ scrollock binding: (not set|\d+)
+ require user PIN for OTP: (true|false)
+$"#,
+ )
+ .unwrap();
+
+ let out = Nitrocli::with_dev(device).handle(&["config", "get"])?;
+ assert!(re.is_match(&out), out);
+ Ok(())
+}
+
+#[test_device]
+fn set_wrong_usage(device: nitrokey::DeviceWrapper) {
+ let res = Nitrocli::with_dev(device).handle(&["config", "set", "--numlock", "2", "-N"]);
+ assert_eq!(
+ res.unwrap_str_err(),
+ "--numlock and --no-numlock are mutually exclusive"
+ );
+}
+
+#[test_device]
+fn set_get(device: nitrokey::DeviceWrapper) -> crate::Result<()> {
+ let mut ncli = Nitrocli::with_dev(device);
+ let _ = ncli.handle(&["config", "set", "-s", "1", "-c", "0", "-N"])?;
+
+ let re = regex::Regex::new(
+ r#"^Config:
+ numlock binding: not set
+ capslock binding: 0
+ scrollock binding: 1
+ require user PIN for OTP: (true|false)
+$"#,
+ )
+ .unwrap();
+
+ let out = ncli.handle(&["config", "get"])?;
+ assert!(re.is_match(&out), out);
+ Ok(())
+}
diff --git a/nitrocli/src/tests/mod.rs b/nitrocli/src/tests/mod.rs
index 4a4ab09..5c73f51 100644
--- a/nitrocli/src/tests/mod.rs
+++ b/nitrocli/src/tests/mod.rs
@@ -36,6 +36,7 @@ const NITROKEY_DEFAULT_USER_PIN: &str = "123456";
#[test_device]
fn dummy() {}
+mod config;
mod otp;
mod pin;
mod run;