From b0a06732852f3cdf203949a117e41c4b6f5f144b Mon Sep 17 00:00:00 2001 From: Szczepan Zalega Date: Wed, 19 Oct 2016 11:03:41 +0200 Subject: Tests: detect device Pro/Storage. skip AES_support command test for Storage Signed-off-by: Szczepan Zalega --- include/stick10_commands.h | 5 ++++- unittest/test_bindings.py | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/include/stick10_commands.h b/include/stick10_commands.h index a60be59..d1f12b6 100644 --- a/include/stick10_commands.h +++ b/include/stick10_commands.h @@ -331,7 +331,10 @@ class GetStatus : Command { std::string dissect() const { std::stringstream ss; - ss << "firmware_version:\t" << firmware_version << std::endl; + ss << "firmware_version:\t" + << "[" << firmware_version << "]" << "\t" + << ::nitrokey::misc::hexdump( + (const char *)(&firmware_version), 2, false); ss << "card_serial:\t" << ::nitrokey::misc::hexdump((const char *)(card_serial), sizeof card_serial, false); diff --git a/unittest/test_bindings.py b/unittest/test_bindings.py index 438e88f..7984848 100644 --- a/unittest/test_bindings.py +++ b/unittest/test_bindings.py @@ -85,6 +85,26 @@ def C(request): return C +def get_firmware_version_from_status(C): + status = gs(C.NK_status()) + status = [s if 'firmware_version' in s else '' for s in status.split('\n')] + firmware = status[0].split(':')[1] + return firmware + + +def is_pro_rtm_07(C): + firmware = get_firmware_version_from_status(C) + return '07 00' in firmware + + +def is_storage(C): + """ + exact firmware storage is sent by other function + """ + firmware = get_firmware_version_from_status(C) + return '01 00' in firmware + + def test_enable_password_safe(C): assert C.NK_lock_device() == DeviceErrorCode.STATUS_OK assert C.NK_enable_password_safe('wrong_password') == DeviceErrorCode.WRONG_PASSWORD @@ -188,8 +208,9 @@ def test_destroy_password_safe(C): assert is_slot_programmed[0] == 0 -@pytest.mark.xfail def test_is_AES_supported(C): + if is_storage(C): + pytest.skip("Storage does not implement this command") assert C.NK_is_AES_supported('wrong password') != 1 assert C.NK_get_last_command_status() == DeviceErrorCode.WRONG_PASSWORD assert C.NK_is_AES_supported(DefaultPasswords.USER) == 1 -- cgit v1.2.3