Projekt

Obecné

Profil

« Předchozí | Další » 

Revize cdc18553

Přidáno uživatelem Jakub Šilhavý před asi 3 roky(ů)

re #9421 Restructured the test folder

Zobrazit rozdíly:

client/src/usb_detector/api_client.py
49 49

  
50 50

  
51 51
def _resend_cached_payloads():
52
    retries = min(_config.max_retries, len(_cache))
52
    retries = min(_config.cache_max_retries, len(_cache))
53 53
    logging.info(f"emptying the cache ({retries} records)")
54 54
    for _ in range(0, retries):
55 55
        payload = _cache.pop()
client/tests/api_client/test_api_client_set_config.py
1
from client.src.usb_detector import api_client
2

  
3
from unittest import mock
4

  
5

  
6
@mock.patch('client.src.usb_detector.api_client._init_cache')
7
def test_api_client_set_config_1(_init_cache_mock):
8
    class Config:
9
        def __init__(self):
10
            self.server_url = "127.0.0.1"
11
            self.server_port = "54444"
12
            self.server_endpoint = "/api/v1/usb-logs"
13

  
14
    config = Config()
15
    api_client.api_client_set_config(config)
16

  
17
    assert api_client._config is config
18
    assert api_client._uri == "127.0.0.1:54444/api/v1/usb-logs"
client/tests/api_client/test_cache_failed_payload.py
1
from client.src.usb_detector import api_client
2

  
3

  
4
class CacheMock:
5

  
6
    def __init__(self):
7
        self._data = []
8

  
9
    def pop(self):
10
        return self._data.pop()
11

  
12
    def append(self, payload):
13
        self._data.append(payload)
14

  
15
    def __len__(self):
16
        return len(self._data)
17

  
18

  
19
class ConfigMock:
20

  
21
    def __init__(self):
22
        self.cache_max_entries = 5
23

  
24

  
25
def test_cache_failed_payload_1():
26
    payload_mock = {
27
        "vendor_id": 1,
28
        "product_id": 2
29
    }
30
    cache = CacheMock()
31
    config = ConfigMock()
32

  
33
    api_client._cache = cache
34
    api_client._config = config
35

  
36
    for _ in range(0, config.cache_max_entries + 1):
37
        api_client._cache_failed_payload(payload_mock)
38

  
39
    assert len(api_client._cache) == config.cache_max_entries
40

  
41

  
42
def test_cache_failed_payload_2():
43
    payload_mock = {
44
        "vendor_id": 1,
45
        "product_id": 2
46
    }
47
    cache = CacheMock()
48
    config = ConfigMock()
49

  
50
    api_client._cache = cache
51
    api_client._config = config
52
    count = int(config.cache_max_entries / 2)
53

  
54
    for _ in range(0, count):
55
        api_client._cache_failed_payload(payload_mock)
56

  
57
    assert len(api_client._cache) == count
58

  
client/tests/api_client/test_resend_cached_payloads.py
1
from client.src.usb_detector import api_client
2

  
3
from unittest import mock
4

  
5

  
6
class CacheMock:
7

  
8
    def __init__(self):
9
        self._data = []
10

  
11
    def pop(self):
12
        return self._data.pop()
13

  
14
    def append(self, payload):
15
        self._data.append(payload)
16

  
17
    def __len__(self):
18
        return len(self._data)
19

  
20

  
21
class ConfigMock:
22

  
23
    def __init__(self):
24
        self.cache_max_entries = 5
25
        self.max_retries = 3
26

  
27

  
28
payload_mock = {
29
    "device": {
30
        "vendor_id": 1,
31
        "product_id": 2
32
    }
33
}
34

  
35

  
36
@mock.patch('client.src.usb_detector.api_client.send_data')
37
def test_resend_cached_payloads_1(send_data_mock):
38
    cache = CacheMock()
39
    config = ConfigMock()
40

  
41
    api_client._cache = cache
42
    api_client._config = config
43

  
44
    for _ in range(0, config.cache_max_entries + 1):
45
        api_client._cache_failed_payload(payload_mock)
46

  
47
    api_client._resend_cached_payloads()
48
    send_data_mock.assert_called()
49
    assert len(api_client._cache) == 2
50

  
51
    api_client._resend_cached_payloads()
52
    assert len(api_client._cache) == 0
53

  
54
    api_client._resend_cached_payloads()
55
    assert len(api_client._cache) == 0
56

  
57

  
58
@mock.patch('client.src.usb_detector.api_client.send_data')
59
def test_resend_cached_payloads_2(send_data_mock):
60
    cache = CacheMock()
61
    config = ConfigMock()
