aboutsummaryrefslogtreecommitdiff
path: root/tests/device.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-14 16:15:40 +0100
committerRobin Krahl <robin.krahl@ireas.org>2020-01-14 16:53:52 +0100
commit2e543445c3059fa9decdbef718caf84696bb8786 (patch)
tree1e4af2a6a12e587d3c84756eeb592504ecc4c4f1 /tests/device.rs
parentf266ea63039c87886f871b068ef3dcdf851a1eca (diff)
downloadnitrokey-rs-2e543445c3059fa9decdbef718caf84696bb8786.tar.gz
nitrokey-rs-2e543445c3059fa9decdbef718caf84696bb8786.tar.bz2
Add the fill_sd_card function to Storage
This patch adds support for libnitrokey’s NK_fill_SD_card_with_random_data function. It is executed by the fill_sd_card function of the Storage struct. We also add a new test case that is set to ignore because it takes between 30 and 60 minutes to run.
Diffstat (limited to 'tests/device.rs')
-rw-r--r--tests/device.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/device.rs b/tests/device.rs
index 7296372..a88c956 100644
--- a/tests/device.rs
+++ b/tests/device.rs
@@ -653,6 +653,45 @@ fn get_operation_status(device: Storage) {
}
#[test_device]
+#[ignore]
+fn fill_sd_card(device: Storage) {
+ // This test takes up to 60 min to execute and is therefore ignored by default. Use `cargo
+ // test -- --ignored fill_sd_card` to run the test.
+
+ let mut device = device;
+ assert_ok!((), device.factory_reset(DEFAULT_ADMIN_PIN));
+ thread::sleep(time::Duration::from_secs(3));
+ assert_ok!((), device.build_aes_key(DEFAULT_ADMIN_PIN));
+
+ let status = unwrap_ok!(device.get_storage_status());
+ assert!(!status.filled_with_random);
+
+ assert_ok!((), device.fill_sd_card(DEFAULT_ADMIN_PIN));
+ assert_cmd_err!(CommandError::WrongCrc, device.get_status());
+
+ let mut status = OperationStatus::Ongoing(0);
+ let mut last_progress = 0u8;
+ while status != OperationStatus::Idle {
+ status = unwrap_ok!(device.get_operation_status());
+ if let OperationStatus::Ongoing(progress) = status {
+ assert!(progress <= 100, "progress = {}", progress);
+ assert!(
+ progress >= last_progress,
+ "progress = {}, last_progress = {}",
+ progress,
+ last_progress
+ );
+ last_progress = progress;
+
+ thread::sleep(time::Duration::from_secs(10));
+ }
+ }
+
+ let status = unwrap_ok!(device.get_storage_status());
+ assert!(status.filled_with_random);
+}
+
+#[test_device]
fn export_firmware(device: Storage) {
let mut device = device;
assert_cmd_err!(