From 60d744fec7d20fb93b5152f3a7db0101009831cb Mon Sep 17 00:00:00 2001
From: Szczepan Zalega <szczepan@nitrokey.com>
Date: Fri, 9 Dec 2016 11:09:07 +0100
Subject: Allow to skip test if device is not able to pass it

Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
---
 unittest/conftest.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

(limited to 'unittest')

diff --git a/unittest/conftest.py b/unittest/conftest.py
index 68227d5..88bf7d0 100644
--- a/unittest/conftest.py
+++ b/unittest/conftest.py
@@ -2,6 +2,16 @@ import pytest
 
 from misc import ffi
 
+device_type = None
+
+def skip_if_device_version_lower_than(allowed_devices):
+    global device_type
+    model, version = device_type
+    infinite_version_number = 999
+    if allowed_devices.get(model, infinite_version_number) > version:
+        pytest.skip('This device model is not applicable to run this test')
+
+
 @pytest.fixture(scope="module")
 def C(request):
     fp = '../NK_C_API.h'
@@ -24,7 +34,11 @@ def C(request):
     nk_login = C.NK_login_auto()
     if nk_login != 1:
         print('No devices detected!')
-    assert nk_login == 1  # returns 0 if not connected or wrong model or 1 when connected
+    assert nk_login != 0  # returns 0 if not connected or wrong model or 1 when connected
+    global device_type
+    firmware_version = C.NK_get_major_firmware_version()
+    model = 'P' if firmware_version in [7,8] else 'S'
+    device_type = (model, firmware_version)
 
     # assert C.NK_first_authenticate(DefaultPasswords.ADMIN, DefaultPasswords.ADMIN_TEMP) == DeviceErrorCode.STATUS_OK
     # assert C.NK_user_authenticate(DefaultPasswords.USER, DefaultPasswords.USER_TEMP) == DeviceErrorCode.STATUS_OK
-- 
cgit v1.2.3