diff options
| -rw-r--r-- | unittest/conftest.py | 24 | ||||
| -rw-r--r-- | unittest/test_offline.py | 39 | 
2 files changed, 57 insertions, 6 deletions
| diff --git a/unittest/conftest.py b/unittest/conftest.py index ba21a38..a9f46c6 100644 --- a/unittest/conftest.py +++ b/unittest/conftest.py @@ -67,7 +67,18 @@ class AttrProxy(object):  @pytest.fixture(scope="module") +def C_offline(request=None): +    print("Getting library without initializing connection") +    return get_library(request, allow_offline=True) + + +@pytest.fixture(scope="module")  def C(request=None): +    print("Getting library with connection initialized") +    return get_library(request) + + +def get_library(request, allow_offline=False):      fp = '../NK_C_API.h'      declarations = [] @@ -115,12 +126,13 @@ def C(request=None):      nk_login = C.NK_login_auto()      if nk_login != 1:          print('No devices detected!') -    assert nk_login != 0  # returns 0 if not connected or wrong model or 1 when connected -    global device_type -    firmware_version = C.NK_get_minor_firmware_version() -    model = 'P' if firmware_version < 20 else 'S' -    device_type = (model, firmware_version) -    print('Connected device: {} {}'.format(model, firmware_version)) +    if not allow_offline: +        assert nk_login != 0  # returns 0 if not connected or wrong model or 1 when connected +        global device_type +        firmware_version = C.NK_get_minor_firmware_version() +        model = 'P' if firmware_version < 20 else 'S' +        device_type = (model, firmware_version) +        print('Connected device: {} {}'.format(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 diff --git a/unittest/test_offline.py b/unittest/test_offline.py new file mode 100644 index 0000000..ae2638f --- /dev/null +++ b/unittest/test_offline.py @@ -0,0 +1,39 @@ +""" +Copyright (c) 2019 Nitrokey UG + +This file is part of libnitrokey. + +libnitrokey is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +any later version. + +libnitrokey is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with libnitrokey. If not, see <http://www.gnu.org/licenses/>. + +SPDX-License-Identifier: LGPL-3.0 +""" + +from misc import gs +import re + + +def test_offline(C_offline): +    libnk_version = gs(C_offline.NK_get_library_version()) +    assert libnk_version +    print(libnk_version) + +    # v3.4.1-29-g1f3d +    search = re.search(b'v\d\.\d(\.\d)?', libnk_version) +    assert search is not None + +    C_offline.NK_set_debug(False) +    C_offline.NK_set_debug_level(4) +    assert C_offline.NK_get_major_library_version() == 3 +    assert C_offline.NK_get_minor_library_version() >= 3 +    assert C_offline.NK_login_auto() == 0 | 
