diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2018-05-30 10:08:26 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2018-05-30 12:09:02 +0200 |
commit | c37899dfee9057497f6622149e3b06ae8def55d5 (patch) | |
tree | 8b19af544ed4df041d978db54fa102ab428331e7 | |
parent | 41dfe16047cd9f1a2accaacc3eff4c7e672f1e0d (diff) | |
download | nitrokey-rs-c37899dfee9057497f6622149e3b06ae8def55d5.tar.gz nitrokey-rs-c37899dfee9057497f6622149e3b06ae8def55d5.tar.bz2 |
Add test case for writing the HOTP counter
-rw-r--r-- | src/tests/otp.rs | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/tests/otp.rs b/src/tests/otp.rs index 077157f..de3b646 100644 --- a/src/tests/otp.rs +++ b/src/tests/otp.rs @@ -28,16 +28,18 @@ fn get_admin_test_device() -> Admin<Target> { .expect("Could not login as admin.") } -fn configure_hotp(admin: &ConfigureOtp) { +fn configure_hotp(admin: &ConfigureOtp, counter: u8) { let slot_data = OtpSlotData::new(1, "test-hotp", HOTP_SECRET, OtpMode::SixDigits); - assert_eq!(CommandStatus::Success, admin.write_hotp_slot(slot_data, 0)); + assert_eq!(CommandStatus::Success, admin.write_hotp_slot(slot_data, counter.into())); } -fn check_hotp_codes(device: &GenerateOtp) { - for code in HOTP_CODES { - let result = device.get_hotp_code(1); - assert_eq!(code, &result.unwrap()); - } +fn check_hotp_codes(device: &GenerateOtp, offset: u8) { + HOTP_CODES.iter().enumerate().for_each(|(i, code)| { + if i >= offset as usize { + let result = device.get_hotp_code(1); + assert_eq!(code, &result.unwrap()); + } + }); } #[test] @@ -47,11 +49,14 @@ fn hotp_no_pin() { let config = Config::new(None, None, None, false); assert_eq!(CommandStatus::Success, admin.write_config(config)); - configure_hotp(&admin); - check_hotp_codes(admin.deref()); + configure_hotp(&admin, 0); + check_hotp_codes(admin.deref(), 0); + + configure_hotp(&admin, 5); + check_hotp_codes(admin.deref(), 5); - configure_hotp(&admin); - check_hotp_codes(&admin.device()); + configure_hotp(&admin, 0); + check_hotp_codes(&admin.device(), 0); } #[test] @@ -61,9 +66,9 @@ fn hotp_pin() { let config = Config::new(None, None, None, true); assert_eq!(CommandStatus::Success, admin.write_config(config)); - configure_hotp(&admin); + configure_hotp(&admin, 0); let user = admin.device().authenticate_user(USER_PASSWORD).unwrap(); - check_hotp_codes(&user); + check_hotp_codes(&user, 0); assert!(user.device().get_hotp_code(1).is_err()); } |