aboutsummaryrefslogtreecommitdiff
path: root/tests/device.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2019-12-29 12:51:28 +0100
committerRobin Krahl <robin.krahl@ireas.org>2020-01-07 11:33:27 +0100
commitc74b8b3ea8dc4fe7c6891ae120540f8da5623227 (patch)
tree7c66308f30a2a6137339289a55e7ce52f73ae100 /tests/device.rs
parentbcad061ed3e7777547c1b6fc9223dd65f752d94e (diff)
downloadnitrokey-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/device.rs')
-rw-r--r--tests/device.rs40
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());