openshift_check_test.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import pytest
  2. from openshift_checks import OpenShiftCheck, OpenShiftCheckException
  3. from openshift_checks import load_checks
  4. # Fixtures
  5. @pytest.fixture()
  6. def task_vars():
  7. return dict(foo=42, bar=dict(baz="openshift"))
  8. @pytest.fixture(params=[
  9. ("notfound",),
  10. ("multiple", "keys", "not", "in", "task_vars"),
  11. ])
  12. def missing_keys(request):
  13. return request.param
  14. # Tests
  15. def test_OpenShiftCheck_init():
  16. class TestCheck(OpenShiftCheck):
  17. name = "test_check"
  18. run = NotImplemented
  19. # execute_module required at init if it will be used
  20. with pytest.raises(RuntimeError) as excinfo:
  21. TestCheck().execute_module("foo")
  22. assert 'execute_module' in str(excinfo.value)
  23. execute_module = object()
  24. # initialize with positional argument
  25. check = TestCheck(execute_module)
  26. assert check._execute_module == execute_module
  27. # initialize with keyword argument
  28. check = TestCheck(execute_module=execute_module)
  29. assert check._execute_module == execute_module
  30. assert check.task_vars == {}
  31. assert check.tmp is None
  32. def test_subclasses():
  33. """OpenShiftCheck.subclasses should find all subclasses recursively."""
  34. class TestCheck1(OpenShiftCheck):
  35. pass
  36. class TestCheck2(OpenShiftCheck):
  37. pass
  38. class TestCheck1A(TestCheck1):
  39. pass
  40. local_subclasses = set([TestCheck1, TestCheck1A, TestCheck2])
  41. known_subclasses = set(OpenShiftCheck.subclasses())
  42. assert local_subclasses - known_subclasses == set(), "local_subclasses should be a subset of known_subclasses"
  43. def test_load_checks():
  44. """Loading checks should load and return Python modules."""
  45. modules = load_checks()
  46. assert modules
  47. def dummy_check(task_vars):
  48. class TestCheck(OpenShiftCheck):
  49. name = "dummy"
  50. run = NotImplemented
  51. return TestCheck(task_vars=task_vars)
  52. @pytest.mark.parametrize("keys,expected", [
  53. (("foo",), 42),
  54. (("bar", "baz"), "openshift"),
  55. ])
  56. def test_get_var_ok(task_vars, keys, expected):
  57. assert dummy_check(task_vars).get_var(*keys) == expected
  58. def test_get_var_error(task_vars, missing_keys):
  59. with pytest.raises(OpenShiftCheckException):
  60. dummy_check(task_vars).get_var(*missing_keys)
  61. def test_get_var_default(task_vars, missing_keys):
  62. default = object()
  63. assert dummy_check(task_vars).get_var(*missing_keys, default=default) == default