62

  
63
    api_client._cache = cache
64
    api_client._config = config
65

  
66
    api_client._resend_cached_payloads()
67
    send_data_mock.assert_not_called()
68
    assert len(api_client._cache) == 0
69

  
70

  
71
@mock.patch('client.src.usb_detector.api_client.send_data')
72
def test_resend_cached_payloads_3(send_data_mock):
73
    cache = CacheMock()
74
    config = ConfigMock()
75

  
76
    api_client._cache = cache
77
    api_client._config = config
78

  
79
    for _ in range(0, 2):
80
        api_client._cache_failed_payload(payload_mock)
81

  
82
    assert len(api_client._cache) == 2
83
    api_client._resend_cached_payloads()
84
    send_data_mock.assert_called()
85
    assert len(api_client._cache) == 0
86

  
client/tests/api_client/test_send_data.py
1
from client.src.usb_detector import api_client
2

  
3
import requests
4
from unittest import mock
5

  
6

  
7
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
8
def test_send_data_1(_cache_failed_payload_mock):
9
    payload_mock = {
10
        "device": {
11
            "vendor_id": 1,
12
            "product_id": 2
13
        }
14
    }
15

  
16
    api_client._uri = None
17
    api_client.send_data(payload_mock)
18

  
19
    args = _cache_failed_payload_mock.call_args.args
20
    _cache_failed_payload_mock.assert_called()
21
    assert args[0] == payload_mock
22

  
23

  
24
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
25
def test_send_data_2(_cache_failed_payload_mock):
26
    payload_mock = {
27
        "device": {
28
            "vendor_id": 1,
29
            "product_id": 2
30
        }
31
    }
32

  
33
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
34
    api_client.send_data(payload_mock)
35

  
36
    args = _cache_failed_payload_mock.call_args.args
37
    _cache_failed_payload_mock.assert_called()
38
    assert args[0] == payload_mock
39

  
40

  
41
@mock.patch('client.src.usb_detector.api_client.requests.post')
42
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
43
def test_send_data_3(_cache_failed_payload_mock, post_mock):
44
    payload_mock = {
45
        "device": {
46
            "vendor_id": 1,
47
            "product_id": 2
48
        }
49
    }
50

  
51
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
52
    api_client.send_data(payload_mock)
53

  
54
    _cache_failed_payload_mock.assert_not_called()
55

  
56

  
57
@mock.patch('client.src.usb_detector.api_client.requests.post')
58
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
59
def test_send_data_4(_cache_failed_payload_mock, post_mock):
60
    payload_mock = {
61
        "device": {
62
            "vendor_id": 1,
63
            "product_id": 2
64
        }
65
    }
66
    post_mock.side_effect = requests.exceptions.HTTPError()
67

  
68
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
69
    api_client.send_data(payload_mock)
70

  
71
    args = _cache_failed_payload_mock.call_args.args
72
    _cache_failed_payload_mock.assert_called()
73
    assert args[0] == payload_mock
client/tests/detector/test_get_connected_devices.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_get_connected_devices_1():
5
    assert detector._get_connected_devices([], []) == []
6

  
7

  
8
def test_get_connected_devices_2():
9
    assert detector._get_connected_devices([], None) == []
10

  
11

  
12
def test_get_connected_devices_3():
13
    assert detector._get_connected_devices(None, []) == []
14

  
15

  
16
def test_get_connected_devices_4():
17
    assert detector._get_connected_devices(None, None) == []
18

  
19

  
20
def test_get_connected_devices_5():
21
    assert detector._get_connected_devices([1, 2, 3], None) == [1, 2, 3]
22

  
23

  
24
def test_get_connected_devices_6():
25
    assert detector._get_connected_devices(None, [4, 5, 6]) == []
26

  
27

  
28
def test_get_connected_devices_7():
29
    assert detector._get_connected_devices([], [4, 5, 6]) == []
30

  
31

  
32
def test_get_connected_devices_8():
33
    assert detector._get_connected_devices([1, 2, 3], []) == [1, 2, 3]
34

  
35

  
36
def test_get_connected_devices_9():
37
    assert detector._get_connected_devices([1, 2, 3], [2, 3]) == [1]
38

  
39

  
40
def test_get_connected_devices_10():
41
    detected_devices = [
42
        {
43
            "vendor_id": 1,
44
            "product_id": 2,
45
            "serial_number": 3
46
        },
47
        {
48
            "vendor_id": 4,
49
            "product_id": 5,
50
            "serial_number": 5
51
        }
52
    ]
53
    last_connected_devices = [
54
        {
55
            "vendor_id": 1,
56
            "product_id": 2,
57
            "serial_number": 3
58
        }
59
    ]
