summaryrefslogtreecommitdiff
path: root/testenv/tests/validators/test_os.py
diff options
context:
space:
mode:
Diffstat (limited to 'testenv/tests/validators/test_os.py')
-rw-r--r--testenv/tests/validators/test_os.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/testenv/tests/validators/test_os.py b/testenv/tests/validators/test_os.py
new file mode 100644
index 00000000..b280b4b3
--- /dev/null
+++ b/testenv/tests/validators/test_os.py
@@ -0,0 +1,118 @@
+# ========================================================================== #
+# #
+# 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/>. #
+# #
+# ========================================================================== #
+
+
+import os
+
+from typing import List
+from typing import Any
+
+import pytest
+
+from kvmd.validators import ValidatorError
+from kvmd.validators.os import valid_abs_path
+from kvmd.validators.os import valid_abs_path_exists
+from kvmd.validators.os import valid_unix_mode
+from kvmd.validators.os import valid_command
+
+
+# =====
[email protected]("arg, retval", [
+ ("/..", "/"),
+ ("/root/..", "/"),
+ ("/root", "/root"),
+ ("/f/o/o/b/a/r", "/f/o/o/b/a/r"),
+ ("~", os.path.abspath(".") + "/~"),
+ ("/foo~", "/foo~"),
+ ("/foo/~", "/foo/~"),
+ (".", os.path.abspath(".")),
+])
+def test_ok__valid_abs_path(arg: Any, retval: str) -> None:
+ assert valid_abs_path(arg) == retval
+
+
[email protected]("arg", ["", " ", None])
+def test_fail__valid_abs_path(arg: Any) -> None:
+ with pytest.raises(ValidatorError):
+ print(valid_abs_path(arg))
+
+
+# =====
[email protected]("arg, retval", [
+ ("/..", "/"),
+ ("/root/..", "/"),
+ ("/root", "/root"),
+ (".", os.path.abspath(".")),
+])
+def test_ok__valid_abs_path_exists(arg: Any, retval: str) -> None:
+ assert valid_abs_path_exists(arg) == retval
+
+
+ "/f/o/o/b/a/r",
+ "~",
+ "/foo~",
+ "/foo/~",
+ "",
+ None,
+])
+def test_fail__valid_abs_path_exists(arg: Any) -> None:
+ with pytest.raises(ValidatorError):
+ print(valid_abs_path_exists(arg))
+
+
+# =====
[email protected]("arg", [0, 5, "1000"])
+def test_ok__valid_unix_mode(arg: Any) -> None:
+ value = valid_unix_mode(arg)
+ assert type(value) == int # pylint: disable=unidiomatic-typecheck
+ assert value == int(str(value).strip())
+
+
[email protected]("arg", ["test", "", None, -6, "-6", "5.0"])
+def test_fail__valid_unix_mode(arg: Any) -> None:
+ with pytest.raises(ValidatorError):
+ print(valid_unix_mode(arg))
+
+
+# =====
[email protected]("arg, retval", [
+ (["/bin/true"], ["/bin/true"]),
+ (["/bin/true", 1, 2, 3], ["/bin/true", "1", "2", "3"]),
+ ("/bin/true, 1, 2, 3,", ["/bin/true", "1", "2", "3"]),
+ ("/bin/true", ["/bin/true"]),
+])
+def test_ok__valid_command(arg: Any, retval: List[str]) -> None:
+ assert valid_command(arg) == retval
+
+
+ ["/bin/blahblahblah"],
+ ["/bin/blahblahblah", 1, 2, 3],
+ [" "],
+ [],
+ "/bin/blahblahblah, 1, 2, 3,",
+ "/bin/blahblahblah",
+ " ",
+])
+def test_fail__valid_command(arg: Any) -> None:
+ with pytest.raises(ValidatorError):
+ print(valid_command(arg))