refactoring

This commit is contained in:
Devaev Maxim 2020-05-29 17:03:41 +03:00
parent ef8b6cfda5
commit 3389dbe048
5 changed files with 25 additions and 6 deletions

View File

@ -37,7 +37,7 @@ from ....plugins.hid import BaseHid
from ....validators import raise_error
from ....validators.basic import valid_bool
from ....validators.basic import valid_number
from ....validators.basic import valid_int_f0
from ....validators.os import valid_printable_filename
@ -98,7 +98,7 @@ class HidApi:
@exposed_http("POST", "/hid/print")
async def __print_handler(self, request: Request) -> Response:
text = await request.text()
limit = int(valid_number(request.query.get("limit", "1024"), min=0, type=int))
limit = int(valid_int_f0(request.query.get("limit", "1024")))
if limit > 0:
text = text[:limit]
symmap = self.__ensure_symmap(request.query.get("keymap", self.__default_keymap_name))

View File

@ -31,7 +31,7 @@ from typing import Optional
import psutil
from ...validators.basic import valid_bool
from ...validators.basic import valid_number
from ...validators.basic import valid_int_f0
from ...validators.os import valid_abs_file
@ -90,7 +90,7 @@ def main(argv: Optional[List[str]]=None) -> None:
description="KVMD OTG-MSD low-level hand tool",
parents=[parent_parser],
)
parser.add_argument("-i", "--instance", default=0, type=(lambda arg: valid_number(arg, min=0)),
parser.add_argument("-i", "--instance", default=0, type=valid_int_f0,
metavar="<N>", help="Drive instance (0 for KVMD drive)")
parser.add_argument("--unlock", action="store_true",
help="Send SIGUSR1 to MSD kernel thread")

View File

@ -30,7 +30,7 @@ import pam
from ...yamlconf import Option
from ...validators.basic import valid_number
from ...validators.basic import valid_int_f0
from ...validators.auth import valid_users_list
from ...logging import get_logger
@ -63,7 +63,7 @@ class Plugin(BaseAuthService):
"service": Option("login"),
"allow_users": Option([], type=valid_users_list),
"deny_users": Option([], type=valid_users_list),
"allow_uids_at": Option(0, type=(lambda arg: valid_number(arg, min=0))),
"allow_uids_at": Option(0, type=valid_int_f0),
}
async def authorize(self, user: str, passwd: str) -> bool:

View File

@ -84,6 +84,10 @@ def valid_number(
return arg
def valid_int_f0(arg: Any) -> int:
return int(valid_number(arg, min=0))
def valid_int_f1(arg: Any) -> int:
return int(valid_number(arg, min=1))

View File

@ -28,6 +28,7 @@ import pytest
from kvmd.validators import ValidatorError
from kvmd.validators.basic import valid_bool
from kvmd.validators.basic import valid_number
from kvmd.validators.basic import valid_int_f0
from kvmd.validators.basic import valid_int_f1
from kvmd.validators.basic import valid_float_f0
from kvmd.validators.basic import valid_float_f01
@ -82,6 +83,20 @@ def test_fail__valid_number__min_max(arg: Any) -> None: # pylint: disable=inval
print(valid_number(arg, -5, 5))
# =====
@pytest.mark.parametrize("arg", [0, 1, 5, "5 "])
def test_ok__valid_int_f0(arg: Any) -> None:
value = valid_int_f0(arg)
assert type(value) == int # pylint: disable=unidiomatic-typecheck
assert value == int(str(arg).strip())
@pytest.mark.parametrize("arg", ["test", "", None, -6, "-6 ", "5.0"])
def test_fail__valid_int_f0(arg: Any) -> None:
with pytest.raises(ValidatorError):
print(valid_int_f0(arg))
# =====
@pytest.mark.parametrize("arg", [1, 5, "5 "])
def test_ok__valid_int_f1(arg: Any) -> None: