diff options
| author | Robin Krahl <robin.krahl@ireas.org> | 2019-07-09 08:09:02 +0000 | 
|---|---|---|
| committer | Robin Krahl <robin.krahl@ireas.org> | 2019-07-09 08:27:55 +0000 | 
| commit | 12fa62483cf45d868099d5d4020333af492eebde (patch) | |
| tree | 2ad466dbfeafb21365a3625f0beb8e2c6c392b2f /tests | |
| parent | fe2f39826ade5a156945dabb8c8ab725378a15c1 (diff) | |
| download | nitrokey-rs-12fa62483cf45d868099d5d4020333af492eebde.tar.gz nitrokey-rs-12fa62483cf45d868099d5d4020333af492eebde.tar.bz2 | |
Introduce into_manager for Device
To enable applications like nitrokey-test to go back to a manager
instance from a Device instance, we add the into_manager function to the
Device trait.  To do that, we have to keep track of the Manager’s
lifetime by adding a lifetime to Device (and then to some other traits
that use Device).
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/device.rs | 16 | ||||
| -rw-r--r-- | tests/otp.rs | 4 | ||||
| -rw-r--r-- | tests/pws.rs | 4 | 
3 files changed, 15 insertions, 9 deletions
| diff --git a/tests/device.rs b/tests/device.rs index b377f2e..76f38e6 100644 --- a/tests/device.rs +++ b/tests/device.rs @@ -101,7 +101,10 @@ fn get_firmware_version(device: Pro) {      assert!(version.minor > 0);  } -fn admin_retry<T: Authenticate + Device>(device: T, suffix: &str, count: u8) -> T { +fn admin_retry<'a, T>(device: T, suffix: &str, count: u8) -> T +where +    T: Authenticate<'a> + Device<'a> + 'a, +{      let result = device.authenticate_admin(&(DEFAULT_ADMIN_PIN.to_owned() + suffix));      let device = match result {          Ok(admin) => admin.device(), @@ -111,7 +114,10 @@ fn admin_retry<T: Authenticate + Device>(device: T, suffix: &str, count: u8) ->      return device;  } -fn user_retry<T: Authenticate + Device>(device: T, suffix: &str, count: u8) -> T { +fn user_retry<'a, T>(device: T, suffix: &str, count: u8) -> T +where +    T: Authenticate<'a> + Device<'a> + 'a, +{      let result = device.authenticate_user(&(DEFAULT_USER_PIN.to_owned() + suffix));      let device = match result {          Ok(admin) => admin.device(), @@ -220,10 +226,10 @@ fn change_admin_pin(device: DeviceWrapper) {      device.authenticate_admin(ADMIN_NEW_PASSWORD).unwrap_err();  } -fn require_failed_user_login<D>(device: D, password: &str, error: CommandError) -> D +fn require_failed_user_login<'a, D>(device: D, password: &str, error: CommandError) -> D  where -    D: Device + Authenticate, -    nitrokey::User<D>: std::fmt::Debug, +    D: Device<'a> + Authenticate<'a> + 'a, +    nitrokey::User<'a, D>: std::fmt::Debug,  {      let result = device.authenticate_user(password);      assert!(result.is_err()); diff --git a/tests/otp.rs b/tests/otp.rs index c0bbecf..aafda59 100644 --- a/tests/otp.rs +++ b/tests/otp.rs @@ -36,9 +36,9 @@ enum TotpTimestampSize {      U64,  } -fn make_admin_test_device<T>(device: T) -> Admin<T> +fn make_admin_test_device<'a, T>(device: T) -> Admin<'a, T>  where -    T: Device, +    T: Device<'a>,      (T, nitrokey::Error): Debug,  {      unwrap_ok!(device.authenticate_admin(DEFAULT_ADMIN_PIN)) diff --git a/tests/pws.rs b/tests/pws.rs index b0e5abe..7169695 100644 --- a/tests/pws.rs +++ b/tests/pws.rs @@ -32,9 +32,9 @@ fn get_slot_name_direct(slot: u8) -> Result<String, Error> {      }  } -fn get_pws<T>(device: &mut T) -> PasswordSafe +fn get_pws<'a, T>(device: &mut T) -> PasswordSafe<'_, 'a>  where -    T: Device, +    T: Device<'a>,  {      unwrap_ok!(device.get_password_safe(DEFAULT_USER_PIN))  } | 