60
    assert detector._get_connected_devices(detected_devices, last_connected_devices) == [detected_devices[1]]
61
    assert detector._get_connected_devices(detected_devices, None) == detected_devices
62
    assert detector._get_connected_devices(detected_devices, []) == detected_devices
client/tests/detector/test_get_disconnected_devices.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_get_disconnected_devices_1():
5
    assert detector._get_disconnected_devices([], []) == []
6

  
7

  
8
def test_get_disconnected_devices_2():
9
    assert detector._get_disconnected_devices([], None) == []
10

  
11

  
12
def test_get_disconnected_devices_3():
13
    assert detector._get_disconnected_devices(None, []) == []
14

  
15

  
16
def test_get_disconnected_devices_4():
17
    assert detector._get_disconnected_devices(None, None) == []
18

  
19

  
20
def test_get_disconnected_devices_5():
21
    assert detector._get_disconnected_devices([1, 2, 3, 4, 5], None) == []
22

  
23

  
24
def test_get_disconnected_devices_6():
25
    assert detector._get_disconnected_devices([1, 2, 3, 4, 5], []) == []
26

  
27

  
28
def test_get_disconnected_devices_7():
29
    assert detector._get_disconnected_devices([1, 3, 5], [1, 2, 3, 4, 5]) == [2, 4]
30

  
31

  
32
def test_get_disconnected_devices_8():
33
    assert detector._get_disconnected_devices([], [1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5]
34

  
35

  
36
def test_get_disconnected_devices_9():
37
    assert detector._get_disconnected_devices([], [1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5]
38

  
39

  
40
def test_get_disconnected_devices_10():
41
    last_connected_devices = [
42
        {
43
            "vendor_id": 1,
44
            "product_id": 2,
45
            "serial_number": 3
46
        },
47
        {
48
            "vendor_id": 4,
49
            "product_id": 5,
50
            "serial_number": 5
51
        }
52
    ]
53
    detected_devices = [
54
        {
55
            "vendor_id": 1,
56
            "product_id": 2,
57
            "serial_number": 3
58
        }
59
    ]
60
    assert detector._get_disconnected_devices(detected_devices, last_connected_devices) == [last_connected_devices[1]]
61
    assert detector._get_disconnected_devices(detected_devices, None) == []
62
    assert detector._get_disconnected_devices(detected_devices, []) == []
63
    assert detector._get_disconnected_devices([], last_connected_devices) == last_connected_devices
64
    assert detector._get_disconnected_devices(None, last_connected_devices) == last_connected_devices
65

  
66

  
client/tests/detector/test_notify_listeners.py
1
from unittest.mock import Mock
2

  
3
from client.src.usb_detector import detector
4

  
5

  
6
def test_notify_listeners_1():
7
    mocks = [Mock() for _ in range(10)]
8
    detector._notify_listeners([mock.listener for mock in mocks], [1, 2, 3])
9
    for mock in mocks:
10
        mock.listener.assert_called()
11

  
12

  
13
def test_notify_listeners_2():
14
    mocks = [Mock() for _ in range(10)]
15
    detector._notify_listeners([mock.listener for mock in mocks], [])
16
    for mock in mocks:
17
        mock.listener.assert_not_called()
18

  
19

  
20
def test_notify_listeners_3():
21
    mocks = [Mock() for _ in range(10)]
22
    detector._notify_listeners([mock.listener for mock in mocks], None)
23
    for mock in mocks:
24
        mock.listener.assert_not_called()
client/tests/detector/test_register_listener.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_register_listener_1():
5
    def connected_handler():
6
        pass
7

  
8
    detector.register_listener(connected_handler)
9

  
10
    assert connected_handler in detector._listeners_connected
11
    assert connected_handler not in detector._listeners_disconnected
12

  
13

  
14
def test_register_listener_2():
15
    def connected_handler():
16
        pass
17

  
18
    detector.register_listener(connected_handler, connected=True)
19

  
20
    assert connected_handler in detector._listeners_connected
21
    assert connected_handler not in detector._listeners_disconnected
22

  
23

  
24
def test_register_listener_3():
25
    def connected_handler():
26
        pass
27

  
28
    detector.register_listener(connected_handler, connected=False)
29

  
30
    assert connected_handler in detector._listeners_disconnected
31
    assert connected_handler not in detector._listeners_connected
client/tests/detector/test_update.py
1
from unittest import mock
2
from unittest.mock import Mock
3

  
4
from client.src.usb_detector import detector
5

  
6

  
7
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
8
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[1, 2, 3])
9
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
10
    connected_mocks = [Mock() for _ in range(10)]
11
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
12

  
13
    disconnected_mocks = [Mock() for _ in range(10)]
14
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
15

  
16
    detector._update()
17
    assert detector._last_connected_devices == [1, 2, 3]
18
    for listener_mock in connected_mocks:
19
        listener_mock.listener.assert_called()
20
    for listener_mock in disconnected_mocks:
21
        listener_mock.listener.assert_not_called()
22

  
23

  
24
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
25
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[1, 2, 3])
26
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
27
    detector._last_connected_devices = [1, 2, 3]
