diff options
| author | Robin Krahl <robin.krahl@ireas.org> | 2019-12-29 12:51:28 +0100 | 
|---|---|---|
| committer | Robin Krahl <robin.krahl@ireas.org> | 2020-01-07 11:33:27 +0100 | 
| commit | c74b8b3ea8dc4fe7c6891ae120540f8da5623227 (patch) | |
| tree | 7c66308f30a2a6137339289a55e7ce52f73ae100 /tests | |
| parent | bcad061ed3e7777547c1b6fc9223dd65f752d94e (diff) | |
| download | nitrokey-rs-c74b8b3ea8dc4fe7c6891ae120540f8da5623227.tar.gz nitrokey-rs-c74b8b3ea8dc4fe7c6891ae120540f8da5623227.tar.bz2 | |
Add list_devices function
This patch adds support for libnitrokey’s NK_list_devices function by
introducing the top-level list_devices function.  It returns a vector of
DeviceInfo structs with information about all connected Nitrokey
devices.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/device.rs | 40 | 
1 files changed, 36 insertions, 4 deletions
| diff --git a/tests/device.rs b/tests/device.rs index e367558..5e60002 100644 --- a/tests/device.rs +++ b/tests/device.rs @@ -8,8 +8,8 @@ use std::process::Command;  use std::{thread, time};  use nitrokey::{ -    Authenticate, CommandError, CommunicationError, Config, ConfigureOtp, Device, Error, -    GenerateOtp, GetPasswordSafe, LibraryError, OtpMode, OtpSlotData, Storage, VolumeMode, +    Authenticate, CommandError, CommunicationError, Config, ConfigureOtp, Device, DeviceInfo, +    Error, GenerateOtp, GetPasswordSafe, LibraryError, OtpMode, OtpSlotData, Storage, VolumeMode,      DEFAULT_ADMIN_PIN, DEFAULT_USER_PIN,  };  use nitrokey_test::test as test_device; @@ -32,6 +32,33 @@ fn count_nitrokey_block_devices() -> usize {  }  #[test_device] +fn list_no_devices() { +    let devices = nitrokey::list_devices(); +    assert_ok!(Vec::<DeviceInfo>::new(), devices); +} + +#[test_device] +fn list_devices(_device: DeviceWrapper) { +    let devices = unwrap_ok!(nitrokey::list_devices()); +    for device in devices { +        assert!(!device.path.is_empty()); +        if let Some(model) = device.model { +            match model { +                nitrokey::Model::Pro => { +                    assert!(device.serial_number.is_some()); +                    let serial_number = device.serial_number.unwrap(); +                    assert!(!serial_number.is_empty()); +                    assert_valid_serial_number(&serial_number); +                }, +                nitrokey::Model::Storage => { +                    assert_eq!(None, device.serial_number); +                }, +            } +        } +    } +} + +#[test_device]  fn connect_no_device() {      let mut manager = unwrap_ok!(nitrokey::take()); @@ -83,12 +110,17 @@ fn disconnect(device: DeviceWrapper) {      assert_empty_serial_number();  } +fn assert_valid_serial_number(serial_number: &str) { +    assert!(serial_number.is_ascii()); +    assert!(serial_number.chars().all(|c| c.is_ascii_hexdigit())); +} +  #[test_device]  fn get_serial_number(device: DeviceWrapper) {      let serial_number = unwrap_ok!(device.get_serial_number()); -    assert!(serial_number.is_ascii()); -    assert!(serial_number.chars().all(|c| c.is_ascii_hexdigit())); +    assert_valid_serial_number(&serial_number);  } +  #[test_device]  fn get_firmware_version(device: Pro) {      let version = unwrap_ok!(device.get_firmware_version()); | 
