diff options
author | Devaev Maxim <[email protected]> | 2020-11-22 04:54:03 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-11-22 04:54:03 +0300 |
commit | 6a8ee1a11470fe6572c0ca224ec370f2b4752be0 (patch) | |
tree | 0964f3545b217fda25dec791ae4523f53de5d311 | |
parent | 5a5e3a3cc96bd9f7e5b589db11ed1ff783a7d12d (diff) |
refactoring
-rw-r--r-- | kvmd/apps/__init__.py | 5 | ||||
-rw-r--r-- | kvmd/apps/kvmd/api/hid.py | 12 | ||||
-rw-r--r-- | kvmd/validators/hid.py | 56 | ||||
-rw-r--r-- | kvmd/validators/kvm.py | 29 | ||||
-rw-r--r-- | testenv/tests/validators/test_hid.py | 98 | ||||
-rw-r--r-- | testenv/tests/validators/test_kvm.py | 71 |
6 files changed, 163 insertions, 108 deletions
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py index b8a4c160..3190f62c 100644 --- a/kvmd/apps/__init__.py +++ b/kvmd/apps/__init__.py @@ -84,11 +84,12 @@ from ..validators.net import valid_ports_list from ..validators.net import valid_mac from ..validators.net import valid_ssl_ciphers +from ..validators.hid import valid_hid_key +from ..validators.hid import valid_hid_mouse_move + from ..validators.kvm import valid_stream_quality from ..validators.kvm import valid_stream_fps from ..validators.kvm import valid_stream_resolution -from ..validators.kvm import valid_hid_key -from ..validators.kvm import valid_hid_mouse_move from ..validators.kvm import valid_ugpio_driver from ..validators.kvm import valid_ugpio_channel from ..validators.kvm import valid_ugpio_mode diff --git a/kvmd/apps/kvmd/api/hid.py b/kvmd/apps/kvmd/api/hid.py index bedc01c8..a988ab34 100644 --- a/kvmd/apps/kvmd/api/hid.py +++ b/kvmd/apps/kvmd/api/hid.py @@ -38,12 +38,12 @@ from ....validators import raise_error from ....validators.basic import valid_bool from ....validators.basic import valid_int_f0 from ....validators.os import valid_printable_filename -from ....validators.kvm import valid_hid_keyboard_output -from ....validators.kvm import valid_hid_mouse_output -from ....validators.kvm import valid_hid_key -from ....validators.kvm import valid_hid_mouse_move -from ....validators.kvm import valid_hid_mouse_button -from ....validators.kvm import valid_hid_mouse_delta +from ....validators.hid import valid_hid_keyboard_output +from ....validators.hid import valid_hid_mouse_output +from ....validators.hid import valid_hid_key +from ....validators.hid import valid_hid_mouse_move +from ....validators.hid import valid_hid_mouse_button +from ....validators.hid import valid_hid_mouse_delta from ....keyboard.keysym import build_symmap from ....keyboard.printer import text_to_web_keys diff --git a/kvmd/validators/hid.py b/kvmd/validators/hid.py new file mode 100644 index 00000000..4f6ca4be --- /dev/null +++ b/kvmd/validators/hid.py @@ -0,0 +1,56 @@ +# ========================================================================== # +# # +# KVMD - The main Pi-KVM daemon. # +# # +# Copyright (C) 2018 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program 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 General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +# ========================================================================== # + + +from typing import Any + +from ..keyboard.mappings import KEYMAP + +from . import check_string_in_list + +from .basic import valid_number + + +# ===== +def valid_hid_keyboard_output(arg: Any) -> str: + return check_string_in_list(arg, "Keyboard output", ["usb", "ps2", ""]) + + +def valid_hid_mouse_output(arg: Any) -> str: + return check_string_in_list(arg, "Mouse output", ["usb", "usb_rel", "ps2", ""]) + + +def valid_hid_key(arg: Any) -> str: + return check_string_in_list(arg, "Keyboard key", KEYMAP, lower=False) + + +def valid_hid_mouse_move(arg: Any) -> int: + arg = valid_number(arg, name="Mouse move") + return min(max(-32768, arg), 32767) + + +def valid_hid_mouse_button(arg: Any) -> str: + return check_string_in_list(arg, "Mouse button", ["left", "right", "middle", "up", "down"]) + + +def valid_hid_mouse_delta(arg: Any) -> int: + arg = valid_number(arg, name="Mouse delta") + return min(max(-127, arg), 127) diff --git a/kvmd/validators/kvm.py b/kvmd/validators/kvm.py index 1122c233..16f8e59b 100644 --- a/kvmd/validators/kvm.py +++ b/kvmd/validators/kvm.py @@ -25,8 +25,6 @@ from typing import Set from typing import Optional from typing import Any -from ..keyboard.mappings import KEYMAP - from . import raise_error from . import check_string_in_list from . import check_re_match @@ -83,33 +81,6 @@ def valid_stream_resolution(arg: Any) -> str: # ===== -def valid_hid_keyboard_output(arg: Any) -> str: - return check_string_in_list(arg, "Keyboard output", ["usb", "ps2", ""]) - - -def valid_hid_mouse_output(arg: Any) -> str: - return check_string_in_list(arg, "Mouse output", ["usb", "usb_rel", "ps2", ""]) - - -def valid_hid_key(arg: Any) -> str: - return check_string_in_list(arg, "HID key", KEYMAP, lower=False) - - -def valid_hid_mouse_move(arg: Any) -> int: - arg = valid_number(arg, name="HID mouse move") - return min(max(-32768, arg), 32767) - - -def valid_hid_mouse_button(arg: Any) -> str: - return check_string_in_list(arg, "HID mouse button", ["left", "right", "middle", "up", "down"]) - - -def valid_hid_mouse_delta(arg: Any) -> int: - arg = valid_number(arg, name="HID mouse delta") - return min(max(-127, arg), 127) - - -# ===== def valid_ugpio_driver(arg: Any, variants: Optional[Set[str]]=None) -> str: name = "GPIO driver" arg = check_len(check_re_match(arg, name, r"^[a-zA-Z_][a-zA-Z0-9_-]*$"), name, 255) diff --git a/testenv/tests/validators/test_hid.py b/testenv/tests/validators/test_hid.py new file mode 100644 index 00000000..dba7dfe6 --- /dev/null +++ b/testenv/tests/validators/test_hid.py @@ -0,0 +1,98 @@ +# ========================================================================== # +# # +# KVMD - The main Pi-KVM daemon. # +# # +# Copyright (C) 2018 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program 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 General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +# ========================================================================== # + + +from typing import Any + +import pytest + +from kvmd.keyboard.mappings import KEYMAP + +from kvmd.validators import ValidatorError +from kvmd.validators.hid import valid_hid_key +from kvmd.validators.hid import valid_hid_mouse_move +from kvmd.validators.hid import valid_hid_mouse_button +from kvmd.validators.hid import valid_hid_mouse_delta + + +# ===== +def test_ok__valid_hid_key() -> None: + for key in KEYMAP: + print(valid_hid_key(key)) + print(valid_hid_key(key + " ")) + + [email protected]("arg", ["test", "", None, "keya"]) +def test_fail__valid_hid_key(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_hid_key(arg)) + + +# ===== [email protected]("arg", [-20000, "1 ", "-1", 1, -1, 0, "20000 "]) +def test_ok__valid_hid_mouse_move(arg: Any) -> None: + assert valid_hid_mouse_move(arg) == int(str(arg).strip()) + + +def test_ok__valid_hid_mouse_move__m50000() -> None: + assert valid_hid_mouse_move(-50000) == -32768 + + +def test_ok__valid_hid_mouse_move__p50000() -> None: + assert valid_hid_mouse_move(50000) == 32767 + + [email protected]("arg", ["test", "", None, 1.1]) +def test_fail__valid_hid_mouse_move(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_hid_mouse_move(arg)) + + +# ===== [email protected]("arg", ["LEFT ", "RIGHT ", "Up ", " Down", " MiDdLe "]) +def test_ok__valid_hid_mouse_button(arg: Any) -> None: + assert valid_hid_mouse_button(arg) == arg.strip().lower() + + [email protected]("arg", ["test", "", None]) +def test_fail__valid_hid_mouse_button(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_hid_mouse_button(arg)) + + +# ===== [email protected]("arg", [-100, "1 ", "-1", 1, -1, 0, "100 "]) +def test_ok__valid_hid_mouse_delta(arg: Any) -> None: + assert valid_hid_mouse_delta(arg) == int(str(arg).strip()) + + +def test_ok__valid_hid_mouse_delta__m200() -> None: + assert valid_hid_mouse_delta(-200) == -127 + + +def test_ok__valid_hid_mouse_delta__p200() -> None: + assert valid_hid_mouse_delta(200) == 127 + + [email protected]("arg", ["test", "", None, 1.1]) +def test_fail__valid_hid_mouse_delta(arg: Any) -> None: + with pytest.raises(ValidatorError): + print(valid_hid_mouse_delta(arg)) diff --git a/testenv/tests/validators/test_kvm.py b/testenv/tests/validators/test_kvm.py index 5e758f18..95c71d99 100644 --- a/testenv/tests/validators/test_kvm.py +++ b/testenv/tests/validators/test_kvm.py @@ -25,8 +25,6 @@ from typing import Any import pytest -from kvmd.keyboard.mappings import KEYMAP - from kvmd.validators import ValidatorError from kvmd.validators.kvm import valid_atx_power_action from kvmd.validators.kvm import valid_atx_button @@ -35,10 +33,6 @@ from kvmd.validators.kvm import valid_log_seek from kvmd.validators.kvm import valid_stream_quality from kvmd.validators.kvm import valid_stream_fps from kvmd.validators.kvm import valid_stream_resolution -from kvmd.validators.kvm import valid_hid_key -from kvmd.validators.kvm import valid_hid_mouse_move -from kvmd.validators.kvm import valid_hid_mouse_button -from kvmd.validators.kvm import valid_hid_mouse_delta from kvmd.validators.kvm import valid_ugpio_driver from kvmd.validators.kvm import valid_ugpio_channel from kvmd.validators.kvm import valid_ugpio_mode @@ -142,71 +136,6 @@ def test_fail__valid_stream_resolution(arg: Any) -> None: # ===== -def test_ok__valid_hid_key() -> None: - for key in KEYMAP: - print(valid_hid_key(key)) - print(valid_hid_key(key + " ")) - - [email protected]("arg", ["test", "", None, "keya"]) -def test_fail__valid_hid_key(arg: Any) -> None: - with pytest.raises(ValidatorError): - print(valid_hid_key(arg)) - - -# ===== [email protected]("arg", [-20000, "1 ", "-1", 1, -1, 0, "20000 "]) -def test_ok__valid_hid_mouse_move(arg: Any) -> None: - assert valid_hid_mouse_move(arg) == int(str(arg).strip()) - - -def test_ok__valid_hid_mouse_move__m50000() -> None: - assert valid_hid_mouse_move(-50000) == -32768 - - -def test_ok__valid_hid_mouse_move__p50000() -> None: - assert valid_hid_mouse_move(50000) == 32767 - - [email protected]("arg", ["test", "", None, 1.1]) -def test_fail__valid_hid_mouse_move(arg: Any) -> None: - with pytest.raises(ValidatorError): - print(valid_hid_mouse_move(arg)) - - -# ===== [email protected]("arg", ["LEFT ", "RIGHT ", "Up ", " Down", " MiDdLe "]) -def test_ok__valid_hid_mouse_button(arg: Any) -> None: - assert valid_hid_mouse_button(arg) == arg.strip().lower() - - [email protected]("arg", ["test", "", None]) -def test_fail__valid_hid_mouse_button(arg: Any) -> None: - with pytest.raises(ValidatorError): - print(valid_hid_mouse_button(arg)) - - -# ===== [email protected]("arg", [-100, "1 ", "-1", 1, -1, 0, "100 "]) -def test_ok__valid_hid_mouse_delta(arg: Any) -> None: - assert valid_hid_mouse_delta(arg) == int(str(arg).strip()) - - -def test_ok__valid_hid_mouse_delta__m200() -> None: - assert valid_hid_mouse_delta(-200) == -127 - - -def test_ok__valid_hid_mouse_delta__p200() -> None: - assert valid_hid_mouse_delta(200) == 127 - - [email protected]("arg", ["test", "", None, 1.1]) -def test_fail__valid_hid_mouse_delta(arg: Any) -> None: - with pytest.raises(ValidatorError): - print(valid_hid_mouse_delta(arg)) - - -# ===== @pytest.mark.parametrize("validator", [valid_ugpio_driver, valid_ugpio_channel]) @pytest.mark.parametrize("arg", [ "test-", |