28
    connected_mocks = [Mock() for _ in range(10)]
29
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
30

  
31
    disconnected_mocks = [Mock() for _ in range(10)]
32
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
33

  
34
    detector._update()
35
    assert detector._last_connected_devices == [1, 2, 3]
36
    for listener_mock in connected_mocks:
37
        listener_mock.listener.assert_not_called()
38
    for listener_mock in disconnected_mocks:
39
        listener_mock.listener.assert_not_called()
40

  
41

  
42
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
43
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[])
44
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
45
    detector._last_connected_devices = [1, 2, 3]
46
    connected_mocks = [Mock() for _ in range(10)]
47
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
48

  
49
    disconnected_mocks = [Mock() for _ in range(10)]
50
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
51

  
52
    detector._update()
53
    assert detector._last_connected_devices == []
54
    for listener_mock in connected_mocks:
55
        listener_mock.listener.assert_not_called()
56
    for listener_mock in disconnected_mocks:
57
        listener_mock.listener.assert_called()
58

  
59

  
60
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
61
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[2, 3, 4])
62
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
63
    detector._last_connected_devices = [1, 2, 3, 5]
64
    connected_mocks = [Mock() for _ in range(10)]
65
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
66

  
67
    disconnected_mocks = [Mock() for _ in range(10)]
68
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
69

  
70
    detector._update()
71
    assert detector._last_connected_devices == [2, 3, 4]
72
    for listener_mock in connected_mocks:
73
        listener_mock.listener.assert_called()
74
    for listener_mock in disconnected_mocks:
75
        listener_mock.listener.assert_called()
client/tests/detector/test_usb_detector_set_config.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_usb_detector_set_config_1():
5
    assert None is detector._config
6

  
7

  
8
def test_usb_detector_set_config_2():
9
    class Config:
10
        pass
11

  
12
    config = Config()
13
    detector.usb_detector_set_config(config)
14
    assert config is detector._config
client/tests/event_listener/test_get_metadata.py
1
import getpass
2
import platform
3
from datetime import datetime
4

  
5
from client.src.usb_detector import event_listener
6

  
7

  
8
def test_get_metadata_1():
9
    expected_metadata = {
10
        "username": getpass.getuser(),
11
        "hostname": platform.uname().node,
12
        "timestamp": str(datetime.now()).split('.')[0]
13
    }
14

  
15
    actual_metadata = event_listener._get_metadata()
16

  
17
    assert actual_metadata["username"] == expected_metadata["username"]
18
    assert actual_metadata["hostname"] == expected_metadata["hostname"]
19
    assert actual_metadata["timestamp"] == expected_metadata["timestamp"]
client/tests/event_listener/test_send_payload_to_server.py
1
import platform
2
import getpass
3
from unittest import mock
4
from datetime import datetime
5

  
6
import client.src.usb_detector.event_listener
7

  
8

  
9
@mock.patch('client.src.usb_detector.event_listener.send_data')
10
def test_send_payload_to_server_1(send_data_mock):
11
    device_mock = {
12
        "vendor_id": 1,
13
        "product_id": 2
14
    }
15
    metadata_mock = {
16
        "username": getpass.getuser(),
17
        "hostname": platform.uname().node,
18
        "timestamp": str(datetime.now()).split('.')[0]
19
    }
20
    status_mock = "connected"
21

  
22
    metadata_mock["device"] = device_mock
23
    metadata_mock["status"] = status_mock
24

  
25
    client.src.usb_detector.event_listener._send_payload_to_server(device_mock, status_mock)
26

  
27
    args = send_data_mock.call_args.args
28
    send_data_mock.assert_called()
29
    assert args[0] == metadata_mock
client/tests/test_usb_detector/test_api_client_set_config.py
1
from client.src.usb_detector import api_client
2

  
3
from unittest import mock
4

  
5

  
6
@mock.patch('client.src.usb_detector.api_client._init_cache')
7
def test_api_client_set_config_1(_init_cache_mock):
8
    class Config:
9
        def __init__(self):
