aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/tests/mod.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-01-09 13:41:53 -0800
committerDaniel Mueller <deso@posteo.net>2019-01-09 13:41:53 -0800
commit4842ac86c0a805c5c4a679644594252ca5ea388b (patch)
treed49fcace411df5361f7c9fd6880629e7bec0a1d3 /nitrocli/src/tests/mod.rs
parent749a5c78c2075c5d37b01ec4fd23704aa5cfdf09 (diff)
downloadnitrocli-4842ac86c0a805c5c4a679644594252ca5ea388b.tar.gz
nitrocli-4842ac86c0a805c5c4a679644594252ca5ea388b.tar.bz2
Introduce Admin and User PIN fields to execution context
In order to run tests fully non-interactively we need to avoid the need for using the GPG agent's PIN entry and caching mechanism. To accomplish that, we first need an alternate way to supply the PINs to use to the program. This change offers such a way by extending the execution context with two fields representing the PINs that are populated by corresponding environment variables, NITROCLI_ADMIN_PIN & NITROCLI_USER_PIN, if set. While only two PINs are required right now, because the program allows for the changing of each of the PINs, we also add two fields representing new PINs. These latter two fields are populated by the NITROCLI_NEW_ADMIN_PIN and NITROCLI_NEW_USER_PIN environment variables.
Diffstat (limited to 'nitrocli/src/tests/mod.rs')
-rw-r--r--nitrocli/src/tests/mod.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/nitrocli/src/tests/mod.rs b/nitrocli/src/tests/mod.rs
index c7ff222..4e25091 100644
--- a/nitrocli/src/tests/mod.rs
+++ b/nitrocli/src/tests/mod.rs
@@ -17,10 +17,16 @@
// * along with this program. If not, see <http://www.gnu.org/licenses/>. *
// *************************************************************************
+use std::ffi;
use std::fmt;
use nitrokey_test::test as test_device;
+// TODO: Those defines should potentially be taken from the `nitrokey`
+// crate, once exported.
+const NITROKEY_DEFAULT_ADMIN_PIN: &str = "12345678";
+const NITROKEY_DEFAULT_USER_PIN: &str = "123456";
+
// TODO: This is a hack to make the nitrokey-test crate work across
// module boundaries. Upon first use of the nitrokey_test::test
// macro a new function, __nitrokey_mutex, will be emitted, but it
@@ -53,11 +59,21 @@ where
struct Nitrocli {
model: Option<nitrokey::Model>,
+ admin_pin: Option<ffi::OsString>,
+ user_pin: Option<ffi::OsString>,
+ new_admin_pin: Option<ffi::OsString>,
+ new_user_pin: Option<ffi::OsString>,
}
impl Nitrocli {
pub fn new() -> Self {
- Self { model: None }
+ Self {
+ model: None,
+ admin_pin: Some(NITROKEY_DEFAULT_ADMIN_PIN.into()),
+ user_pin: Some(NITROKEY_DEFAULT_USER_PIN.into()),
+ new_admin_pin: None,
+ new_user_pin: None,
+ }
}
pub fn with_dev<D>(device: D) -> Self
@@ -66,6 +82,10 @@ impl Nitrocli {
{
let result = Self {
model: Some(device.get_model()),
+ admin_pin: Some(NITROKEY_DEFAULT_ADMIN_PIN.into()),
+ user_pin: Some(NITROKEY_DEFAULT_USER_PIN.into()),
+ new_admin_pin: None,
+ new_user_pin: None,
};
drop(device);
@@ -97,6 +117,10 @@ impl Nitrocli {
let ctx = &mut crate::RunCtx {
stdout: &mut stdout,
stderr: &mut stderr,
+ admin_pin: self.admin_pin.clone(),
+ user_pin: self.user_pin.clone(),
+ new_admin_pin: self.new_admin_pin.clone(),
+ new_user_pin: self.new_user_pin.clone(),
};
(f(ctx, args), stdout, stderr)