some validation

This commit is contained in:
Devaev Maxim 2019-10-15 05:29:01 +03:00
parent a88ad42501
commit e58ad66da9
3 changed files with 58 additions and 3 deletions

View File

@ -68,6 +68,8 @@ from ..validators.kvm import valid_stream_quality
from ..validators.kvm import valid_stream_fps
from ..validators.hw import valid_gpio_pin_optional
from ..validators.hw import valid_otg_gadget
from ..validators.hw import valid_otg_id
# =====
@ -247,9 +249,9 @@ def _get_config_scheme() -> Dict:
},
"otg": {
"gadget": Option("kvmd"),
"vendor_id": Option(0x1D6B, type=valid_number), # Linux Foundation
"product_id": Option(0x0104, type=valid_number), # Multifunction Composite Gadget
"gadget": Option("kvmd", type=valid_otg_gadget),
"vendor_id": Option(0x1D6B, type=valid_otg_id), # Linux Foundation
"product_id": Option(0x0104, type=valid_otg_id), # Multifunction Composite Gadget
"manufacturer": Option("Pi-KVM"),
"product": Option("Composite KVM Device"),
"serial_number": Option("CAFEBABE"),

View File

@ -23,6 +23,7 @@
from typing import Any
from . import check_in_list
from . import check_re_match
from .basic import valid_number
@ -40,3 +41,11 @@ def valid_gpio_pin(arg: Any) -> int:
def valid_gpio_pin_optional(arg: Any) -> int:
return int(valid_number(arg, min=-1, name="optional GPIO pin"))
def valid_otg_gadget(arg: Any) -> str:
return check_re_match(arg, "OTG gadget name", r"^[a-z_][a-z0-9_-]*$")[:255]
def valid_otg_id(arg: Any) -> int:
return int(valid_number(arg, min=0, max=65535, name="OTG ID"))

View File

@ -28,6 +28,8 @@ from kvmd.validators import ValidatorError
from kvmd.validators.hw import valid_tty_speed
from kvmd.validators.hw import valid_gpio_pin
from kvmd.validators.hw import valid_gpio_pin_optional
from kvmd.validators.hw import valid_otg_gadget
from kvmd.validators.hw import valid_otg_id
# =====
@ -70,3 +72,45 @@ def test_ok__valid_gpio_pin_optional(arg: Any) -> None:
def test_fail__valid_gpio_pin_optional(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_gpio_pin_optional(arg))
# =====
@pytest.mark.parametrize("arg", [
"test-",
"glados",
"test",
"_",
"_foo_bar_",
" aix",
])
def test_ok__valid_otg_gadget(arg: Any) -> None:
assert valid_otg_gadget(arg) == arg.strip()
@pytest.mark.parametrize("arg", [
"тест",
"-molestia",
"te~st",
"-",
"-foo_bar",
" ",
"",
None,
])
def test_fail__valid_otg_gadget(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_otg_gadget(arg))
# =====
@pytest.mark.parametrize("arg", ["0 ", 0, 1, 13, 65535])
def test_ok__valid_otg_id(arg: Any) -> None:
value = valid_otg_id(arg)
assert type(value) == int # pylint: disable=unidiomatic-typecheck
assert value == int(str(arg).strip())
@pytest.mark.parametrize("arg", ["test", "", None, -1, -13, 1.1, 65534.5, 65536])
def test_fail__valid_otg_id(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_otg_id(arg))