10
            self.server_url = "127.0.0.1"
11
            self.server_port = "54444"
12
            self.server_endpoint = "/api/v1/usb-logs"
13

  
14
    config = Config()
15
    api_client.api_client_set_config(config)
16

  
17
    assert api_client._config is config
18
    assert api_client._uri == "127.0.0.1:54444/api/v1/usb-logs"
client/tests/test_usb_detector/test_cache_failed_payload.py
1
from client.src.usb_detector import api_client
2

  
3

  
4
class CacheMock:
5

  
6
    def __init__(self):
7
        self._data = []
8

  
9
    def pop(self):
10
        return self._data.pop()
11

  
12
    def append(self, payload):
13
        self._data.append(payload)
14

  
15
    def __len__(self):
16
        return len(self._data)
17

  
18

  
19
class ConfigMock:
20

  
21
    def __init__(self):
22
        self.cache_max_entries = 5
23

  
24

  
25
def test_cache_failed_payload_1():
26
    payload_mock = {
27
        "vendor_id": 1,
28
        "product_id": 2
29
    }
30
    cache = CacheMock()
31
    config = ConfigMock()
32

  
33
    api_client._cache = cache
34
    api_client._config = config
35

  
36
    for _ in range(0, config.cache_max_entries + 1):
37
        api_client._cache_failed_payload(payload_mock)
38

  
39
    assert len(api_client._cache) == config.cache_max_entries
40

  
41

  
42
def test_cache_failed_payload_2():
43
    payload_mock = {
44
        "vendor_id": 1,
45
        "product_id": 2
46
    }
47
    cache = CacheMock()
48
    config = ConfigMock()
49

  
50
    api_client._cache = cache
51
    api_client._config = config
52
    count = int(config.cache_max_entries / 2)
53

  
54
    for _ in range(0, count):
55
        api_client._cache_failed_payload(payload_mock)
56

  
57
    assert len(api_client._cache) == count
58

  
client/tests/test_usb_detector/test_get_connected_devices.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_get_connected_devices_1():
5
    assert detector._get_connected_devices([], []) == []
6

  
7

  
8
def test_get_connected_devices_2():
9
    assert detector._get_connected_devices([], None) == []
10

  
11

  
12
def test_get_connected_devices_3():
13
    assert detector._get_connected_devices(None, []) == []
14

  
15

  
16
def test_get_connected_devices_4():
17
    assert detector._get_connected_devices(None, None) == []
18

  
19

  
20
def test_get_connected_devices_5():
21
    assert detector._get_connected_devices([1, 2, 3], None) == [1, 2, 3]
22

  
23

  
24
def test_get_connected_devices_6():
25
    assert detector._get_connected_devices(None, [4, 5, 6]) == []
26

  
27

  
28
def test_get_connected_devices_7():
29
    assert detector._get_connected_devices([], [4, 5, 6]) == []
30

  
31

  
32
def test_get_connected_devices_8():
33
    assert detector._get_connected_devices([1, 2, 3], []) == [1, 2, 3]
34

  
35

  
36
def test_get_connected_devices_9():
37
    assert detector._get_connected_devices([1, 2, 3], [2, 3]) == [1]
38

  
39

  
40
def test_get_connected_devices_10():
41
    detected_devices = [
42
        {
43
            "vendor_id": 1,
44
            "product_id": 2,
45
            "serial_number": 3
46
        },
47
        {
48
            "vendor_id": 4,
49
            "product_id": 5,
50
            "serial_number": 5
51
        }
52
    ]
53
    last_connected_devices = [
54
        {
55
            "vendor_id": 1,
56
            "product_id": 2,
57
            "serial_number": 3
58
        }
59
    ]
60
    assert detector._get_connected_devices(detected_devices, last_connected_devices) == [detected_devices[1]]
61
    assert detector._get_connected_devices(detected_devices, None) == detected_devices
62
    assert detector._get_connected_devices(detected_devices, []) == detected_devices
client/tests/test_usb_detector/test_get_disconnected_devices.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_get_disconnected_devices_1():
5
    assert detector._get_disconnected_devices([], []) == []
6

  
7

  
8
def test_get_disconnected_devices_2():
9
    assert detector._get_disconnected_devices([], None) == []
10

  
11

  
12
def test_get_disconnected_devices_3():
13
    assert detector._get_disconnected_devices(None, []) == []
14

  
15

  
16
def test_get_disconnected_devices_4():
17
    assert detector._get_disconnected_devices(None, None) == []
18

  
19

  
20
def test_get_disconnected_devices_5():
21
    assert detector._get_disconnected_devices([1, 2, 3, 4, 5], None) == []
