diff options
| author | Szczepan Zalega <szczepan@nitrokey.com> | 2019-01-26 20:59:36 +0100 | 
|---|---|---|
| committer | Szczepan Zalega <szczepan@nitrokey.com> | 2019-01-26 21:13:21 +0100 | 
| commit | 909a2c3c30fc56e42c0193ab528ae86cde31ea7c (patch) | |
| tree | b0757100a6cb43bcf1c0696f7d89f6be075eba6a /unittest | |
| parent | c9b07f6adea66d1edc20acfee759880743e6a5db (diff) | |
| download | libnitrokey-909a2c3c30fc56e42c0193ab528ae86cde31ea7c.tar.gz libnitrokey-909a2c3c30fc56e42c0193ab528ae86cde31ea7c.tar.bz2 | |
Detect UV's block device on Fedora automatically
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'unittest')
| -rw-r--r-- | unittest/test_storage.py | 32 | 
1 files changed, 27 insertions, 5 deletions
| diff --git a/unittest/test_storage.py b/unittest/test_storage.py index 73dae9d..55671ae 100644 --- a/unittest/test_storage.py +++ b/unittest/test_storage.py @@ -409,14 +409,36 @@ def test_export_firmware_extended_fedora29(C):      skip_if_device_version_lower_than({'S': 43})      skip_if_not_fedora('Fedora specific test, due to the mount path. Could be suited for Debian.') -    import pexpect      from time import sleep      import os      from os.path import exists as exist +    import re +    try: +        import pyudev as pu +        import pexpect +    except: +        pytest.skip('Skipping due to missing required packages: pyudev and pexpect.') + +    ctx = pu.Context() +    devices = ctx.list_devices(subsystem='block', ID_VENDOR='Nitrokey') +    device = None +    for d in devices: +        if d.device_type == 'partition': +            device = '/dev/{}'.format(d.sys_name) +            break +    assert device, 'Device could not be found' + +    pexpect.run(f'udisksctl unmount -b {device}').decode() +    sleep(1) +    _res = pexpect.run(f'udisksctl mount -b {device}').decode() +    firmware_abs_path = re.findall('at (/.*)\.', _res) +    assert firmware_abs_path, 'Cannot get mount point' +    firmware_abs_path = firmware_abs_path[0] + +    print('path: {}, device: {}'.format(firmware_abs_path, device)) +    assert firmware_abs_path, 'Cannot get mount point' +    firmware_abs_path = firmware_abs_path + '/firmware.bin' -    device = '/dev/sde1'  # FIXME autodetect the block device with udev -    firmware_abs_path = '/run/media/sz/Nitrokey/firmware.bin'  # FIXME use the actual user name in mount path -    pexpect.run(f'udisksctl mount -b {device}')      checks = 0      checks_add = 0 @@ -428,7 +450,7 @@ def test_export_firmware_extended_fedora29(C):      ATTEMPTS = 20      for i in range(ATTEMPTS):          # if umount is disabled, success rate is 3/10, enabled: 10/10 -        # pexpect.run(f'udisksctl unmount -b {device}') +        pexpect.run(f'udisksctl unmount -b {device}')          assert C.NK_export_firmware(DefaultPasswords.ADMIN) == DeviceErrorCode.STATUS_OK          pexpect.run(f'udisksctl mount -b {device}')          sleep(1) | 