22

  
23

  
24
def test_get_disconnected_devices_6():
25
    assert detector._get_disconnected_devices([1, 2, 3, 4, 5], []) == []
26

  
27

  
28
def test_get_disconnected_devices_7():
29
    assert detector._get_disconnected_devices([1, 3, 5], [1, 2, 3, 4, 5]) == [2, 4]
30

  
31

  
32
def test_get_disconnected_devices_8():
33
    assert detector._get_disconnected_devices([], [1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5]
34

  
35

  
36
def test_get_disconnected_devices_9():
37
    assert detector._get_disconnected_devices([], [1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5]
38

  
39

  
40
def test_get_disconnected_devices_10():
41
    last_connected_devices = [
42
        {
43
            "vendor_id": 1,
44
            "product_id": 2,
45
            "serial_number": 3
46
        },
47
        {
48
            "vendor_id": 4,
49
            "product_id": 5,
50
            "serial_number": 5
51
        }
52
    ]
53
    detected_devices = [
54
        {
55
            "vendor_id": 1,
56
            "product_id": 2,
57
            "serial_number": 3
58
        }
59
    ]
60
    assert detector._get_disconnected_devices(detected_devices, last_connected_devices) == [last_connected_devices[1]]
61
    assert detector._get_disconnected_devices(detected_devices, None) == []
62
    assert detector._get_disconnected_devices(detected_devices, []) == []
63
    assert detector._get_disconnected_devices([], last_connected_devices) == last_connected_devices
64
    assert detector._get_disconnected_devices(None, last_connected_devices) == last_connected_devices
65

  
66

  
client/tests/test_usb_detector/test_get_metadata.py
1
import getpass
2
import platform
3
from datetime import datetime
4

  
5
from client.src.usb_detector import event_listener
6

  
7

  
8
def test_get_metadata_1():
9
    expected_metadata = {
10
        "username": getpass.getuser(),
11
        "hostname": platform.uname().node,
12
        "timestamp": str(datetime.now()).split('.')[0]
13
    }
14

  
15
    actual_metadata = event_listener._get_metadata()
16

  
17
    assert actual_metadata["username"] == expected_metadata["username"]
18
    assert actual_metadata["hostname"] == expected_metadata["hostname"]
19
    assert actual_metadata["timestamp"] == expected_metadata["timestamp"]
client/tests/test_usb_detector/test_notify_listeners.py
1
from unittest.mock import Mock
2

  
3
from client.src.usb_detector import detector
4

  
5

  
6
def test_notify_listeners_1():
7
    mocks = [Mock() for _ in range(10)]
8
    detector._notify_listeners([mock.listener for mock in mocks], [1, 2, 3])
9
    for mock in mocks:
10
        mock.listener.assert_called()
11

  
12

  
13
def test_notify_listeners_2():
14
    mocks = [Mock() for _ in range(10)]
15
    detector._notify_listeners([mock.listener for mock in mocks], [])
16
    for mock in mocks:
17
        mock.listener.assert_not_called()
18

  
19

  
20
def test_notify_listeners_3():
21
    mocks = [Mock() for _ in range(10)]
22
    detector._notify_listeners([mock.listener for mock in mocks], None)
23
    for mock in mocks:
24
        mock.listener.assert_not_called()
client/tests/test_usb_detector/test_read_connected_devices.py
1
from client.src.usb_detector.usb_reader import read_connected_devices
2

  
3

  
4
def test_read_connected_devices_1():
5
    # This test assumes that there is no USB plugged in.
6
    assert read_connected_devices() == []
client/tests/test_usb_detector/test_register_listener.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_register_listener_1():
5
    def connected_handler():
6
        pass
7

  
8
    detector.register_listener(connected_handler)
9

  
10
    assert connected_handler in detector._listeners_connected
11
    assert connected_handler not in detector._listeners_disconnected
12

  
13

  
14
def test_register_listener_2():
15
    def connected_handler():
16
        pass
17

  
18
    detector.register_listener(connected_handler, connected=True)
19

  
20
    assert connected_handler in detector._listeners_connected
21
    assert connected_handler not in detector._listeners_disconnected
22

  
23

  
24
def test_register_listener_3():
25
    def connected_handler():
26
        pass
27

  
28
    detector.register_listener(connected_handler, connected=False)
29

  
30
    assert connected_handler in detector._listeners_disconnected
31
    assert connected_handler not in detector._listeners_connected
client/tests/test_usb_detector/test_resend_cached_payloads.py
1
from client.src.usb_detector import api_client
2

  
3
from unittest import mock
4

  
5

  
6
class CacheMock:
7

  
8
    def __init__(self):
9
        self._data = []
10

  
11
    def pop(self):
12
        return self._data.pop()
13

  
14
    def append(self, payload):
15
        self._data.append(payload)
16

  
17
    def __len__(self):
18
        return len(self._data)
19

  
20

  
21
class ConfigMock:
22

  
23
    def __init__(self):
24
        self.cache_max_entries = 5
25
        self.cache_max_retries = 3
26

  
27

  
28
payload_mock = {
29
    "device": {
30
        "vendor_id": 1,
31
        "product_id": 2
32
    }
33
}
34

  
35

  
36
@mock.patch('client.src.usb_detector.api_client.send_data')
37
def test_resend_cached_payloads_1(send_data_mock):
38
    cache = CacheMock()
39
    config = ConfigMock()
40

  
41
    api_client._cache = cache
42
    api_client._config = config
43

  
44
    for _ in range(0, config.cache_max_entries + 1):
45
        api_client._cache_failed_payload(payload_mock)
46

  
47
    api_client._resend_cached_payloads()
48
    send_data_mock.assert_called()
49
    assert len(api_client._cache) == 2
50

  
51
    api_client._resend_cached_payloads()
52
    assert len(api_client._cache) == 0
53

  
54
    api_client._resend_cached_payloads()
55
    assert len(api_client._cache) == 0
56

  
57

  
58
@mock.patch('client.src.usb_detector.api_client.send_data')
59
def test_resend_cached_payloads_2(send_data_mock):
60
    cache = CacheMock()
61
    config = ConfigMock()
62

  
63
    api_client._cache = cache
64
    api_client._config = config
65

  
66
    api_client._resend_cached_payloads()
67
    send_data_mock.assert_not_called()
68
    assert len(api_client._cache) == 0
69

  
70

  
71
@mock.patch('client.src.usb_detector.api_client.send_data')
72
def test_resend_cached_payloads_3(send_data_mock):
73
    cache = CacheMock()
74
    config = ConfigMock()
75

  
76
    api_client._cache = cache
77
    api_client._config = config
78

  
79
    for _ in range(0, 2):
80
        api_client._cache_failed_payload(payload_mock)
81

  
82
    assert len(api_client._cache) == 2
83
    api_client._resend_cached_payloads()
84
    send_data_mock.assert_called()
85
    assert len(api_client._cache) == 0
86

  
client/tests/test_usb_detector/test_send_data.py
1
from client.src.usb_detector import api_client
2

  
3
import requests
4
from unittest import mock
5

  
6

  
7
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
8
def test_send_data_1(_cache_failed_payload_mock):
9
    payload_mock = {
10
        "device": {
11
            "vendor_id": 1,
12
            "product_id": 2
13
        }
14
    }
15

  
16
    api_client._uri = None
17
    api_client.send_data(payload_mock)
18

  
19
    args = _cache_failed_payload_mock.call_args.args
20
    _cache_failed_payload_mock.assert_called()
21
    assert args[0] == payload_mock
22

  
23

  
24
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
25
def test_send_data_2(_cache_failed_payload_mock):
26
    payload_mock = {
27
        "device": {
28
            "vendor_id": 1,
29
            "product_id": 2
30
        }
31
    }
32

  
33
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
34
    api_client.send_data(payload_mock)
35

  
36
    args = _cache_failed_payload_mock.call_args.args
37
    _cache_failed_payload_mock.assert_called()
38
    assert args[0] == payload_mock
39

  
40

  
41
@mock.patch('client.src.usb_detector.api_client.requests.post')
42
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
43
def test_send_data_3(_cache_failed_payload_mock, post_mock):
44
    payload_mock = {
45
        "device": {
46
            "vendor_id": 1,
47
            "product_id": 2
48
        }
49
    }
50

  
51
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
52
    api_client.send_data(payload_mock)
53

  
54
    _cache_failed_payload_mock.assert_not_called()
55

  
56

  
57
@mock.patch('client.src.usb_detector.api_client.requests.post')
58
@mock.patch('client.src.usb_detector.api_client._cache_failed_payload')
59
def test_send_data_4(_cache_failed_payload_mock, post_mock):
60
    payload_mock = {
61
        "device": {
62
            "vendor_id": 1,
63
            "product_id": 2
64
        }
65
    }
66
    post_mock.side_effect = requests.exceptions.HTTPError()
67

  
68
    api_client._uri = "127.0.0.1:54444/api/v1/usb-logs"
69
    api_client.send_data(payload_mock)
70

  
71
    args = _cache_failed_payload_mock.call_args.args
72
    _cache_failed_payload_mock.assert_called()
73
    assert args[0] == payload_mock
client/tests/test_usb_detector/test_send_payload_to_server.py
1
import platform
2
import getpass
3
from unittest import mock
4
from datetime import datetime
5

  
6
import client.src.usb_detector.event_listener
7

  
8

  
9
@mock.patch('client.src.usb_detector.event_listener.send_data')
10
def test_send_payload_to_server_1(send_data_mock):
11
    device_mock = {
12
        "vendor_id": 1,
13
        "product_id": 2
14
    }
15
    metadata_mock = {
16
        "username": getpass.getuser(),
17
        "hostname": platform.uname().node,
18
        "timestamp": str(datetime.now()).split('.')[0]
19
    }
20
    status_mock = "connected"
21

  
22
    metadata_mock["device"] = device_mock
23
    metadata_mock["status"] = status_mock
24

  
25
    client.src.usb_detector.event_listener._send_payload_to_server(device_mock, status_mock)
26

  
27
    args = send_data_mock.call_args.args
28
    send_data_mock.assert_called()
29
    assert args[0] == metadata_mock
client/tests/test_usb_detector/test_update.py
1
from unittest import mock
2
from unittest.mock import Mock
3

  
4
from client.src.usb_detector import detector
5

  
6

  
7
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
8
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[1, 2, 3])
9
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
10
    connected_mocks = [Mock() for _ in range(10)]
11
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
12

  
13
    disconnected_mocks = [Mock() for _ in range(10)]
14
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
15

  
16
    detector._update()
17
    assert detector._last_connected_devices == [1, 2, 3]
18
    for listener_mock in connected_mocks:
19
        listener_mock.listener.assert_called()
20
    for listener_mock in disconnected_mocks:
21
        listener_mock.listener.assert_not_called()
22

  
23

  
24
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
25
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[1, 2, 3])
26
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
27
    detector._last_connected_devices = [1, 2, 3]
28
    connected_mocks = [Mock() for _ in range(10)]
29
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
30

  
31
    disconnected_mocks = [Mock() for _ in range(10)]
32
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
33

  
34
    detector._update()
35
    assert detector._last_connected_devices == [1, 2, 3]
36
    for listener_mock in connected_mocks:
37
        listener_mock.listener.assert_not_called()
38
    for listener_mock in disconnected_mocks:
39
        listener_mock.listener.assert_not_called()
40

  
41

  
42
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
43
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[])
44
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
45
    detector._last_connected_devices = [1, 2, 3]
46
    connected_mocks = [Mock() for _ in range(10)]
47
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
48

  
49
    disconnected_mocks = [Mock() for _ in range(10)]
50
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
51

  
52
    detector._update()
53
    assert detector._last_connected_devices == []
54
    for listener_mock in connected_mocks:
55
        listener_mock.listener.assert_not_called()
56
    for listener_mock in disconnected_mocks:
57
        listener_mock.listener.assert_called()
58

  
59

  
60
@mock.patch('client.src.usb_detector.detector._store_connected_devices')
61
@mock.patch('client.src.usb_detector.detector.read_connected_devices', return_value=[2, 3, 4])
62
def test_update_1(read_connected_devices_mock, _store_connected_devices_mock):
63
    detector._last_connected_devices = [1, 2, 3, 5]
64
    connected_mocks = [Mock() for _ in range(10)]
65
    detector._listeners_connected = [listener_mock.listener for listener_mock in connected_mocks]
66

  
67
    disconnected_mocks = [Mock() for _ in range(10)]
68
    detector._listeners_disconnected = [listener_mock.listener for listener_mock in disconnected_mocks]
69

  
70
    detector._update()
71
    assert detector._last_connected_devices == [2, 3, 4]
72
    for listener_mock in connected_mocks:
73
        listener_mock.listener.assert_called()
74
    for listener_mock in disconnected_mocks:
75
        listener_mock.listener.assert_called()
client/tests/test_usb_detector/test_usb_detector_set_config.py
1
from client.src.usb_detector import detector
2

  
3

  
4
def test_usb_detector_set_config_1():
5
    assert None is detector._config
6

  
7

  
8
def test_usb_detector_set_config_2():
9
    class Config:
10
        pass
11

  
12
    config = Config()
13
    detector.usb_detector_set_config(config)
14
    assert config is detector._config
client/tests/usb_reader/test_read_connected_devices.py
1
from client.src.usb_detector.usb_reader import read_connected_devices
2

  
3

  
4
def test_read_connected_devices_1():
5
    # This test assumes that there is no USB plugged in.
6
    assert read_connected_devices() == []

Také k dispozici: Unified diff