File refactor-unittest-to-pytest.diff of Package cobbler
Index: cobbler-3.0.0+git20190222.9e502a9d/.dockerignore
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/.dockerignore
@@ -0,0 +1,13 @@
+# Created by .ignore support plugin (hsz.mobi)
+# Idea settings
+.idea/
+
+# Python venvs
+venv/
+venv3/
+
+# Coverage
+covhtml/
+
+# Python stuff
+**/__pycache__
Index: cobbler-3.0.0+git20190222.9e502a9d/Dockerfile
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/Dockerfile
+++ cobbler-3.0.0+git20190222.9e502a9d/Dockerfile
@@ -9,7 +9,7 @@ COPY . /test_dir
VOLUME [ "/sys/fs/cgroup" ]
-RUN tests/setup-test-docker.sh
+RUN ["/bin/bash", "-c", "tests/setup-test-docker.sh"]
# Set this as an entrypoint
CMD ["/usr/lib/systemd/systemd", "--system"]
Index: cobbler-3.0.0+git20190222.9e502a9d/cobbler/remote.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/cobbler/remote.py
+++ cobbler-3.0.0+git20190222.9e502a9d/cobbler/remote.py
@@ -724,28 +724,28 @@ class CobblerXMLRPCInterface(object):
self.api.remove_item(what, name, delete=True, with_triggers=True, recursive=recursive, logger=self.logger)
return True
- def remove_distro(self, name, token, recursive=1):
+ def remove_distro(self, name, token, recursive=True):
return self.remove_item("distro", name, token, recursive)
- def remove_profile(self, name, token, recursive=1):
+ def remove_profile(self, name, token, recursive=True):
return self.remove_item("profile", name, token, recursive)
- def remove_system(self, name, token, recursive=1):
+ def remove_system(self, name, token, recursive=True):
return self.remove_item("system", name, token, recursive)
- def remove_repo(self, name, token, recursive=1):
+ def remove_repo(self, name, token, recursive=True):
return self.remove_item("repo", name, token, recursive)
- def remove_image(self, name, token, recursive=1):
+ def remove_image(self, name, token, recursive=True):
return self.remove_item("image", name, token, recursive)
- def remove_mgmtclass(self, name, token, recursive=1):
+ def remove_mgmtclass(self, name, token, recursive=True):
return self.remove_item("mgmtclass", name, token, recursive)
- def remove_package(self, name, token, recursive=1):
+ def remove_package(self, name, token, recursive=True):
return self.remove_item("package", name, token, recursive)
- def remove_file(self, name, token, recursive=1):
+ def remove_file(self, name, token, recursive=True):
return self.remove_item("file", name, token, recursive)
def copy_item(self, what, object_id, newname, token=None):
Index: cobbler-3.0.0+git20190222.9e502a9d/setup.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/setup.py
+++ cobbler-3.0.0+git20190222.9e502a9d/setup.py
@@ -20,7 +20,6 @@ from distutils.command.build import buil
from configparser import ConfigParser
import codecs
-import unittest
from coverage import Coverage
import pwd
import shutil
@@ -396,14 +395,13 @@ class test_command(Command):
pass
def run(self):
- tests = unittest.TestLoader().discover("tests", pattern="*[t|T]est*.py")
- runner = unittest.TextTestRunner(verbosity=1)
+ import pytest
cov = Coverage()
cov.erase()
cov.start()
- result = runner.run(tests)
+ result = pytest.main()
cov.stop()
cov.save()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/cobbler_cli_direct_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/cobbler_cli_direct_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/cobbler_cli_direct_test.py
@@ -1,7 +1,7 @@
import os
import re
import shlex
-import unittest
+import pytest
from cobbler import utils
dummy_file_path = "/root/dummy"
@@ -32,57 +32,45 @@ def get_last_line(lines):
return lines[i]
-class CobblerCliTestDirect(unittest.TestCase):
+class CobblerCliTestDirect:
"""
Tests Cobbler CLI direct commands
"""
- def setUp(self):
- """
- Set up
- """
- return
-
- def tearDown(self):
- """
- Cleanup here
- """
- return
-
def test_cobbler_version(self):
"""Runs 'cobbler version'"""
output = run_cmd("cobbler version")
line = output.split("\n")[0]
match_obj = re.match(r"Cobbler \d+\.\d+\.\d+", line)
- self.assertTrue(match_obj is not None)
+ assert match_obj is not None
def test_cobbler_status(self):
"""Runs 'cobbler status'"""
output = run_cmd("cobbler status")
lines = output.split("\n")
match_obj = re.match(r"ip\s+|target\s+|start\s+|state\s+", lines[0])
- self.assertTrue(match_obj is not None)
+ assert match_obj is not None
def test_cobbler_sync(self):
"""Runs 'cobbler sync'"""
output = run_cmd("cobbler sync")
lines = output.split("\n")
- self.assertEqual("*** TASK COMPLETE ***", get_last_line(lines))
+ assert "*** TASK COMPLETE ***" == get_last_line(lines)
def test_cobbler_signature_report(self):
"""Runs 'cobbler signature report'"""
output = run_cmd("cobbler signature report")
lines = output.split("\n")
- self.assertTrue("Currently loaded signatures:" == lines[0])
+ assert "Currently loaded signatures:" == lines[0]
expected_output = r"\d+ breeds with \d+ total signatures loaded"
match_obj = re.match(expected_output, get_last_line(lines))
- self.assertTrue(match_obj is not None)
+ assert match_obj is not None
def test_cobbler_signature_update(self):
"""Runs 'cobbler signature update'"""
output = run_cmd("cobbler signature update")
lines = output.split("\n")
- self.assertEqual("*** TASK COMPLETE ***", get_last_line(lines))
+ assert "*** TASK COMPLETE ***" == get_last_line(lines)
def test_cobbler_acl_adduser(self):
"""Runs 'cobbler aclsetup --adduser'"""
@@ -115,13 +103,13 @@ class CobblerCliTestDirect(unittest.Test
output = run_cmd("cobbler buildiso")
lines = output.split("\n")
- self.assertEqual("*** TASK COMPLETE ***", get_last_line(lines))
- self.assertTrue(os.path.isfile("/root/generated.iso"))
+ assert "*** TASK COMPLETE ***" == get_last_line(lines)
+ assert os.path.isfile("/root/generated.iso")
def _assert_list_section(self, lines, start_line, section_name):
i = start_line
- self.assertEqual(lines[i], "%s:" % section_name)
+ assert lines[i] == "%s:" % section_name
i += 1
while lines[i] != "":
i += 1
@@ -146,10 +134,10 @@ class CobblerCliTestDirect(unittest.Test
def _assert_report_section(self, lines, start_line, section_name):
i = start_line
- self.assertEqual(lines[i], "%s:" % section_name)
+ assert lines[i] == "%s:" % section_name
i += 1
match_obj = re.match(r"=+$", lines[i].strip())
- self.assertTrue(match_obj is not None)
+ assert match_obj is not None
i += 1
while i < len(lines) - 1 and re.match(r"=+$", lines[i + 1]) is None:
while i < len(lines) and lines[i] != "":
@@ -175,7 +163,7 @@ class CobblerCliTestDirect(unittest.Test
def test_cobbler_getloaders(self):
output = run_cmd("cobbler get-loaders")
lines = output.split("\n")
- self.assertEqual("*** TASK COMPLETE ***", get_last_line(lines))
+ assert "*** TASK COMPLETE ***" == get_last_line(lines)
def test_cobbler_hardlink(self):
# TODO: test cobbler hardlink
@@ -188,7 +176,3 @@ class CobblerCliTestDirect(unittest.Test
def test_cobbler_validate_autoinstalls(self):
# TODO: test cobbler validateks
raise NotImplementedError()
-
-
-if __name__ == '__main__':
- unittest.main()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/cobbler_cli_object_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/cobbler_cli_object_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/cobbler_cli_object_test.py
@@ -1,7 +1,7 @@
import os
import re
import shlex
-import unittest
+import pytest
from cobbler import utils
@@ -49,32 +49,38 @@ def get_last_line(lines):
return lines[i]
-class CobblerCliTestObject(unittest.TestCase):
+@pytest.fixture(scope="class")
+def setup():
"""
- Test CLI commands on objects
+ Initializes testcase
"""
- def setUp(self):
- """
- Initializes testcase
- """
+ # create files if necessary
+ if not os.path.exists(dummy_file_path):
+ open(dummy_file_path, 'w').close()
- # create files if necessary
- if not os.path.exists(dummy_file_path):
- open(dummy_file_path, 'w').close()
-
- # @TODO: delete objects which will be added if they exist
- # currently, if tests fail, tester may have to delete objects
- # manually before running tests again
+ # TODO: delete objects which will be added if they exist
+ # currently, if tests fail, tester may have to delete objects
+ # manually before running tests again
- def tearDown(self):
- """
- Cleans up testcase
- """
- # remove files
- if os.path.exists(dummy_file_path):
- os.remove(dummy_file_path)
+@pytest.fixture(scope="class")
+def teardown():
+ """
+ Cleans up testcase
+ """
+
+ yield
+ # remove files
+ if os.path.exists(dummy_file_path):
+ os.remove(dummy_file_path)
+
+
+@pytest.mark.usefixtures("setup", "teardown")
+class CobblerCliTestObject:
+ """
+ Test CLI commands on objects
+ """
def list_objects(self, object_type):
"""
@@ -120,7 +126,7 @@ class CobblerCliTestObject(unittest.Test
cur_object = match_obj.group(1)
self.assertTrue(match_obj.group(1) in objects)
found_objects[cur_object] = True
- self.assertTrue(False not in found_objects.values())
+ assert False not in found_objects.values()
# cobbler <type> report <name>
output = run_cmd("cobbler %s report --name=%s" % (object_type, name))
@@ -130,7 +136,7 @@ class CobblerCliTestObject(unittest.Test
for line in lines:
if re.match(regex, line):
found = True
- self.assertTrue(found)
+ assert found
# cobbler <type> edit
cmd = "cobbler %s edit --name=%s --%s='%s'" % (object_type, name, attr["name"], attr["value"])
@@ -143,19 +149,19 @@ class CobblerCliTestObject(unittest.Test
for line in lines:
if re.match(regex, line):
found = True
- self.assertTrue(found)
+ assert found
# cobbler <type> find
cmd = "cobbler %s find --%s='%s'" % (object_type, attr["name"], attr["value"])
output = run_cmd(cmd)
lines = output.split("\n")
- self.assertTrue(len(lines) >= 1)
+ assert len(lines) >= 1
# cobbler <type> copy
run_cmd("cobbler %s copy --name=%s --newname=%s" % (object_type, name, "%s-copy" % name))
new_objects = self.list_objects(object_type)
- self.assertTrue(len(new_objects) == len(objects) + 1)
+ assert len(new_objects) == len(objects) + 1
# cobbler <type> rename
cmd = "cobbler %s rename --name=%s --newname=%s" % (object_type, name, new_name)
@@ -167,7 +173,7 @@ class CobblerCliTestObject(unittest.Test
run_cmd("cobbler %s remove --name=%s-copy" % (object_type, name))
new_objects = self.list_objects(object_type)
- self.assertTrue(len(new_objects) == len(objects))
+ assert len(new_objects) == len(objects)
def test_distro(self, remove):
@@ -186,7 +192,7 @@ class CobblerCliTestObject(unittest.Test
output = run_cmd(cmd)
new_distros = self.list_objects(item_type)
- self.assertTrue(len(new_distros) == len(distros) + 1)
+ assert len(new_distros) == len(distros) + 1
self.test_generic_commands(item_type, distro_name, attr, new_distros)
@@ -210,7 +216,7 @@ class CobblerCliTestObject(unittest.Test
run_cmd(cmd)
new_profiles = self.list_objects(item_type)
- self.assertTrue(len(new_profiles) == len(profiles) + 1)
+ assert len(new_profiles) == len(profiles) + 1
self.test_generic_commands(item_type, profile_name, attr, new_profiles)
@@ -234,7 +240,7 @@ class CobblerCliTestObject(unittest.Test
run_cmd(cmd)
new_systems = self.list_objects(item_type)
- self.assertTrue(len(new_systems) == len(systems) + 1)
+ assert len(new_systems) == len(systems) + 1
self.test_generic_commands(item_type, system_name, attr, new_systems)
@@ -257,7 +263,7 @@ class CobblerCliTestObject(unittest.Test
output = run_cmd(cmd)
new_images = self.list_objects(item_type)
- self.assertTrue(len(new_images) == len(images) + 1)
+ assert len(new_images) == len(images) + 1
self.test_generic_commands(item_type, image_name, attr, new_images)
@@ -280,7 +286,7 @@ class CobblerCliTestObject(unittest.Test
output = run_cmd(cmd)
new_repos = self.list_objects(item_type)
- self.assertTrue(len(new_repos) == len(repos) + 1)
+ assert len(new_repos) == len(repos) + 1
self.test_generic_commands(item_type, repo_name, attr, new_repos)
@@ -303,7 +309,7 @@ class CobblerCliTestObject(unittest.Test
output = run_cmd(cmd)
new_mgmt_classes = self.list_objects(item_type)
- self.assertTrue(len(new_mgmt_classes) == len(mgmt_classes) + 1)
+ assert len(new_mgmt_classes) == len(mgmt_classes) + 1
self.test_generic_commands(item_type, mgmtclass_name, attr, new_mgmt_classes)
@@ -326,13 +332,9 @@ class CobblerCliTestObject(unittest.Test
output = run_cmd(cmd)
new_packages = self.list_objects(item_type)
- self.assertTrue(len(new_packages) == len(packages) + 1)
+ assert len(new_packages) == len(packages) + 1
self.test_generic_commands(item_type, package_name, attr, new_packages)
# cobbler <type> remove
run_cmd("cobbler %s remove --name=%s" % (item_type, package_name))
-
-
-if __name__ == '__main__':
- unittest.main()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/conftest.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/conftest.py
@@ -0,0 +1,68 @@
+import pytest
+
+from cobbler import utils
+
+
+# TODO: scan output of import to build list of imported distros/profiles
+# and compare to expected list. Then use that list to run reports
+# and for later cleanup
+
+
+@pytest.fixture(scope="class")
+def setup():
+ """
+ Setup the import tests. Currently just "pass".
+ """
+ pass
+
+
+@pytest.fixture(scope="class")
+def teardown():
+ """
+ Teardown the import tests. Currently just "pass".
+ """
+ yield
+ pass
+
+
+@pytest.fixture()
+def import_distro(name, path):
+ """
+ Imports a distribution with the cobbler cli-command into a running system.
+ :param name: Name of the distro.
+ :param path: Path to the distro.
+ :return: A touple of the data which is returned by the cobbler-cli-client and the status.
+ """
+ return utils.subprocess_sp(None, ["cobbler", "import", "--name=test-%s" % name, "--path=%s" % path],
+ shell=False)
+
+
+@pytest.fixture()
+def report_distro(name):
+ """
+ Asks the cobbler cli about a report for the given distribution.
+ :param name: Name of the distribution.
+ :return: A touple of the data which is returned by the cobbler-cli-client and the status.
+ """
+ return utils.subprocess_sp(None, ["cobbler", "distro", "report", "--name=test-%s" % name], shell=False)
+
+
+@pytest.fixture()
+def report_profile(name):
+ """
+ Asks the cobbler cli about a report for a given profile.
+ :param name: Name of the profile.
+ :return: A touple of the data which is returned by the cobbler-cli-client and the status.
+ """
+ return utils.subprocess_sp(None, ["cobbler", "profile", "report", "--name=test-%s" % name], shell=False)
+
+
+@pytest.fixture()
+def remove_distro(name):
+ """
+ Performs a remove for a distribution via the cobbler-cli for a given distribution.
+ :param name: Name of the distribution.
+ :return: A touple of the data which is returned by the cobbler-cli-client and the status.
+ """
+ return utils.subprocess_sp(None, ["cobbler", "distro", "remove", "--recursive", "--name=test-%s" % name],
+ shell=False)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/debian_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/debian_import_test.py
@@ -0,0 +1,23 @@
+import pytest
+
+class Test_Debian_Imports():
+ """
+ Tests imports of various distros
+ """
+
+ distros = [
+ {"name": "debian_6.0.5-x86_64", "desc": "Debian Sarge (6.0.5) amd64",
+ "path": "/vagrant/distros/debian_6.0.5_amd64"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_debian_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/freebsd_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/freebsd_import_test.py
@@ -0,0 +1,25 @@
+import pytest
+
+
+class Test_FreeBSD_Imports():
+ """
+ Tests imports of various distros
+ """
+ distros = [
+ {"name": "freebsd8.2-x86_64", "desc": "FreeBSD 8.2 amd64", "path": "/vagrant/distros/freebsd8.2_amd64"},
+ {"name": "freebsd8.3-x86_64", "desc": "FreeBSD 8.3 amd64", "path": "/vagrant/distros/freebsd8.3_amd64"},
+ {"name": "freebsd9.0-i386", "desc": "FreeBSD 9.0 i386", "path": "/vagrant/distros/freebsd9.0_i386"},
+ {"name": "freebsd9.0-x86_64", "desc": "FreeBSD 9.0 amd64", "path": "/vagrant/distros/freebsd9.0_amd64"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_freebsd_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/import_base.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/import_base.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import unittest
-
-from cobbler import utils
-
-
-class CobblerImportTest(unittest.TestCase):
- imported_distros = []
-
- def setUp(self):
- """
- Set up, mounts NFS share
- """
-
- def tearDown(self):
- """
- Cleanup here
- """
- for d in self.imported_distros:
- try:
- (data, rc) = utils.subprocess_sp(None, ["cobbler", "distro", "remove", "--recursive", "--name=%s" % d],
- shell=False)
- except:
- print("Failed to remove distro '%s' during cleanup" % d)
-
-
-def create_import_func(data):
- name = data["name"]
- desc = data["desc"]
- path = data["path"]
-
- def do_import(self):
- print("doing import, name=%s, desc=%s, path=%s" % (name, desc, path))
- (data, rc) = utils.subprocess_sp(None, ["cobbler", "import", "--name=test-%s" % name, "--path=%s" % path],
- shell=False)
- print(data)
- self.assertEqual(rc, 0)
- # TODO: scan output of import to build list of imported distros/profiles
- # and compare to expected list. Then use that list to run reports
- # and for later cleanup
- (data, rc) = utils.subprocess_sp(None, ["cobbler", "distro", "report", "--name=test-%s" % name], shell=False)
- print(data)
- self.assertEqual(rc, 0)
- (data, rc) = utils.subprocess_sp(None, ["cobbler", "profile", "report", "--name=test-%s" % name], shell=False)
- print(data)
- self.assertEqual(rc, 0)
- (data, rc) = utils.subprocess_sp(None, ["cobbler", "distro", "remove", "--recursive", "--name=test-%s" % name],
- shell=False)
- print(data)
- self.assertEqual(rc, 0)
-
- return do_import
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/redhat_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/redhat_import_test.py
@@ -0,0 +1,27 @@
+import pytest
+
+class Test_RedHat_Imports():
+ """
+ Tests imports of various distros
+ """
+ distros = [
+ {"name": "rhel58-x86_64", "desc": "RHEL 5.8 x86_64", "path": "/vagrant/distros/rhel58_x86_64"},
+ {"name": "rhel63-x86_64", "desc": "RHEL 6.3 x86_64", "path": "/vagrant/distros/rhel63_x86_64"},
+ {"name": "centos63-x86_64", "desc": "CentOS 6.3 x86_64", "path": "/vagrant/distros/centos63_x86_64"},
+ {"name": "sl62-x86_64", "desc": "Scientific Linux 6.2 x86_64", "path": "/vagrant/distros/sl62_x86_64"},
+ {"name": "f16-x86_64", "desc": "Fedora 16 x86_64", "path": "/vagrant/distros/f16_x86_64"},
+ {"name": "f17-x86_64", "desc": "Fedora 17 x86_64", "path": "/vagrant/distros/f17_x86_64"},
+ {"name": "f18-x86_64", "desc": "Fedora 18 x86_64", "path": "/vagrant/distros/f18_x86_64"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_redhat_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/suse_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/suse_import_test.py
@@ -0,0 +1,36 @@
+import pytest
+
+
+class Test_Suse_Imports():
+ """
+ Tests imports of various distros
+ """
+ distros = [
+ {"name": "opensuse11.3-i386", "desc": "OpenSuSE 11.3 i586", "path": "/vagrant/distros/opensuse11.3_i586"},
+ {"name": "opensuse11.4-x86_64", "desc": "OpenSuSE 11.4 x86_64", "path": "/vagrant/distros/opensuse11.4_x86_64"},
+ {"name": "opensuse12.1-x86_64", "desc": "OpenSuSE 12.1 x86_64", "path": "/vagrant/distros/opensuse12.1_x86_64"},
+ {"name": "opensuse12.2-i386", "desc": "OpenSuSE 12.2 i586", "path": "/vagrant/distros/opensuse12.2_i586"},
+ {"name": "opensuse12.2-x86_64", "desc": "OpenSuSE 12.2 x86_64", "path": "/vagrant/distros/opensuse12.2_x86_64"},
+ {"name": "opensuse12.3-i386", "desc": "OpenSuSE 12.3 i586", "path": "/vagrant/distros/opensuse12.3_i586"},
+ {"name": "opensuse12.3-x86_64", "desc": "OpenSuSE 12.3 x86_64", "path": "/vagrant/distros/opensuse12.3_x86_64"},
+ {"name": "opensuse13.1-i386", "desc": "OpenSuSE 13.1 i586", "path": "/vagrant/distros/opensuse13.1_i586"},
+ {"name": "opensuse13.1-x86_64", "desc": "OpenSuSE 13.1 x86_64", "path": "/vagrant/distros/opensuse13.1_x86_64"},
+ {"name": "sles11_sp2-i386", "desc": "SLES 11 SP2 i586", "path": "/vagrant/distros/sles11_sp2_i586"},
+ {"name": "sles11_sp2-x86_64", "desc": "SLES 11 SP2 x86_64", "path": "/vagrant/distros/sles11_sp2_x86_64"},
+ {"name": "sles11_sp2-ppc64", "desc": "SLES 11 SP2 ppc64", "path": "/vagrant/distros/sles11_sp2_ppc64"},
+ {"name": "sles11_sp3-i386", "desc": "SLES 11 SP3 i586", "path": "/vagrant/distros/sles11_sp3_i586"},
+ {"name": "sles11_sp3-x86_64", "desc": "SLES 11 SP3 x86_64", "path": "/vagrant/distros/sles11_sp3_x86_64"},
+ {"name": "sles11_sp3-ppc64", "desc": "SLES 11 SP3 ppc64", "path": "/vagrant/distros/sles11_sp3_ppc64"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_suse_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_debian/debian_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_debian/debian_import_test.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_Debian_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "debian_6.0.5-x86_64", "desc": "Debian Sarge (6.0.5) amd64",
- "path": "/vagrant/distros/debian_6.0.5_amd64"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_debian_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_Debian_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_freebsd/freebsd_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_freebsd/freebsd_import_test.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_FreeBSD_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "freebsd8.2-x86_64", "desc": "FreeBSD 8.2 amd64", "path": "/vagrant/distros/freebsd8.2_amd64"},
- {"name": "freebsd8.3-x86_64", "desc": "FreeBSD 8.3 amd64", "path": "/vagrant/distros/freebsd8.3_amd64"},
- {"name": "freebsd9.0-i386", "desc": "FreeBSD 9.0 i386", "path": "/vagrant/distros/freebsd9.0_i386"},
- {"name": "freebsd9.0-x86_64", "desc": "FreeBSD 9.0 amd64", "path": "/vagrant/distros/freebsd9.0_amd64"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_freebsd_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_FreeBSD_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_redhat/redhat_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_redhat/redhat_import_test.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_RedHat_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "rhel58-x86_64", "desc": "RHEL 5.8 x86_64", "path": "/vagrant/distros/rhel58_x86_64"},
- {"name": "rhel63-x86_64", "desc": "RHEL 6.3 x86_64", "path": "/vagrant/distros/rhel63_x86_64"},
- {"name": "centos63-x86_64", "desc": "CentOS 6.3 x86_64", "path": "/vagrant/distros/centos63_x86_64"},
- {"name": "sl62-x86_64", "desc": "Scientific Linux 6.2 x86_64", "path": "/vagrant/distros/sl62_x86_64"},
- {"name": "f16-x86_64", "desc": "Fedora 16 x86_64", "path": "/vagrant/distros/f16_x86_64"},
- {"name": "f17-x86_64", "desc": "Fedora 17 x86_64", "path": "/vagrant/distros/f17_x86_64"},
- {"name": "f18-x86_64", "desc": "Fedora 18 x86_64", "path": "/vagrant/distros/f18_x86_64"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_redhat_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_RedHat_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_suse/suse_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_suse/suse_import_test.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_Suse_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "opensuse11.3-i386", "desc": "OpenSuSE 11.3 i586", "path": "/vagrant/distros/opensuse11.3_i586"},
- {"name": "opensuse11.4-x86_64", "desc": "OpenSuSE 11.4 x86_64", "path": "/vagrant/distros/opensuse11.4_x86_64"},
- {"name": "opensuse12.1-x86_64", "desc": "OpenSuSE 12.1 x86_64", "path": "/vagrant/distros/opensuse12.1_x86_64"},
- {"name": "opensuse12.2-i386", "desc": "OpenSuSE 12.2 i586", "path": "/vagrant/distros/opensuse12.2_i586"},
- {"name": "opensuse12.2-x86_64", "desc": "OpenSuSE 12.2 x86_64", "path": "/vagrant/distros/opensuse12.2_x86_64"},
- {"name": "opensuse12.3-i386", "desc": "OpenSuSE 12.3 i586", "path": "/vagrant/distros/opensuse12.3_i586"},
- {"name": "opensuse12.3-x86_64", "desc": "OpenSuSE 12.3 x86_64", "path": "/vagrant/distros/opensuse12.3_x86_64"},
- {"name": "opensuse13.1-i386", "desc": "OpenSuSE 13.1 i586", "path": "/vagrant/distros/opensuse13.1_i586"},
- {"name": "opensuse13.1-x86_64", "desc": "OpenSuSE 13.1 x86_64", "path": "/vagrant/distros/opensuse13.1_x86_64"},
- {"name": "sles11_sp2-i386", "desc": "SLES 11 SP2 i586", "path": "/vagrant/distros/sles11_sp2_i586"},
- {"name": "sles11_sp2-x86_64", "desc": "SLES 11 SP2 x86_64", "path": "/vagrant/distros/sles11_sp2_x86_64"},
- {"name": "sles11_sp2-ppc64", "desc": "SLES 11 SP2 ppc64", "path": "/vagrant/distros/sles11_sp2_ppc64"},
- {"name": "sles11_sp3-i386", "desc": "SLES 11 SP3 i586", "path": "/vagrant/distros/sles11_sp3_i586"},
- {"name": "sles11_sp3-x86_64", "desc": "SLES 11 SP3 x86_64", "path": "/vagrant/distros/sles11_sp3_x86_64"},
- {"name": "sles11_sp3-ppc64", "desc": "SLES 11 SP3 ppc64", "path": "/vagrant/distros/sles11_sp3_ppc64"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_suse_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_Suse_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_ubuntu/ubuntu_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_ubuntu/ubuntu_import_test.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_Ubuntu_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "ubuntu12.04-server-x86_64", "desc": "Ubuntu Precise (12.04) Server amd64",
- "path": "/vagrant/distros/ubuntu_1204_server_amd64"},
- {"name": "ubuntu12.04.1-server-i386", "desc": "Ubuntu Precise (12.04.1) Server i386",
- "path": "/vagrant/distros/ubuntu_1204_1_server_i386"},
- {"name": "ubuntu12.10-server-x86_64", "desc": "Ubuntu Quantal (12.10) Server amd64",
- "path": "/vagrant/distros/ubuntu_1210_server_amd64"},
- {"name": "ubuntu12.10-server-i386", "desc": "Ubuntu Quantal (12.10) Server i386",
- "path": "/vagrant/distros/ubuntu_1210_server_i386"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_ubuntu_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_Ubuntu_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/test_vmware/vmware_import_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/cli/imports/test_vmware/vmware_import_test.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from tests.cli.imports.import_base import CobblerImportTest
-from tests.cli.imports.import_base import create_import_func
-
-
-class Test_VMWare_Imports(CobblerImportTest):
- """
- Tests imports of various distros
- """
- pass
-
-
-distros = [
- {"name": "vmware_esx_4.0_u1-x86_64", "desc": "VMware ESX 4.0 update1",
- "path": "/vagrant/distros/vmware_esx_4.0_u1_208167_x86_64"},
- {"name": "vmware_esx_4.0_u2-x86_64", "desc": "VMware ESX 4.0 update2",
- "path": "/vagrant/distros/vmware_esx_4.0_u2_261974_x86_64"},
- {"name": "vmware_esxi4.1-x86_64", "desc": "VMware ESXi 4.1",
- "path": "/vagrant/distros/vmware_esxi4.1_348481_x86_64"},
- {"name": "vmware_esxi5.0-x86_64", "desc": "VMware ESXi 5.0",
- "path": "/vagrant/distros/vmware_esxi5.0_469512_x86_64"},
- {"name": "vmware_esxi5.1-x86_64", "desc": "VMware ESXi 5.1",
- "path": "/vagrant/distros/vmware_esxi5.1_799733_x86_64"},
-]
-
-for i in range(0, len(distros)):
- test_func = create_import_func(distros[i])
- test_func.__name__ = 'test_vmware_%02d_import_%s' % (i, distros[i]["name"])
- test_func.__doc__ = "Import of %s" % distros[i]["desc"]
- setattr(Test_VMWare_Imports, test_func.__name__, test_func)
- del test_func
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/ubuntu_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/ubuntu_import_test.py
@@ -0,0 +1,29 @@
+import pytest
+
+
+class Test_Ubuntu_Imports():
+ """
+ Tests imports of various distros
+ """
+ distros = [
+ {"name": "ubuntu12.04-server-x86_64", "desc": "Ubuntu Precise (12.04) Server amd64",
+ "path": "/vagrant/distros/ubuntu_1204_server_amd64"},
+ {"name": "ubuntu12.04.1-server-i386", "desc": "Ubuntu Precise (12.04.1) Server i386",
+ "path": "/vagrant/distros/ubuntu_1204_1_server_i386"},
+ {"name": "ubuntu12.10-server-x86_64", "desc": "Ubuntu Quantal (12.10) Server amd64",
+ "path": "/vagrant/distros/ubuntu_1210_server_amd64"},
+ {"name": "ubuntu12.10-server-i386", "desc": "Ubuntu Quantal (12.10) Server i386",
+ "path": "/vagrant/distros/ubuntu_1210_server_i386"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_ubuntu_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/vmware_import_test.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/cli/imports/vmware_import_test.py
@@ -0,0 +1,32 @@
+import pytest
+
+
+class Test_VMWare_Imports:
+ """
+ Tests imports of various distros
+ """
+
+ distros = [
+ {"name": "vmware_esx_4.0_u1-x86_64", "desc": "VMware ESX 4.0 update1",
+ "path": "/vagrant/distros/vmware_esx_4.0_u1_208167_x86_64"},
+ {"name": "vmware_esx_4.0_u2-x86_64", "desc": "VMware ESX 4.0 update2",
+ "path": "/vagrant/distros/vmware_esx_4.0_u2_261974_x86_64"},
+ {"name": "vmware_esxi4.1-x86_64", "desc": "VMware ESXi 4.1",
+ "path": "/vagrant/distros/vmware_esxi4.1_348481_x86_64"},
+ {"name": "vmware_esxi5.0-x86_64", "desc": "VMware ESXi 5.0",
+ "path": "/vagrant/distros/vmware_esxi5.0_469512_x86_64"},
+ {"name": "vmware_esxi5.1-x86_64", "desc": "VMware ESXi 5.1",
+ "path": "/vagrant/distros/vmware_esxi5.1_799733_x86_64"},
+ ]
+
+ @pytest.mark.skip(reason="Not fixed!")
+ @pytest.mark.parametrize("name, desc, path", distros)
+ def test_vmware_import(self, name, desc, path, import_distro, report_distro, report_profile, remove_distro):
+ (data, rc) = import_distro(name, path)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
+ (data, rc) = report_profile(name)
+ assert rc == 0
+ (data, rc) = remove_distro(name)
+ assert rc == 0
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/conftest.py
===================================================================
--- /dev/null
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/conftest.py
@@ -0,0 +1,58 @@
+import logging
+import sys
+import xmlrpc.client as xmlrpcclient
+
+import pytest
+
+from cobbler.utils import local_get_cobbler_api_url, get_shared_secret
+
+# "import xmlrpc.client" does currently not work. No explanation found anywhere.
+
+
+def pytest_addoption(parser):
+ parser.addoption("-E", action="store", metavar="NAME", help="only run tests matching the environment NAME.")
+
+
+def pytest_configure(config):
+ # register an additional marker
+ config.addinivalue_line("markers", "env(name): mark test to run only on named environment")
+
+
+@pytest.fixture(scope="session")
+def remote(cobbler_xmlrpc_base):
+ """
+
+ :param cobbler_xmlrpc_base:
+ :return:
+ """
+ return cobbler_xmlrpc_base[0]
+
+
+@pytest.fixture(scope="session")
+def token(cobbler_xmlrpc_base):
+ """
+
+ :param cobbler_xmlrpc_base:
+ :return:
+ """
+ return cobbler_xmlrpc_base[1]
+
+
+@pytest.fixture(scope="session")
+def cobbler_xmlrpc_base():
+ """
+ Initialises the api object and makes it available to the test.
+ """
+ # create logger
+ logging.basicConfig(stream=sys.stderr)
+ logger = logging.getLogger("xobbler_xmlrpc_base")
+ logger.setLevel(logging.DEBUG)
+
+ # create XML-RPC client and connect to server
+ api_url = local_get_cobbler_api_url()
+ remote = xmlrpcclient.Server(api_url, allow_none=True)
+ shared_secret = get_shared_secret()
+ token = remote.login("", shared_secret)
+ if not token:
+ sys.exit(1)
+ yield (remote, token)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/misc/create_kvm_guest.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/misc/create_kvm_guest.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/misc/create_kvm_guest.py
@@ -99,7 +99,7 @@ def create_kvm_guest(guest_name, num_vir
@param str os_tree_location path/URL of Linux OS tree
This parameter and os_iso_path are mutually exclusive.
@param str autoinstall_file_location path/URL of automatic installation file
- (autoyast / kickstart / preseed). This parameter and os_tree_location
+ (autoyast / autoinstall / preseed). This parameter and os_tree_location
must be used together
@param str kernel_args extra kernel command line arguments
@raise Exception if unable to create the KVM guest
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/setup-test-docker.sh
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/setup-test-docker.sh
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/setup-test-docker.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/bash
+#!/bin/bash
# SystemD stuff (needs insserv additionally)
zypper -n install systemd insserv; zypper clean
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/background_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/background_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/background_test.py
@@ -1,44 +1,48 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
-class TestBackground(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestBackground:
"""
Class to test various background jobs
"""
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_acletup(self):
# TODO: test remote.background_aclsetup()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_buildiso(self):
# TODO: test remote.background_buildiso()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_dlccontent(self):
# TODO: test remote.background_dlcontent()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_hardlink(self):
# TODO: test remote.background_hardlink()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_import(self):
# TODO: test remote.background_import()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_replicate(self):
# TODO: test remote.background_replicate()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_reposync(self):
# TODO: test remote.background_reposync()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_background_validate_autoinstall_files(self):
# TODO: test remote.background_validate_autoinstall_files()
raise NotImplementedError()
-
-
-if __name__ == '__main__':
- unittest.main()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/cobbler_xmlrpc_base_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/cobbler_xmlrpc_base_test.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import unittest
-import logging
-import sys
-import xmlrpc.client as xmlrpcclient
-from cobbler.utils import local_get_cobbler_api_url, get_shared_secret
-
-# "import xmlrpc.client" does currently not work. No explanation found anywhere.
-
-
-class CobblerXmlRpcBaseTest(unittest.TestCase):
-
- def setUp(self):
- """
- Setup Cobbler XML-RPC connection and login
- """
-
- # create logger
- logging.basicConfig(stream=sys.stderr)
- self.logger = logging.getLogger(self.__class__.__name__)
- self.logger.setLevel(logging.DEBUG)
-
- # create XML-RPC client and connect to server
- api_url = local_get_cobbler_api_url()
- self.remote = xmlrpcclient.Server(api_url, allow_none=True)
- shared_secret = get_shared_secret()
- self.token = self.remote.login("", shared_secret)
- if not self.token:
- sys.exit(1)
-
- def tearDown(self):
- """
- Cleanup here
- """
- return
-
-
-if __name__ == '__main__':
- unittest.main()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/distro_profile_system_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/distro_profile_system_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/distro_profile_system_test.py
@@ -1,6 +1,6 @@
-import pytest
import os
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+
+import pytest
FAKE_INITRD = "initrd1.img"
FAKE_INITRD2 = "initrd2.img"
@@ -13,211 +13,415 @@ TEST_SYSTEM = ""
cleanup_dirs = []
-"""
-Order is currently important:
-self._get_distros()
-self._create_distro()
-self._get_distro()
-self._find_distro()
-self._copy_distro()
-self._rename_distro()
-
-self._get_profiles()
-self._create_profile()
-self._create_subprofile()
-self._get_profile()
-self._find_profile()
-self._copy_profile()
-self._rename_profile()
-self._get_repo_config_for_profile()
-
-self._get_systems()
-self._create_system()
-self._get_system()
-self._find_system()
-self._copy_system()
-self._rename_system()
-self._get_repo_config_for_system()
-
-self._remove_system()
-self._remove_profile()
-self._remove_distro()
-"""
+@pytest.fixture(scope="class")
+def distro_fields(fk_initrd, fk_kernel):
+ """
+
+ :param fk_initrd:
+ :param fk_kernel:
+ :return:
+ """
+ return [
+ # field format: field_name, good value(s), bad value(s)
+ # field order is the order in which they will be set
+ # TODO: include fields with dependencies: fetchable files, boot files, etc.
+ ["arch", ["i386", "x86_64", "ppc", "ppc64"], ["badarch"]],
+ # generic must be last breed to be set so os_version test below will work
+ ["breed", ["debian", "freebsd", "redhat", "suse", "ubuntu", "unix", "vmware", "windows", "xen", "generic"],
+ ["badbreed"]],
+ ["comment", ["test comment", ], []],
+ ["initrd", [fk_initrd, ], ["", ]],
+ ["name", ["testdistro0"], []],
+ ["kernel", [fk_kernel, ], ["", ]],
+ ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
+ ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
+ ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
+ ["mgmt_classes", ["one two three", ], []],
+ ["os_version", ["generic26", ], ["bados", ]],
+ ["owners", ["user1 user2 user3", ], []],
+ ]
-class TestDistroProfileSystem(CobblerXmlRpcBaseTest):
+@pytest.fixture(scope="class")
+def profile_fields(redhat_autoinstall, suse_autoyast, ubuntu_preseed):
"""
- Test remote calls related to distros, profiles and systems
- These item types are tested together because they have inter-dependencies
+
+ :param redhat_autoinstall:
+ :param suse_autoyast:
+ :param ubuntu_preseed:
+ :return:
"""
+ return [
+ # field format: field_name, good value(s), bad value(s)
+ # TODO: include fields with dependencies: fetchable files, boot files,
+ # template files, repos
+ ["comment", ["test comment"], []],
+ ["dhcp_tag", ["", "foo"], []],
+ ["distro", ["testdistro0"], ["baddistro", ]],
+ ["enable_gpxe", ["yes", "YES", "1", "0", "no"], []],
+ ["enable_menu", ["yes", "YES", "1", "0", "no"], []],
+ ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
+ ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
+ ["autoinstall", [redhat_autoinstall, suse_autoyast, ubuntu_preseed],
+ ["/path/to/bad/autoinstall", ]],
+ ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
+ ["mgmt_classes", ["one two three", ], []],
+ ["mgmt_parameters", ["<<inherit>>"], ["badyaml"]], # needs more test cases that are valid yaml
+ ["name", ["testprofile0"], []],
+ ["name_servers", ["1.1.1.1 1.1.1.2 1.1.1.3"], []],
+ ["name_servers_search", ["example.com foo.bar.com"], []],
+ ["owners", ["user1 user2 user3"], []],
+ ["proxy", ["testproxy"], []],
+ ["server", ["1.1.1.1"], []],
+ ["virt_auto_boot", ["1", "0"], ["yes", "no"]],
+ ["virt_bridge", ["<<inherit>>", "br0", "virbr0", "xenbr0"], []],
+ ["virt_cpus", ["<<inherit>>", "1", "2"], ["a"]],
+ ["virt_disk_driver", ["<<inherit>>", "raw", "qcow2", "vmdk"], []],
+ ["virt_file_size", ["<<inherit>>", "5", "10"], ["a"]],
+ ["virt_path", ["<<inherit>>", "/path/to/test", ], []],
+ ["virt_ram", ["<<inherit>>", "256", "1024"], ["a", ]],
+ ["virt_type", ["<<inherit>>", "xenpv", "xenfv", "qemu", "kvm", "vmware", "openvz"], ["bad", ]],
+ ]
- @pytest.fixture
- def removeTestdistro(self):
- yield
- if not self.remote.get_distro("testdistro0") == "~":
- self.remote.remove_distro("testdistro0", self.token)
-
- def setUp(self):
-
- super(TestDistroProfileSystem, self).setUp()
-
- # Create temp dir
- self.topdir = "/dev/shm/cobbler_test"
- try:
- os.makedirs(self.topdir)
- except:
- pass
-
- # create temp files
- self.fk_initrd = os.path.join(self.topdir, FAKE_INITRD)
- self.fk_initrd2 = os.path.join(self.topdir, FAKE_INITRD2)
- self.fk_initrd3 = os.path.join(self.topdir, FAKE_INITRD3)
- self.fk_kernel = os.path.join(self.topdir, FAKE_KERNEL)
- self.fk_kernel2 = os.path.join(self.topdir, FAKE_KERNEL2)
- self.fk_kernel3 = os.path.join(self.topdir, FAKE_KERNEL3)
- self.redhat_kickstart = os.path.join(self.topdir, "test.ks")
- self.suse_autoyast = os.path.join(self.topdir, "test.xml")
- self.ubuntu_preseed = os.path.join(self.topdir, "test.seed")
- self.files_create = [
- self.fk_initrd, self.fk_initrd2, self.fk_initrd3,
- self.fk_kernel, self.fk_kernel2, self.fk_kernel3,
- self.redhat_kickstart, self.suse_autoyast, self.ubuntu_preseed
- ]
- for fn in self.files_create:
- f = open(fn, "w+")
- f.close()
-
- self.distro_fields = [
- # field format: field_name, good value(s), bad value(s)
- # field order is the order in which they will be set
- # TODO: include fields with dependencies: fetchable files, boot files, etc.
- ["arch", ["i386", "x86_64", "ppc", "ppc64"], ["badarch"]],
- # generic must be last breed to be set so os_version test below will work
- ["breed", ["debian", "freebsd", "redhat", "suse", "ubuntu", "unix", "vmware", "windows", "xen", "generic"],
- ["badbreed"]],
- ["comment", ["test comment", ], []],
- ["initrd", [self.fk_initrd, ], ["", ]],
- ["name", ["testdistro0"], []],
- ["kernel", [self.fk_kernel, ], ["", ]],
- ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
- ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
- ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
- ["mgmt_classes", ["one two three", ], []],
- ["os_version", ["generic26", ], ["bados", ]],
- ["owners", ["user1 user2 user3", ], []],
- ]
-
- self.profile_fields = [
- # field format: field_name, good value(s), bad value(s)
- # TODO: include fields with dependencies: fetchable files, boot files,
- # template files, repos
- ["comment", ["test comment"], []],
- ["dhcp_tag", ["", "foo"], []],
- ["distro", ["testdistro0"], ["baddistro", ]],
- ["enable_gpxe", ["yes", "YES", "1", "0", "no"], []],
- ["enable_menu", ["yes", "YES", "1", "0", "no"], []],
- ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
- ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
- ["kickstart", [self.redhat_kickstart, self.suse_autoyast, self.ubuntu_preseed],
- ["/path/to/bad/kickstart", ]],
- ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
- ["mgmt_classes", ["one two three", ], []],
- ["mgmt_parameters", ["<<inherit>>"], ["badyaml"]], # needs more test cases that are valid yaml
- ["name", ["testprofile0"], []],
- ["name_servers", ["1.1.1.1 1.1.1.2 1.1.1.3"], []],
- ["name_servers_search", ["example.com foo.bar.com"], []],
- ["owners", ["user1 user2 user3"], []],
- ["proxy", ["testproxy"], []],
- ["server", ["1.1.1.1"], []],
- ["virt_auto_boot", ["1", "0"], ["yes", "no"]],
- ["virt_bridge", ["<<inherit>>", "br0", "virbr0", "xenbr0"], []],
- ["virt_cpus", ["<<inherit>>", "1", "2"], ["a"]],
- ["virt_disk_driver", ["<<inherit>>", "raw", "qcow2", "vmdk"], []],
- ["virt_file_size", ["<<inherit>>", "5", "10"], ["a"]],
- ["virt_path", ["<<inherit>>", "/path/to/test", ], []],
- ["virt_ram", ["<<inherit>>", "256", "1024"], ["a", ]],
- ["virt_type", ["<<inherit>>", "xenpv", "xenfv", "qemu", "kvm", "vmware", "openvz"], ["bad", ]],
- ]
-
- self.system_fields = [
- # field format: field_name, good value(s), bad value(s)
- # TODO: include fields with dependencies: fetchable files, boot files,
- # template files, images
- ["comment", ["test comment"], []],
- ["enable_gpxe", ["yes", "YES", "1", "0", "no"], []],
- ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
- ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
- ["kickstart", [self.redhat_kickstart, self.suse_autoyast, self.ubuntu_preseed],
- ["/path/to/bad/kickstart", ]],
- ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
- ["mgmt_classes", ["one two three", ], []],
- ["mgmt_parameters", ["<<inherit>>"], ["badyaml"]], # needs more test cases that are valid yaml
- ["name", ["testsystem0"], []],
- ["netboot_enabled", ["yes", "YES", "1", "0", "no"], []],
- ["owners", ["user1 user2 user3"], []],
- ["profile", ["testprofile0"], ["badprofile", ]],
- ["repos_enabled", [], []],
- ["status", ["development", "testing", "acceptance", "production"], []],
- ["proxy", ["testproxy"], []],
- ["server", ["1.1.1.1"], []],
- ["virt_auto_boot", ["1", "0"], ["yes", "no"]],
- ["virt_cpus", ["<<inherit>>", "1", "2"], ["a"]],
- ["virt_file_size", ["<<inherit>>", "5", "10"], ["a"]],
- ["virt_disk_driver", ["<<inherit>>", "raw", "qcow2", "vmdk"], []],
- ["virt_ram", ["<<inherit>>", "256", "1024"], ["a", ]],
- ["virt_type", ["<<inherit>>", "xenpv", "xenfv", "qemu", "kvm", "vmware", "openvz"], ["bad", ]],
- ["virt_path", ["<<inherit>>", "/path/to/test", ], []],
- ["virt_pxe_boot", ["1", "0"], []],
-
- # network
- ["gateway", [], []],
- ["hostname", ["test"], []],
- ["ipv6_autoconfiguration", [], []],
- ["ipv6_default_device", [], []],
- ["name_servers", ["9.1.1.3"], []],
- ["name_servers_search", [], []],
-
- # network - network interface specific
- # TODO: test these fields
- ["bonding_opts-eth0", [], []],
- ["bridge_opts-eth0", [], []],
- ["cnames-eth0", [], []],
- ["dhcp_tag-eth0", [], []],
- ["dns_name-eth0", [], []],
- ["if_gateway-eth0", [], []],
- ["interface_type-eth0", [], []],
- ["interface_master-eth0", [], []],
- ["ip_address-eth0", [], []],
- ["ipv6_address-eth0", [], []],
- ["ipv6_secondaries-eth0", [], []],
- ["ipv6_mtu-eth0", [], []],
- ["ipv6_static_routes-eth0", [], []],
- ["ipv6_default_gateway-eth0", [], []],
- ["mac_address-eth0", [], []],
- ["mtu-eth0", [], []],
- ["management-eth0", [], []],
- ["netmask-eth0", [], []],
- ["static-eth0", [], []],
- ["static_routes-eth0", [], []],
- ["virt_bridge-eth0", [], []],
-
- # power management
- ["power_type", ["lpar"], ["bla"]],
- ["power_address", ["127.0.0.1"], []],
- ["power_id", ["pmachine:lpar1"], []],
- ["power_pass", ["pass"], []],
- ["power_user", ["user"], []]
-
- ]
- def tearDown(self):
+@pytest.fixture(scope="class")
+def system_fields(redhat_autoinstall, suse_autoyast, ubuntu_preseed):
+ """
- super(TestDistroProfileSystem, self).tearDown()
+ :param redhat_autoinstall:
+ :param suse_autoyast:
+ :param ubuntu_preseed:
+ :return:
+ """
+ return [
+ # field format: field_name, good value(s), bad value(s)
+ # TODO: include fields with dependencies: fetchable files, boot files,
+ # template files, images
+ ["comment", ["test comment"], []],
+ ["enable_gpxe", ["yes", "YES", "1", "0", "no"], []],
+ ["kernel_options", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
+ ["kernel_options_post", ["a=1 b=2 c=3 c=4 c=5 d e"], []],
+ ["autoinstall", [redhat_autoinstall, suse_autoyast, ubuntu_preseed],
+ ["/path/to/bad/autoinstall", ]],
+ ["autoinstall_meta", ["a=1 b=2 c=3 c=4 c=5 d e", ], []],
+ ["mgmt_classes", ["one two three", ], []],
+ ["mgmt_parameters", ["<<inherit>>"], ["badyaml"]], # needs more test cases that are valid yaml
+ ["name", ["testsystem0"], []],
+ ["netboot_enabled", ["yes", "YES", "1", "0", "no"], []],
+ ["owners", ["user1 user2 user3"], []],
+ ["profile", ["testprofile0"], ["badprofile", ]],
+ ["repos_enabled", [], []],
+ ["status", ["development", "testing", "acceptance", "production"], []],
+ ["proxy", ["testproxy"], []],
+ ["server", ["1.1.1.1"], []],
+ ["virt_auto_boot", ["1", "0"], ["yes", "no"]],
+ ["virt_cpus", ["<<inherit>>", "1", "2"], ["a"]],
+ ["virt_file_size", ["<<inherit>>", "5", "10"], ["a"]],
+ ["virt_disk_driver", ["<<inherit>>", "raw", "qcow2", "vmdk"], []],
+ ["virt_ram", ["<<inherit>>", "256", "1024"], ["a", ]],
+ ["virt_type", ["<<inherit>>", "xenpv", "xenfv", "qemu", "kvm", "vmware", "openvz"], ["bad", ]],
+ ["virt_path", ["<<inherit>>", "/path/to/test", ], []],
+ ["virt_pxe_boot", ["1", "0"], []],
+
+ # network
+ ["gateway", [], []],
+ ["hostname", ["test"], []],
+ ["ipv6_autoconfiguration", [], []],
+ ["ipv6_default_device", [], []],
+ ["name_servers", ["9.1.1.3"], []],
+ ["name_servers_search", [], []],
+
+ # network - network interface specific
+ # TODO: test these fields
+ ["bonding_opts-eth0", [], []],
+ ["bridge_opts-eth0", [], []],
+ ["cnames-eth0", [], []],
+ ["dhcp_tag-eth0", [], []],
+ ["dns_name-eth0", [], []],
+ ["if_gateway-eth0", [], []],
+ ["interface_type-eth0", [], []],
+ ["interface_master-eth0", [], []],
+ ["ip_address-eth0", [], []],
+ ["ipv6_address-eth0", [], []],
+ ["ipv6_secondaries-eth0", [], []],
+ ["ipv6_mtu-eth0", [], []],
+ ["ipv6_static_routes-eth0", [], []],
+ ["ipv6_default_gateway-eth0", [], []],
+ ["mac_address-eth0", [], []],
+ ["mtu-eth0", [], []],
+ ["management-eth0", [], []],
+ ["netmask-eth0", [], []],
+ ["static-eth0", [], []],
+ ["static_routes-eth0", [], []],
+ ["virt_bridge-eth0", [], []],
+
+ # power management
+ ["power_type", ["lpar"], ["bla"]],
+ ["power_address", ["127.0.0.1"], []],
+ ["power_id", ["pmachine:lpar1"], []],
+ ["power_pass", ["pass"], []],
+ ["power_user", ["user"], []]
+ ]
- for fn in self.files_create:
- os.remove(fn)
- def test_get_distros(self):
+@pytest.fixture(scope="class")
+def topdir():
+ """
+ The path to the directory of the fake test files.
+ """
+ return "/dev/shm/cobbler_test"
+
+
+@pytest.fixture(scope="class")
+def create_tempdir(topdir):
+ """
+ Creates the top-directory for the tests.
+ :param topdir: See the corresponding fixture.
+ """
+ # Create temp dir
+ try:
+ os.makedirs(topdir)
+ except OSError:
+ pass
+
+
+@pytest.fixture(scope="class")
+def fk_initrd(topdir):
+ """
+ The path to the first fake initrd.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_INITRD)
+
+
+@pytest.fixture(scope="class")
+def fk_initrd2(topdir):
+ """
+ The path to the second fake initrd.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_INITRD2)
+
+
+@pytest.fixture(scope="class")
+def fk_initrd3(topdir):
+ """
+ The path to the third fake initrd.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_INITRD3)
+
+
+@pytest.fixture(scope="class")
+def fk_kernel(topdir):
+ """
+ The path to the first fake kernel.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_KERNEL)
+
+
+@pytest.fixture(scope="class")
+def fk_kernel2(topdir):
+ """
+ The path to the second fake kernel.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_KERNEL2)
+
+
+@pytest.fixture(scope="class")
+def fk_kernel3(topdir):
+ """
+ The path to the third fake kernel.
+ :param topdir: See the corresponding fixture.
+ :return: A path as a string.
+ """
+ return os.path.join(topdir, FAKE_KERNEL3)
+
+
+@pytest.fixture(scope="class")
+def redhat_autoinstall():
+ """
+ The path to the test.ks file for redhat autoinstall.
+ :return: A path as a string.
+ """
+ return os.path.join("", "test.ks")
+
+
+@pytest.fixture(scope="class")
+def suse_autoyast():
+ """
+ The path to the suse autoyast xml-file.
+ :return: A path as a string.
+ """
+ return os.path.join("", "test.xml")
+
+
+@pytest.fixture(scope="class")
+def ubuntu_preseed():
+ """
+ The path to the ubuntu preseed file.
+ :return: A path as a string.
+ """
+ return os.path.join("", "test.seed")
+
+
+@pytest.fixture(scope="class")
+def fake_files(fk_initrd, fk_initrd2, fk_initrd3, fk_kernel, fk_kernel2, fk_kernel3, redhat_autoinstall, suse_autoyast,
+ ubuntu_preseed):
+ """
+ This fixture has an array of all the paths to the generated fake files.
+ :param fk_initrd: See the corresponding fixture.
+ :param fk_initrd2: See the corresponding fixture.
+ :param fk_initrd3: See the corresponding fixture.
+ :param fk_kernel: See the corresponding fixture.
+ :param fk_kernel2: See the corresponding fixture.
+ :param fk_kernel3: See the corresponding fixture.
+ :param redhat_autoinstall: See the corresponding fixture.
+ :param suse_autoyast: See the corresponding fixture.
+ :param ubuntu_preseed: See the corresponding fixture.
+ :return: An array which contains all paths to the corresponding fake files.
+ """
+ return [fk_initrd, fk_initrd2, fk_initrd3, fk_kernel, fk_kernel2, fk_kernel3, redhat_autoinstall,
+ suse_autoyast, ubuntu_preseed]
+
+
+@pytest.fixture(scope="class")
+def files_create(create_tempdir, fake_files, redhat_autoinstall, suse_autoyast, ubuntu_preseed):
+ """
+ This creates all the fake files which need to be present for the tests.
+ :param ubuntu_preseed: See the corresponding fixture.
+ :param suse_autoyast: See the corresponding fixture.
+ :param redhat_autoinstall: See the corresponding fixture.
+ :param create_tempdir: See the corresponding fixture.
+ :param fake_files: See the corresponding fixture.
+ """
+ base = "/var/lib/cobbler/templates/"
+ f = open(base + redhat_autoinstall, "w+")
+ f.close()
+ f = open(base + suse_autoyast, "w+")
+ f.close()
+ f = open(base + ubuntu_preseed, "w+")
+ f.close()
+
+ for fn in fake_files:
+ f = open(fn, "w+")
+ f.close()
+
+
+@pytest.fixture(scope="class")
+def remove_fakefiles(files_create, fake_files, redhat_autoinstall, suse_autoyast, ubuntu_preseed):
+ """
+ This represents the init and teardown of the TestDistroProfileSystem class.
+ :param ubuntu_preseed: See the corresponding fixture.
+ :param suse_autoyast: See the corresponding fixture.
+ :param redhat_autoinstall: See the corresponding fixture.
+ :param files_create: See the corresponding fixture.
+ :param fake_files: See the corresponding fixture.
+ """
+ yield
+
+ base = "/var/lib/cobbler/templates/"
+ os.remove(base + redhat_autoinstall)
+ os.remove(base + suse_autoyast)
+ os.remove(base + ubuntu_preseed)
+ for fn in fake_files:
+ os.remove(fn)
+
+
+@pytest.fixture()
+def create_profile(remote, token):
+ """
+ Create a profile with the name "testprofile0"
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ """
+ profile = remote.new_profile(token)
+ remote.modify_profile(profile, "name", "testprofile0", token)
+ remote.modify_profile(profile, "distro", "testdistro0", token)
+ remote.modify_profile(profile, "kernel_options", "a=1 b=2 c=3 c=4 c=5 d e", token)
+ remote.save_profile(profile, token)
+
+
+@pytest.fixture()
+def remove_testprofile(remote, token):
+ """
+ Removes the profile with the name "testprofile0".
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ """
+ yield
+ remote.remove_profile("testprofile0", token)
+
+
+@pytest.fixture()
+def remove_testdistro(remote, token):
+ """
+ Removes the distro "testdistro0" from the running cobbler after the test.
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ """
+ yield
+ remote.remove_distro("testdistro0", token, False)
+
+
+@pytest.fixture()
+def create_testdistro(remote, token, fk_kernel, fk_initrd):
+ """
+ Creates a distro "testdistro0" with the architecture "x86_64", breed "suse" and the fixtures which are setting the
+ fake kernel and initrd.
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ :param fk_kernel: See the corresponding fixture.
+ :param fk_initrd: See the corresponding fixture.
+ """
+ distro = remote.new_distro(token)
+ remote.modify_distro(distro, "name", "testdistro0", token)
+ remote.modify_distro(distro, "arch", "x86_64", token)
+ remote.modify_distro(distro, "breed", "suse", token)
+ remote.modify_distro(distro, "kernel", fk_kernel, token)
+ remote.modify_distro(distro, "initrd", fk_initrd, token)
+ remote.save_distro(distro, token)
+
+
+@pytest.fixture()
+def create_testsystem(remote, token):
+ """
+ Add a system with the name "testsystem0", the system is assigend to the profile "testprofile0".
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ """
+ system = remote.new_system(token)
+ remote.modify_system(system, "name", "testsystem0", token)
+ remote.modify_system(system, "profile", "testprofile0", token)
+ remote.save_system(system, token)
+
+
+@pytest.fixture()
+def remove_testsystem(remote, token):
+ """
+ Remove a system "testsystem0".
+ :param remote: See the corresponding fixture.
+ :param token: See the corresponding fixture.
+ """
+ yield
+ remote.remove_system("testsystem0", token, False)
+
+
+@pytest.mark.usefixtures("cobbler_xmlrpc_base", "remove_fakefiles")
+class TestDistroProfileSystem:
+ """
+ Test remote calls related to distros, profiles and systems
+ These item types are tested together because they have inter-dependencies
+ """
+
+ def test_get_distros(self, remote, token):
"""
Test: get distros
"""
@@ -225,12 +429,12 @@ class TestDistroProfileSystem(CobblerXml
# Arrange --> Nothing to arrange
# Act
- result = self.remote.get_distros(self.token)
+ result = remote.get_distros(token)
# Assert
assert result == []
- def test_get_profiles(self):
+ def test_get_profiles(self, remote, token):
"""
Test: get profiles
"""
@@ -238,12 +442,12 @@ class TestDistroProfileSystem(CobblerXml
# Arrange --> Nothing to arrange
# Act
- result = self.remote.get_profiles(self.token)
+ result = remote.get_profiles(token)
# Assert
assert result == []
- def test_get_systems(self):
+ def test_get_systems(self, remote, token):
"""
Test: get systems
"""
@@ -251,13 +455,13 @@ class TestDistroProfileSystem(CobblerXml
# Arrange --> Nothing to arrange
# Act
- result = self.remote.get_systems(self.token)
+ result = remote.get_systems(token)
# Assert
assert result == []
- @pytest.mark.usefixtures("removeTestdistro")
- def test_create_distro_positive(self):
+ @pytest.mark.usefixtures("remove_testdistro")
+ def test_create_distro_positive(self, remote, token, distro_fields):
"""
Test: create/edit a distro with valid values
"""
@@ -265,21 +469,21 @@ class TestDistroProfileSystem(CobblerXml
# Arrange --> Nothing to do.
# Act
- distro = self.remote.new_distro(self.token)
- self.remote.modify_distro(distro, "name", "testdistro", self.token)
+ distro = remote.new_distro(token)
+ remote.modify_distro(distro, "name", "testdistro", token)
# Assert
- for field in self.distro_fields:
+ for field in distro_fields:
(fname, fgood, fbad) = field
for fg in fgood:
try:
- result = self.remote.modify_distro(distro, fname, fg, self.token)
- self.assertTrue(result)
+ result = remote.modify_distro(distro, fname, fg, token)
+ assert result
except Exception as e:
- self.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
+ pytest.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
- result_save_success = self.remote.save_distro(distro, self.token)
- self.assertTrue(result_save_success)
+ result_save_success = remote.save_distro(distro, token)
+ assert result_save_success
# FIXME: if field in item_<type>.FIELDS defines possible values,
# test all of them. This is valid for all item types
@@ -290,10 +494,10 @@ class TestDistroProfileSystem(CobblerXml
# fvalue = random.choice(values)
# else:
# fvalue = "testing_" + fname
- # self.assertTrue(self.remote.modify_profile(subprofile,fname,fvalue,self.token))
+ # self.assertTrue(remote.modify_profile(subprofile,fname,fvalue,token))
- @pytest.mark.usefixtures("removeTestdistro")
- def test_create_distro_negative(self):
+ @pytest.mark.usefixtures("remove_testdistro")
+ def test_create_distro_negative(self, remote, token, distro_fields, fk_kernel, fk_initrd):
"""
Test: create/edit a distro with invalid values
"""
@@ -301,22 +505,24 @@ class TestDistroProfileSystem(CobblerXml
# Arrange --> Nothing to do.
# Act
- distro = self.remote.new_distro(self.token)
- self.remote.modify_distro(distro, "name", "testdistro", self.token)
+ distro = remote.new_distro(token)
+ remote.modify_distro(distro, "name", "testdistro0", token)
# Assert
- for field in self.distro_fields:
+ for field in distro_fields:
(fname, fgood, fbad) = field
for fb in fbad:
try:
- self.remote.modify_distro(distro, fname, fb, self.token)
+ remote.modify_distro(distro, fname, fb, token)
except:
pass
else:
- self.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
+ pytest.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
- result_save_success = self.remote.save_distro(distro, self.token)
- self.assertTrue(result_save_success)
+ remote.modify_distro(distro, "kernel", fk_kernel, token)
+ remote.modify_distro(distro, "initrd", fk_initrd, token)
+ result_save_success = remote.save_distro(distro, token)
+ assert result_save_success
# FIXME: if field in item_<type>.FIELDS defines possible values,
# test all of them. This is valid for all item types
@@ -327,345 +533,405 @@ class TestDistroProfileSystem(CobblerXml
# fvalue = random.choice(values)
# else:
# fvalue = "testing_" + fname
- # self.assertTrue(self.remote.modify_profile(subprofile,fname,fvalue,self.token))
+ # self.assertTrue(remote.modify_profile(subprofile,fname,fvalue,token))
- def test_create_profile(self):
+ @pytest.mark.usefixtures("create_testdistro", "remove_testdistro", "remove_testprofile")
+ def test_create_profile_positive(self, remote, token, profile_fields):
"""
Test: create/edit a profile object
"""
- # TODO: Arrange
+ # Arrange
+ profile = remote.new_profile(token)
+
+ # Act
+ for field in profile_fields:
+ (fname, fgood, _) = field
+ for fg in fgood:
+ try:
+ assert remote.modify_profile(profile, fname, fg, token)
+ except Exception as e:
+ pytest.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
- # TODO: Act
+ remote.modify_profile(profile, "name", "testprofile0", token)
+ assert remote.save_profile(profile, token)
- # TODO: Assert
+ # Assert
+ new_profiles = remote.get_profiles(token)
+ assert len(new_profiles) == 1
- profiles = self.remote.get_profiles(self.token)
+ @pytest.mark.usefixtures("create_testdistro", "remove_testdistro", "remove_testprofile")
+ def test_create_profile_negative(self, remote, token, profile_fields):
+ """
+ Test: create/edit a profile object
+ """
- profile = self.remote.new_profile(self.token)
+ # Arrange
+ profile = remote.new_profile(token)
- for field in self.profile_fields:
- (fname, fgood, fbad) = field
+ # Act
+ for field in profile_fields:
+ (fname, _, fbad) = field
for fb in fbad:
try:
- self.remote.modify_profile(profile, fname, fb, self.token)
+ remote.modify_profile(profile, fname, fb, token)
except:
pass
else:
- self.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
- for fg in fgood:
- try:
- self.assertTrue(self.remote.modify_profile(profile, fname, fg, self.token))
- except Exception as e:
- self.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
+ pytest.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
- self.assertTrue(self.remote.save_profile(profile, self.token))
+ remote.modify_profile(profile, "distro", "testdistro0", token)
+ remote.modify_profile(profile, "name", "testprofile0", token)
+ assert remote.save_profile(profile, token)
- new_profiles = self.remote.get_profiles(self.token)
- self.assertTrue(len(new_profiles) == len(profiles) + 1)
- assert 0
+ # Assert
+ new_profiles = remote.get_profiles(token)
+ assert len(new_profiles) == 1
- def test_create_subprofile(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile")
+ def test_create_subprofile(self, remote, token):
"""
Test: create/edit a subprofile object
"""
- # TODO: Arrange
-
- # TODO: Act
-
- # TODO: Assert
+ # Arrange
+ profiles = remote.get_profiles(token)
- profiles = self.remote.get_profiles(self.token)
-
- subprofile = self.remote.new_subprofile(self.token)
+ # Act
+ subprofile = remote.new_subprofile(token)
- self.assertTrue(self.remote.modify_profile(subprofile, "name", "testsubprofile0", self.token))
- self.assertTrue(self.remote.modify_profile(subprofile, "parent", "testprofile0", self.token))
+ # Assert
+ assert remote.modify_profile(subprofile, "name", "testsubprofile0", token)
+ assert remote.modify_profile(subprofile, "parent", "testprofile0", token)
- self.assertTrue(self.remote.save_profile(subprofile, self.token))
+ assert remote.save_profile(subprofile, token)
- new_profiles = self.remote.get_profiles(self.token)
- self.assertTrue(len(new_profiles) == len(profiles) + 1)
- assert 0
+ new_profiles = remote.get_profiles(token)
+ assert len(new_profiles) == len(profiles) + 1
- def test_create_system(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile",
+ "remove_testsystem")
+ def test_create_system_positive(self, system_fields, remote, token):
"""
Test: create/edit a system object
"""
- # TODO: Arrange
+ # Arrange
+ systems = remote.get_systems(token)
+
+ # Act
+ system = remote.new_system(token)
+
+ # Assert
+ assert remote.modify_system(system, "name", "testsystem0", token)
+ assert remote.modify_system(system, "profile", "testprofile0", token)
+ for field in system_fields:
+ (fname, fgood, _) = field
+ for fg in fgood:
+ try:
+ assert remote.modify_system(system, fname, fg, token)
+ except Exception as e:
+ pytest.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
+
+ assert remote.save_system(system, token)
- # TODO: Act
+ new_systems = remote.get_systems(token)
+ assert len(new_systems) == len(systems) + 1
- # TODO: Assert
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile",
+ "remove_testsystem")
+ def test_create_system_negative(self, system_fields, remote, token):
+ """
+ Test: create/edit a system object
+ """
- systems = self.remote.get_systems(self.token)
+ # Arrange
+ systems = remote.get_systems(token)
- system = self.remote.new_system(self.token)
+ # Act
+ system = remote.new_system(token)
- self.assertTrue(self.remote.modify_system(system, "name", "testsystem0", self.token))
- self.assertTrue(self.remote.modify_system(system, "profile", "testprofile0", self.token))
- for field in self.system_fields:
- (fname, fgood, fbad) = field
+ # Assert
+ assert remote.modify_system(system, "name", "testsystem0", token)
+ assert remote.modify_system(system, "profile", "testprofile0", token)
+ for field in system_fields:
+ (fname, _, fbad) = field
for fb in fbad:
try:
- self.remote.modify_system(system, fname, fb, self.token)
+ remote.modify_system(system, fname, fb, token)
except:
pass
else:
- self.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
- for fg in fgood:
- try:
- self.assertTrue(self.remote.modify_system(system, fname, fg, self.token))
- except Exception as e:
- self.fail("good field (%s=%s) raised exception: %s" % (fname, fg, str(e)))
+ pytest.fail("bad field (%s=%s) did not raise an exception" % (fname, fb))
- self.assertTrue(self.remote.save_system(system, self.token))
+ assert remote.save_system(system, token)
- new_systems = self.remote.get_systems(self.token)
- self.assertTrue(len(new_systems) == len(systems) + 1)
- assert 0
+ new_systems = remote.get_systems(token)
+ assert len(new_systems) == len(systems) + 1
- def test_get_distro(self):
+ @pytest.mark.usefixtures("create_testdistro", "remove_testdistro")
+ def test_get_distro(self, remote, fk_initrd, fk_kernel):
+ """
+ Test: get a distro object
"""
- Test: get a distro object"""
- # TODO: Arrange
+ # Arrange --> Done in fixture
# Act
- distro = self.remote.get_distro("testdistro0")
+ distro = remote.get_distro("testdistro0")
- # TODO: Assert
- assert 0
+ # Assert
+ assert distro.get("name") == "testdistro0"
+ assert distro.get("initrd") == fk_initrd
+ assert distro.get("kernel") == fk_kernel
- def test_get_profile(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile")
+ def test_get_profile(self, remote):
"""
Test: get a profile object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixture.
# Act
- profile = self.remote.get_profile("testprofile0")
+ profile = remote.get_profile("testprofile0")
- # TODO: Assert
- assert 0
+ # Assert
+ assert profile.get("name") == "testprofile0"
+ assert profile.get("distro") == "testdistro0"
+ assert profile.get("kernel_options") == {'a': '1', 'b': '2', 'c': ['3', '4', '5'], 'd': '~', 'e': '~'}
- def test_get_system(self):
+ def test_get_system(self, remote):
"""
Test: get a system object
"""
- # TODO: Arrange
+ # Arrange --> There should be no system present. --> Nothing to Init.
# Act
- system = self.remote.get_system("testsystem0")
+ system = remote.get_system("testsystem0")
- # TODO: Assert
- assert 0
+ # Assert
+ assert system is "~"
- def test_find_distro(self):
+ def test_find_distro(self, remote, token):
"""
Test: find a distro object
"""
- # TODO: Arrange
+ # Arrange --> No distros means no setup
# Act
- result = self.remote.find_distro({"name": "testdistro0"}, self.token)
+ result = remote.find_distro({"name": "testdistro0"}, token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert result == []
- def test_find_profile(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile")
+ def test_find_profile(self, remote, token):
"""
Test: find a profile object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixtures
# Act
- result = self.remote.find_profile({"name": "testprofile0"}, self.token)
+ result = remote.find_profile({"name": "testprofile0"}, token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert len(result) == 1
+ assert result[0].get("name") == "testprofile0"
- def test_find_system(self):
+ def test_find_system(self, remote, token):
"""
Test: find a system object
"""
- # TODO: Arrange
+ # Arrange --> Nothing to arrange
# Act
- result = self.remote.find_system({"name": "testsystem0"}, self.token)
+ result = remote.find_system({"name": "notexisting"}, token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert --> A not exiting system returns an empty list
+ assert result == []
- def test_copy_distro(self):
+ @pytest.mark.usefixtures("create_testdistro", "remove_testdistro")
+ def test_copy_distro(self, remote, token):
"""
Test: copy a distro object
"""
- # TODO: Arrange
+ # Arrange --> Done in the fixture
# Act
- distro = self.remote.get_item_handle("distro", "testdistro0", self.token)
+ distro = remote.get_item_handle("distro", "testdistro0", token)
+ result = remote.copy_distro(distro, "testdistrocopy", token)
- # TODO: Assert
- self.assertTrue(self.remote.copy_distro(distro, "testdistrocopy", self.token))
- assert 0
+ # Assert
+ assert result
- def test_copy_profile(self):
+ # Cleanup --> Plus fixture
+ remote.remove_distro("testdistrocopy", token)
+
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testdistro", "remove_testprofile")
+ def test_copy_profile(self, remote, token):
"""
Test: copy a profile object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixtures
# Act
- profile = self.remote.get_item_handle("profile", "testprofile0", self.token)
+ profile = remote.get_item_handle("profile", "testprofile0", token)
+ result = remote.copy_profile(profile, "testprofilecopy", token)
+
+ # Assert
+ assert result
- # TODO: Assert
- self.assertTrue(self.remote.copy_profile(profile, "testprofilecopy", self.token))
- assert 0
+ # Cleanup
+ remote.remove_profile("testprofilecopy", token)
- def test_copy_system(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "create_testsystem", "remove_testdistro",
+ "remove_testprofile", "remove_testsystem")
+ def test_copy_system(self, remote, token):
"""
Test: copy a system object
"""
- # TODO: Arrange
+ # Arrange
+ system = remote.get_item_handle("system", "testsystem0", token)
# Act
- system = self.remote.get_item_handle("system", "testsystem0", self.token)
+ result = remote.copy_system(system, "testsystemcopy", token)
+
+ # Assert
+ assert result
- # TODO: Assert
- self.assertTrue(self.remote.copy_system(system, "testsystemcopy", self.token))
- assert 0
+ # Cleanup
+ remote.remove_system("testsytemcopy", token)
- def test_rename_distro(self):
+ @pytest.mark.usefixtures("create_testdistro")
+ def test_rename_distro(self, remote, token):
"""
Test: rename a distro object
"""
- # TODO: Arrange
- distro = self.remote.get_item_handle("distro", "testdistrocopy", self.token)
+ # Arrange
+ distro = remote.get_item_handle("distro", "testdistro0", token)
# Act
- result = self.remote.rename_distro(distro, "testdistro1", self.token)
+ result = remote.rename_distro(distro, "testdistro1", token)
+
+ # Assert
+ assert result
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Cleanup
+ remote.remove_distro("testdistro1", token)
- def test_rename_profile(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "remove_testprofile", "remove_testdistro")
+ def test_rename_profile(self, remote, token):
"""
Test: rename a profile object
"""
- # TODO: Arrange
- profile = self.remote.get_item_handle("profile", "testprofilecopy", self.token)
+ # Arrange
+ profile = remote.get_item_handle("profile", "testprofile0", token)
# Act
- result = self.remote.rename_profile(profile, "testprofile1", self.token)
+ result = remote.rename_profile(profile, "testprofile1", token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert result
+
+ # Cleanup
+ remote.remove_profile("testprofile1", token)
- def test_rename_system(self):
+ @pytest.mark.usefixtures("create_testdistro", "create_profile", "create_testsystem", "remove_testdistro",
+ "remove_testprofile", "remove_testsystem")
+ def test_rename_system(self, remote, token):
"""
Test: rename a system object
"""
- # TODO: Arrange
- # Create System
- # Get Object-ID
- system = self.remote.get_item_handle("system", "testsystemcopy", self.token)
+ # Arrange --> Done in fixtures also.
+ system = remote.get_item_handle("system", "testsystem0", token)
# Act
- result = self.remote.rename_system(system, "testsystem1", self.token)
+ result = remote.rename_system(system, "testsystem1", token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert result
- def test_remove_distro(self):
+ # Cleanup
+ remote.remove_system("testsystem1", token)
+
+ def test_remove_distro(self, remote, token):
"""
Test: remove a distro object
"""
- # TODO: Arrange
+ # Arrange
+ # TODO: Verify why the test passes without the fixture for creating the distro!
# Act
- result = self.remote.remove_distro("testdistro0", self.token)
+ result = remote.remove_distro("testdistro0", token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert result
- def test_remove_profile(self):
+ def test_remove_profile(self, remote, token):
"""
Test: remove a profile object
"""
- # TODO: Arrange
+ # Arrange
+ # TODO: Verify why the test passes without the fixture for creating the profile!
# Act
- result_subprofile_remove = self.remote.remove_profile("testsubprofile0", self.token)
- result_profile_remove = self.remote.remove_profile("testprofile0", self.token)
+ # TODO: Why does the subprofile call return true? There shouldn't be one.
+ result_subprofile_remove = remote.remove_profile("testsubprofile0", token)
+ result_profile_remove = remote.remove_profile("testprofile0", token)
- # TODO: Assert
- self.assertTrue(result_subprofile_remove)
- self.assertTrue(result_profile_remove)
- assert 0
+ # Assert
+ assert result_subprofile_remove
+ assert result_profile_remove
- def test_remove_system(self):
+ def test_remove_system(self, remote, token):
"""
Test: remove a system object
"""
- # TODO: Arrange
+ # Arrange
+ # TODO: Verify why the test passes without the fixture for creating the system!
# Act
- result = self.remote.remove_system("testsystem0", self.token)
+ result = remote.remove_system("testsystem0", token)
- # TODO: Assert
- self.assertTrue(result)
- assert 0
+ # Assert
+ assert result
- def test_get_repo_config_for_profile(self):
+ def test_get_repo_config_for_profile(self, remote):
"""
Test: get repository configuration of a profile
"""
- # TODO: Arrange
+ # Arrange --> There is nothing to be arranged
# Act
- result = self.remote.get_repo_config_for_profile("testprofile0")
+ result = remote.get_repo_config_for_profile("testprofile0")
- # TODO: Assert
- assert 0
+ # Assert --> Let the test pass if the call is okay.
+ assert True
- def test_get_repo_config_for_system(self):
+ def test_get_repo_config_for_system(self, remote):
"""
Test: get repository configuration of a system
"""
- # TODO: Arrange
-
- # TODO: Act
- result = self.remote.get_repo_config_for_system("testprofile0")
-
- # TODO: Assert
- assert 0
+ # Arrange --> There is nothing to be arranged
+ # Act
+ result = remote.get_repo_config_for_system("testprofile0")
-if __name__ == '__main__':
- pytest.main()
+ # Assert --> Let the test pass if the call is okay.
+ assert True
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/file_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/file_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/file_test.py
@@ -1,5 +1,4 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
"""
@@ -14,76 +13,73 @@ test_remove_file()
"""
-class TestFile(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestFile:
"""
Test remote calls related to files
"""
- def test_create_file(self):
- files = self.remote.get_files(self.token)
+ def test_create_file(self, remote, token):
+ files = remote.get_files(token)
- file_id = self.remote.new_file(self.token)
+ file_id = remote.new_file(token)
- self.remote.modify_file(file_id, "name", "testfile0", self.token)
- self.remote.modify_file(file_id, "is_directory", "False", self.token)
- self.remote.modify_file(file_id, "action", "create", self.token)
- self.remote.modify_file(file_id, "group", "root", self.token)
- self.remote.modify_file(file_id, "mode", "0644", self.token)
- self.remote.modify_file(file_id, "owner", "root", self.token)
- self.remote.modify_file(file_id, "path", "/root/testfile0", self.token)
- self.remote.modify_file(file_id, "template", "testtemplate0", self.token)
+ remote.modify_file(file_id, "name", "testfile0", token)
+ remote.modify_file(file_id, "is_directory", "False", token)
+ remote.modify_file(file_id, "action", "create", token)
+ remote.modify_file(file_id, "group", "root", token)
+ remote.modify_file(file_id, "mode", "0644", token)
+ remote.modify_file(file_id, "owner", "root", token)
+ remote.modify_file(file_id, "path", "/root/testfile0", token)
+ remote.modify_file(file_id, "template", "testtemplate0", token)
- self.remote.save_file(file_id, self.token)
+ remote.save_file(file_id, token)
- new_files = self.remote.get_files(self.token)
- self.assertTrue(len(new_files) == len(files) + 1)
+ new_files = remote.get_files(token)
+ assert len(new_files) == len(files) + 1
- def test_get_files(self):
+ def test_get_files(self, remote, token):
"""
Test: get files
"""
- self.remote.get_files(self.token)
+ remote.get_files(token)
- def test_get_file(self):
+ def test_get_file(self, remote):
"""
Test: Get a file object
"""
- file = self.remote.get_file("testfile0")
+ file = remote.get_file("testfile0")
- def test_find_file(self):
+ def test_find_file(self, remote, token):
"""
Test: find a file object
"""
- result = self.remote.find_file({"name": "testfile0"}, self.token)
- self.assertTrue(result)
+ result = remote.find_file({"name": "testfile0"}, token)
+ assert result
- def test_copy_file(self):
+ def test_copy_file(self, remote, token):
"""
Test: copy a file object
"""
- file = self.remote.get_item_handle("file", "testfile0", self.token)
- self.assertTrue(self.remote.copy_file(file, "testfilecopy", self.token))
+ file = remote.get_item_handle("file", "testfile0", token)
+ assert remote.copy_file(file, "testfilecopy", token)
- def test_rename_file(self):
+ def test_rename_file(self, remote, token):
"""
Test: rename a file object
"""
- file = self.remote.get_item_handle("file", "testfilecopy", self.token)
- self.assertTrue(self.remote.rename_file(file, "testfile1", self.token))
+ file = remote.get_item_handle("file", "testfilecopy", token)
+ assert remote.rename_file(file, "testfile1", token)
- def test_remove_file(self):
+ def test_remove_file(self, remote, token):
"""
Test: remove a file object
"""
- self.assertTrue(self.remote.remove_file("testfile0", self.token))
- self.assertTrue(self.remote.remove_file("testfile1", self.token))
-
-
-if __name__ == '__main__':
- unittest.main()
+ assert remote.remove_file("testfile0", token)
+ assert remote.remove_file("testfile1", token)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/image_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/image_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/image_test.py
@@ -1,5 +1,4 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
def tprint(call_name):
@@ -12,85 +11,83 @@ def tprint(call_name):
print("test remote call: %s()" % call_name)
-class TestImage(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestImage:
- def _create_image(self):
+ def _create_image(self, remote, token):
"""
Test: create/edit of an image object"""
- images = self.remote.get_images(self.token)
+ images = remote.get_images(token)
tprint("new_image")
- image = self.remote.new_image(self.token)
+ image = remote.new_image(token)
tprint("modify_image")
- self.assertTrue(self.remote.modify_image(image, "name", "testimage0", self.token))
+ assert remote.modify_image(image, "name", "testimage0", token)
tprint("save_image")
- self.assertTrue(self.remote.save_image(image, self.token))
+ assert remote.save_image(image, token)
- new_images = self.remote.get_images(self.token)
- self.assertTrue(len(new_images) == len(images) + 1)
+ new_images = remote.get_images(token)
+ assert len(new_images) == len(images) + 1
- def _get_images(self):
+ def _get_images(self, remote):
"""
Test: get images
"""
tprint("get_images")
- self.remote.get_images()
+ remote.get_images()
- def _get_image(self):
+ def _get_image(self, remote):
"""
Test: Get an image object
"""
tprint("get_image")
- image = self.remote.get_image("testimage0")
+ image = remote.get_image("testimage0")
- def _find_image(self):
+ def _find_image(self, remote, token):
"""
Test: Find an image object
"""
tprint("find_image")
- result = self.remote.find_image({"name": "testimage0"}, self.token)
- self.assertTrue(result)
+ result = remote.find_image({"name": "testimage0"}, token)
+ assert result
- def _copy_image(self):
+ def _copy_image(self, remote, token):
"""
Test: Copy an image object
"""
tprint("find_image")
- image = self.remote.get_item_handle("image", "testimage0", self.token)
- self.assertTrue(self.remote.copy_image(image, "testimagecopy", self.token))
+ image = remote.get_item_handle("image", "testimage0", token)
+ assert remote.copy_image(image, "testimagecopy", token)
- def _rename_image(self):
+ def _rename_image(self, remote, token):
"""
Test: Rename an image object
"""
tprint("rename_image")
- image = self.remote.get_item_handle("image", "testimagecopy", self.token)
- self.assertTrue(self.remote.rename_image(image, "testimage1", self.token))
+ image = remote.get_item_handle("image", "testimagecopy", token)
+ assert remote.rename_image(image, "testimage1", token)
- def _remove_image(self):
+ def _remove_image(self, remote, token):
"""
Test: remove an image object
"""
tprint("remove_image")
- self.assertTrue(self.remote.remove_image("testimage0", self.token))
- self.assertTrue(self.remote.remove_image("testimage1", self.token))
+ assert remote.remove_image("testimage0", token)
+ assert remote.remove_image("testimage1", token)
- def test_image(self):
- self._get_images()
- self._create_image()
- self._get_image()
- self._find_image()
- self._copy_image()
- self._rename_image()
- self._remove_image()
-
-if __name__ == '__main__':
- unittest.main()
+ def test_image(self, remote, token):
+ self._get_images(remote)
+ self._create_image(remote, token)
+ self._get_image(remote)
+ self._find_image(remote, token)
+ self._copy_image(remote, token)
+ self._rename_image(remote, token)
+ self._remove_image(remote, token)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/item_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/item_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/item_test.py
@@ -1,5 +1,4 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
def tprint(call_name):
@@ -12,12 +11,13 @@ def tprint(call_name):
print("test remote call: %s()" % call_name)
-class TestItem(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestItem:
"""
Test item
"""
- def _get_item(self, type):
+ def _get_item(self, type, remote):
"""
Test: get a generic item
@@ -25,9 +25,9 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("get_item")
- item = self.remote.get_item(type, "test%s2" % type)
+ item = remote.get_item(type, "test%s2" % type)
- def _find_item(self, type):
+ def _find_item(self, type, remote):
"""
Test: find a generic item
@@ -35,10 +35,10 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("find_items")
- result = self.remote.find_items(type, {"name": "test%s2" % type}, None, False)
- self.assertTrue(len(result) > 0)
+ result = remote.find_items(type, {"name": "test%s2" % type}, None, False)
+ assert len(result) > 0
- def _copy_item(self, type):
+ def _copy_item(self, type, remote, token):
"""
Test: copy a generic item
@@ -46,11 +46,11 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("copy_item")
- item_id = self.remote.get_item_handle(type, "test%s2" % type, self.token)
- result = self.remote.copy_item(type, item_id, "test%scopy" % type, self.token)
- self.assertTrue(result)
+ item_id = remote.get_item_handle(type, "test%s2" % type, token)
+ result = remote.copy_item(type, item_id, "test%scopy" % type, token)
+ assert result
- def _has_item(self, type):
+ def _has_item(self, type, remote, token):
"""
Test: check if an item is in a item collection
@@ -58,10 +58,10 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("has_item")
- result = self.remote.has_item(type, "test%s2" % type, self.token)
- self.assertTrue(result)
+ result = remote.has_item(type, "test%s2" % type, token)
+ assert result
- def _rename_item(self, type):
+ def _rename_item(self, type, remote, token):
"""
Test: rename a generic item
@@ -69,11 +69,11 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("rename_item")
- item_id = self.remote.get_item_handle(type, "test%scopy" % type, self.token)
- result = self.remote.rename_item(type, item_id, "test%s3" % type, self.token)
- self.assertTrue(result)
+ item_id = remote.get_item_handle(type, "test%scopy" % type, token)
+ result = remote.rename_item(type, item_id, "test%s3" % type, token)
+ assert result
- def _remove_item(self, type):
+ def _remove_item(self, type, remote, token):
"""
Test: remove a generic item
@@ -81,33 +81,30 @@ class TestItem(CobblerXmlRpcBaseTest):
"""
tprint("remove_item")
- self.assertTrue(self.remote.remove_item(type, "test%s2" % type, self.token))
- self.assertTrue(self.remote.remove_item(type, "test%s3" % type, self.token))
+ assert remote.remove_item(type, "test%s2" % type, token)
+ assert remote.remove_item(type, "test%s3" % type, token)
- def test_item(self):
+ def test_item(self, remote, token):
type = "mgmtclass"
tprint("get_item_names")
- items_names = self.remote.get_item_names(type)
+ items_names = remote.get_item_names(type)
# create an item of the type defined above
- item_id = self.remote.new_mgmtclass(self.token)
+ item_id = remote.new_mgmtclass(token)
- self.remote.modify_item(type, item_id, "name", "test%s2" % type, self.token)
- result = self.remote.save_item(type, item_id, self.token)
- self.assertTrue(result)
-
- new_items_names = self.remote.get_item_names(type)
- self.assertTrue(len(new_items_names) == len(items_names) + 1)
-
- self._get_item(type)
- self._find_item(type)
- self._copy_item(type)
- self._rename_item(type)
- self._remove_item(type)
+ remote.modify_item(type, item_id, "name", "test%s2" % type, token)
+ result = remote.save_item(type, item_id, token)
+ assert result
+
+ new_items_names = remote.get_item_names(type)
+ assert len(new_items_names) == len(items_names) + 1
+
+ self._get_item(type, remote)
+ self._find_item(type, remote)
+ self._copy_item(type, remote, token)
+ self._rename_item(type, remote, token)
+ self._remove_item(type, remote, token)
- new_items_names = self.remote.get_item_names(type)
- self.assertTrue(len(new_items_names) == len(items_names))
-
-if __name__ == '__main__':
- unittest.main()
+ new_items_names = remote.get_item_names(type)
+ assert len(new_items_names) == len(items_names)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/mgmt_class_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/mgmt_class_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/mgmt_class_test.py
@@ -1,5 +1,4 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
def tprint(call_name):
@@ -12,87 +11,85 @@ def tprint(call_name):
print("test remote call: %s()" % call_name)
-class TestMgmtClass(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestMgmtClass:
- def _create_mgmtclass(self):
+ def _create_mgmtclass(self, remote, token):
"""
Test: create/edit a mgmtclass object
"""
- mgmtclasses = self.remote.get_mgmtclasses(self.token)
+ mgmtclasses = remote.get_mgmtclasses(token)
tprint("new_mgmtclass")
- mgmtclass = self.remote.new_mgmtclass(self.token)
+ mgmtclass = remote.new_mgmtclass(token)
tprint("modify_mgmtclass")
- self.assertTrue(self.remote.modify_mgmtclass(mgmtclass, "name", "testmgmtclass0", self.token))
+ assert remote.modify_mgmtclass(mgmtclass, "name", "testmgmtclass0", token)
tprint("save_mgmtclass")
- self.assertTrue(self.remote.save_mgmtclass(mgmtclass, self.token))
+ assert remote.save_mgmtclass(mgmtclass, token)
- new_mgmtclasses = self.remote.get_mgmtclasses(self.token)
- self.assertTrue(len(new_mgmtclasses) == len(mgmtclasses) + 1)
+ new_mgmtclasses = remote.get_mgmtclasses(token)
+ assert len(new_mgmtclasses) == len(mgmtclasses) + 1
- def _get_mgmtclasses(self):
+ def _get_mgmtclasses(self, remote):
"""
Test: Get mgmtclasses objects
"""
tprint("get_mgmtclasses")
- self.remote.get_mgmtclasses()
+ remote.get_mgmtclasses()
- def _get_mgmtclass(self):
+ def _get_mgmtclass(self, remote):
"""
Test: get a mgmtclass object
"""
tprint("get_mgmtclass")
- mgmtclass = self.remote.get_mgmtclass("testmgmtclass0")
+ mgmtclass = remote.get_mgmtclass("testmgmtclass0")
- def _find_mgmtclass(self):
+ def _find_mgmtclass(self, remote, token):
"""
Test: find a mgmtclass object
"""
tprint("find_mgmtclass")
- result = self.remote.find_mgmtclass({"name": "testmgmtclass0"}, self.token)
- self.assertTrue(result)
+ result = remote.find_mgmtclass({"name": "testmgmtclass0"}, token)
+ assert result
- def _copy_mgmtclass(self):
+ def _copy_mgmtclass(self, remote, token):
"""
Test: copy a mgmtclass object
"""
tprint("copy_mgmtclass")
- mgmtclass = self.remote.get_item_handle("mgmtclass", "testmgmtclass0", self.token)
- self.assertTrue(self.remote.copy_mgmtclass(mgmtclass, "testmgmtclasscopy", self.token))
+ mgmtclass = remote.get_item_handle("mgmtclass", "testmgmtclass0", token)
+ assert remote.copy_mgmtclass(mgmtclass, "testmgmtclasscopy", token)
- def _rename_mgmtclass(self):
+ def _rename_mgmtclass(self, remote, token):
"""
Test: rename a mgmtclass object
"""
tprint("rename_mgmtclass")
- mgmtclass = self.remote.get_item_handle("mgmtclass", "testmgmtclasscopy", self.token)
- self.assertTrue(self.remote.rename_mgmtclass(mgmtclass, "testmgmtclass1", self.token))
+ mgmtclass = remote.get_item_handle("mgmtclass", "testmgmtclasscopy", token)
+ assert remote.rename_mgmtclass(mgmtclass, "testmgmtclass1", token)
- def _remove_mgmtclass(self):
+ def _remove_mgmtclass(self, remote, token):
"""
Test: remove a mgmtclass object
"""
tprint("remove_mgmtclass")
- self.assertTrue(self.remote.remove_mgmtclass("testmgmtclass0", self.token))
- self.assertTrue(self.remote.remove_mgmtclass("testmgmtclass1", self.token))
+ assert remote.remove_mgmtclass("testmgmtclass0", token)
+ assert remote.remove_mgmtclass("testmgmtclass1", token)
- def test_mgmtclass(self):
- self._get_mgmtclasses()
- self._create_mgmtclass()
- self._get_mgmtclass()
- self._find_mgmtclass()
- self._copy_mgmtclass()
- self._rename_mgmtclass()
- self._remove_mgmtclass()
-
-if __name__ == '__main__':
- unittest.main()
+ def test_mgmtclass(self, remote, token):
+ self._get_mgmtclasses(remote)
+ self._create_mgmtclass(remote, token)
+ self._get_mgmtclass(remote)
+ self._find_mgmtclass(remote, token)
+ self._copy_mgmtclass(remote, token)
+ self._rename_mgmtclass(remote, token)
+ self._remove_mgmtclass(remote, token)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/miscellaneous_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/miscellaneous_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/miscellaneous_test.py
@@ -1,104 +1,133 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
+import pytest
-class TestMiscellaneous(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestMiscellaneous:
"""
Class to test remote calls to cobbler which do not belong into a specific category.
"""
+ @pytest.mark.skip(reason="Not Implemented!")
def test_clear_system_logs(self):
# TODO: test remote.clear_system_logs()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_disable_netboot(self):
# TODO: test remote.disable_netboot()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_extended_version(self):
# TODO: test remote.extended_version()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_find_items_paged(self):
# TODO: test remote.find_items_paged()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_find_system_by_dns_name(self):
# TODO: test remote.find_system_by_dns_name()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_generatescript(self):
# TODO: test remote.generatescript()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_item_as_rendered(self):
# TODO: test remote.get_<item>_as_rendered()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_s_since(self):
# TODO: test remote.get_<item>s_since()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_authn_module_name(self):
# TODO: test remote.get_authn_module_name()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_blended_data(self):
# TODO: test remote.get_blended_data()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_config_data(self):
# TODO: test remote.get_config_dataa()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_repos_compatible_with_profile(self):
# TODO: test remote.get_repos_compatible_with_profile()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_status(self):
# TODO: test remote.get_status()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_template_file_for_profile(self):
# TODO: test remote.get_template_file_for_profile()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_get_template_file_for_system(self):
# TODO: test remote.get_template_file_for_system()
raise NotImplementedError()
- def test_is_kickstart_in_use(self):
- # TODO: test remote.is_kickstart_in_use()
+ @pytest.mark.skip(reason="Not Implemented!")
+ def test_is_autoinstall_in_use(self):
+ # TODO: test remote.is_autoinstall_in_use()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_logout(self):
# TODO: test remote.logout()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_modify_setting(self):
# TODO: test remote.modify_setting()
raise NotImplementedError()
- def test_read_or_write_kickstart_template(self):
- # TODO: test remote.read_or_write_kickstart_template()
+ @pytest.mark.skip(reason="Not Implemented!")
+ def test_read_autoinstall_template(self):
+ # TODO: test remote.read_autoinstall_template()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
+ def test_write_autoinstall_template(self):
+ # TODO: test remote.write_autoinstall_template()
+ raise NotImplementedError()
+
+ @pytest.mark.skip(reason="Not Implemented!")
+ def test_remove_autoinstall_template(self):
+ # TODO: test remote.remove_autoinstall_template()
+ raise NotImplementedError()
+
+ @pytest.mark.skip(reason="Not Implemented!")
def test_read_or_write_snippet(self):
# TODO: test remote.read_or_write_snippet()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_run_install_triggers(self):
# TODO: test remote.run_install_triggers()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_version(self):
# TODO: test remote.version()
raise NotImplementedError()
+ @pytest.mark.skip(reason="Not Implemented!")
def test_xapi_object_edit(self):
# TODO: test remote.xapi_object_edit()
raise NotImplementedError()
-
-
-if __name__ == '__main__':
- unittest.main()
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/non_object_calls_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/non_object_calls_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/non_object_calls_test.py
@@ -1,171 +1,165 @@
-import unittest
+import pytest
import time
import re
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
-from cobbler.remote import EVENT_COMPLETE
TEST_POWER_MANAGEMENT = True
TEST_SYSTEM = ""
-class TestNonObjectCalls(CobblerXmlRpcBaseTest):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestNonObjectCalls:
# TODO: Obsolete this method via a unittest method
- def _wait_task_end(self, tid):
+ def _wait_task_end(self, tid, remote):
"""
Wait until a task is finished
"""
timeout = 0
- while self.remote.get_task_status(tid)[2] != EVENT_COMPLETE:
- print("task %s status: %s" % (tid, self.remote.get_task_status(tid)))
+ # "complete" is the constant: EVENT_COMPLETE from cobbler.remote
+ while remote.get_task_status(tid)[2] != "complete":
+ print("task %s status: %s" % (tid, remote.get_task_status(tid)))
time.sleep(5)
timeout += 5
if timeout == 60:
raise Exception
- def test_token(self):
+ def test_token(self, token):
"""
Test: authentication token validation
"""
- assert self.token not in ("", None)
+ assert token not in ("", None)
- def test_get_user_from_token(self):
+ def test_get_user_from_token(self, remote, token):
"""
Test: get user data from authentication token
"""
- self.assertTrue(self.remote.get_user_from_token(self.token))
+ assert remote.get_user_from_token(token)
- def test_check(self):
+ def test_check(self, remote, token):
"""
Test: check Cobbler status
"""
- self.assertTrue(self.remote.check(self.token))
+ assert remote.check(token)
- def test_last_modified_time(self):
+ def test_last_modified_time(self, remote, token):
"""
Test: get last modification time
"""
- assert self.remote.last_modified_time(self.token) != 0
+ assert remote.last_modified_time(token) != 0
- def test_power_system(self):
+ def test_power_system(self, remote, token):
"""
Test: reboot a system
"""
if TEST_SYSTEM and TEST_POWER_MANAGEMENT:
- tid = self.remote.background_power_system({"systems": [TEST_SYSTEM],
- "power": "reboot"},
- self.token)
- self._wait_task_end(tid)
+ tid = remote.background_power_system({"systems": [TEST_SYSTEM], "power": "reboot"}, token)
+ self._wait_task_end(tid, remote)
- def test_sync(self):
+ def test_sync(self, remote, token):
"""
Test: synchronize Cobbler internal data with managed services
(dhcp, tftp, dns)
"""
- tid = self.remote.background_sync({}, self.token)
- events = self.remote.get_events(self.token)
+ tid = remote.background_sync({}, token)
+ events = remote.get_events(token)
- self.assertTrue(len(events) > 0)
+ assert len(events) > 0
- self._wait_task_end(tid)
+ self._wait_task_end(tid, remote)
- event_log = self.remote.get_event_log(tid)
+ event_log = remote.get_event_log(tid)
- def test_get_kickstart_templates(self):
+ def test_get_autoinstall_templates(self, remote, token):
"""
- Test: get kickstart templates
+ Test: get autoinstall templates
"""
- result = self.remote.get_kickstart_templates()
- self.assertTrue(len(result) > 0)
+ result = remote.get_autoinstall_templates(token)
+ assert len(result) > 0
- def test_get_snippets(self):
+ def test_get_autoinstall_snippets(self, remote, token):
"""
- Test: get snippets
+ Test: get autoinstall snippets
"""
- result = self.remote.get_snippets(self.token)
- self.assertTrue(len(result) > 0)
+ result = remote.get_autoinstall_snippets(token)
+ assert len(result) > 0
- def test_generate_kickstart(self):
+ def test_generate_autoinstall(self, remote):
"""
- Test: generate kickstart content
+ Test: generate autoinstall content
"""
if TEST_SYSTEM:
- self.remote.generate_kickstart(None, TEST_SYSTEM)
+ remote.generate_autoinstall(None, TEST_SYSTEM)
- def test_generate_gpxe(self):
+ def test_generate_gpxe(self, remote):
"""
Test: generate GPXE file content
"""
if TEST_SYSTEM:
- self.remote.generate_gpxe(None, TEST_SYSTEM)
+ remote.generate_gpxe(None, TEST_SYSTEM)
- def test_generate_bootcfg(self):
+ def test_generate_bootcfg(self, remote):
"""
Test: generate boot loader configuration file content
"""
if TEST_SYSTEM:
- self.remote.generate_bootcfg(None, TEST_SYSTEM)
+ remote.generate_bootcfg(None, TEST_SYSTEM)
- def test_get_settings(self):
+ def test_get_settings(self, remote, token):
"""
Test: get settings
"""
- self.remote.get_settings(self.token)
+ remote.get_settings(token)
- def test_get_signatures(self):
+ def test_get_signatures(self, remote, token):
"""
Test: get distro signatures
"""
- self.remote.get_signatures(self.token)
+ remote.get_signatures(token)
- def test_get_valid_breeds(self):
+ def test_get_valid_breeds(self, remote, token):
"""
Test: get valid OS breeds
"""
- breeds = self.remote.get_valid_breeds(self.token)
- self.assertTrue(len(breeds) > 0)
+ breeds = remote.get_valid_breeds(token)
+ assert len(breeds) > 0
- def test_get_valid_os_versions_for_breed(self):
+ def test_get_valid_os_versions_for_breed(self, remote, token):
"""
Test: get valid OS versions for a OS breed
"""
- versions = self.remote.get_valid_os_versions_for_breed("generic", self.token)
- self.assertTrue(len(versions) > 0)
+ versions = remote.get_valid_os_versions_for_breed("generic", token)
+ assert len(versions) > 0
- def test_get_valid_os_versions(self):
+ def test_get_valid_os_versions(self, remote, token):
"""
Test: get valid OS versions
"""
- versions = self.remote.get_valid_os_versions(self.token)
- self.assertTrue(len(versions) > 0)
+ versions = remote.get_valid_os_versions(token)
+ assert len(versions) > 0
- def test_get_random_mac(self):
+ def test_get_random_mac(self, remote, token):
"""
Test: get a random mac for a virtual network interface
"""
- mac = self.remote.get_random_mac("xen", self.token)
+ mac = remote.get_random_mac("xen", token)
hexa = "[0-9A-Fa-f]{2}"
match_obj = re.match("%s:%s:%s:%s:%s:%s" % (hexa, hexa, hexa, hexa, hexa, hexa), mac)
- self.assertTrue(match_obj)
-
-
-if __name__ == '__main__':
- unittest.main()
+ assert match_obj
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/package_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/package_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/package_test.py
@@ -1,6 +1,4 @@
-import unittest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
-
+import pytest
"""
Order is important currently:
@@ -14,68 +12,104 @@ self._remove_package()
"""
-class TestPackage(CobblerXmlRpcBaseTest):
+@pytest.fixture()
+def create_package(remote, token):
+ """
+ Adds a "testpackage0" for a test.
+ :param remote: See the correesponding fixture.
+ :param token: See the correesponding fixture.
+ """
+ package = remote.new_package(token)
+ remote.modify_package(package, "name", "testpackage0", token)
+ remote.save_package(package, token)
+
+
+@pytest.fixture()
+def remove_package(remote, token):
+ """
+ Removes a "testpackage0" for a test.
+ :param remote: See the correesponding fixture.
+ :param token: See the correesponding fixture.
+ """
+ yield
+ remote.remove_package("testpackage0", token)
+
- def test_create_package(self):
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestPackage:
+
+ @pytest.mark.usefixtures("remove_package")
+ def test_create_package(self, remote, token):
"""
Test: create/edit a package object
"""
- packages = self.remote.get_packages(self.token)
- package = self.remote.new_package(self.token)
+ packages = remote.get_packages(token)
+ package = remote.new_package(token)
- self.assertTrue(self.remote.modify_package(package, "name", "testpackage0", self.token))
- self.assertTrue(self.remote.save_package(package, self.token))
+ assert remote.modify_package(package, "name", "testpackage0", token)
+ assert remote.save_package(package, token)
- new_packages = self.remote.get_packages(self.token)
- self.assertTrue(len(new_packages) == len(packages) + 1)
+ new_packages = remote.get_packages(token)
+ assert len(new_packages) == len(packages) + 1
- def test_get_packages(self):
+ @pytest.mark.usefixtures("create_package", "remove_package")
+ def test_get_packages(self, remote, token):
"""
Test: Get packages
"""
- package = self.remote.get_packages()
+ package = remote.get_packages()
- def test_get_package(self):
+ @pytest.mark.usefixtures("create_package", "remove_package")
+ def test_get_package(self, remote):
"""
Test: Get a package object
"""
- package = self.remote.get_package("testpackage0")
+ package = remote.get_package("testpackage0")
- def test_find_package(self):
+ @pytest.mark.usefixtures("create_package", "remove_package")
+ def test_find_package(self, remote, token):
"""
Test: find a package object
"""
- result = self.remote.find_package({"name": "testpackage0"}, self.token)
- self.assertTrue(result)
+ result = remote.find_package({"name": "testpackage0"}, token)
+ assert result
- def test_copy_package(self):
+ @pytest.mark.usefixtures("create_package", "remove_package")
+ def test_copy_package(self, remote, token):
"""
Test: copy a package object
"""
+ # Arrange --> Done in fixture
+
+ # Act
+ package = remote.get_item_handle("package", "testpackage0", token)
+ result = remote.copy_package(package, "testpackagecopy", token)
- package = self.remote.get_item_handle("package", "testpackage0", self.token)
- self.assertTrue(self.remote.copy_package(package, "testpackagecopy", self.token))
+ # Assert
+ assert result
- def test_rename_package(self):
+ # Cleanup
+ remote.remove_package("testpackagecopy", token)
+
+ @pytest.mark.usefixtures("create_package", "remove_package")
+ def test_rename_package(self, remote, token):
"""
Test: rename a package object
"""
- package = self.remote.get_item_handle("package", "testpackagecopy", self.token)
- self.assertTrue(self.remote.rename_package(package, "testpackage1", self.token))
+ package = remote.get_item_handle("package", "testpackage0", token)
+ assert remote.rename_package(package, "testpackage1", token)
+ package = remote.get_item_handle("package", "testpackage1", token)
+ assert remote.rename_package(package, "testpackage0", token)
- def test_remove_package(self):
+ @pytest.mark.usefixtures("create_package")
+ def test_remove_package(self, remote, token):
"""
Test: remove a package object
"""
- self.assertTrue(self.remote.remove_package("testpackage0", self.token))
- self.assertTrue(self.remote.remove_package("testpackage1", self.token))
-
-
-if __name__ == '__main__':
- unittest.main()
+ assert remote.remove_package("testpackage0", token)
Index: cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/repo_test.py
===================================================================
--- cobbler-3.0.0+git20190222.9e502a9d.orig/tests/xmlrpcapi/repo_test.py
+++ cobbler-3.0.0+git20190222.9e502a9d/tests/xmlrpcapi/repo_test.py
@@ -1,127 +1,131 @@
-import unittest
import pytest
-from .cobbler_xmlrpc_base_test import CobblerXmlRpcBaseTest
-
-"""
-Order is currently important:
-self._get_repos()
-self._create_repo()
-self._get_repo()
-self._find_repo()
-self._copy_repo()
-self._rename_repo()
-self._remove_repo()
-"""
-
-
-class TestRepo(CobblerXmlRpcBaseTest):
-
- @pytest.fixture
- def createRepo(self):
- repo = self.remote.new_repo(self.token)
- self.remote.modify_repo(repo, "name", "testrepo0", self.token)
- self.remote.modify_repo(repo, "mirror", "http://www.sample.com/path/to/some/repo", self.token)
- self.remote.modify_repo(repo, "mirror_locally", "0", self.token)
- self.remote.save_repo(repo, self.token)
-
- def test_create_repo(self):
+@pytest.fixture
+def create_repo(remote, token):
+ """
+ Creates a Repository "testrepo0" with a mirror "http://www.sample.com/path/to/some/repo" and the attribute
+ "mirror_locally=0".
+ """
+ repo = remote.new_repo(token)
+ remote.modify_repo(repo, "name", "testrepo0", token)
+ remote.modify_repo(repo, "mirror", "http://www.sample.com/path/to/some/repo", token)
+ remote.modify_repo(repo, "mirror_locally", "0", token)
+ remote.save_repo(repo, token)
+
+
+@pytest.mark.usefixtures("cobbler_xmlrpc_base")
+class TestRepo:
+ def test_create_repo(self, remote, token):
"""
Test: create/edit a repo object
"""
- # TODO: Arrange
+ # Arrange --> Nothing to arrange
- # Act
- repo = self.remote.new_repo(self.token)
- self.assertTrue(self.remote.modify_repo(repo, "name", "testrepo0", self.token))
- self.assertTrue(self.remote.modify_repo(repo, "mirror", "http://www.sample.com/path/to/some/repo", self.token))
- self.assertTrue(self.remote.modify_repo(repo, "mirror_locally", "0", self.token))
- self.assertTrue(self.remote.save_repo(repo, self.token))
+ # Act & Assert
+ repo = remote.new_repo(token)
+ assert remote.modify_repo(repo, "name", "testrepo0", token)
+ assert remote.modify_repo(repo, "mirror", "http://www.sample.com/path/to/some/repo", token)
+ assert remote.modify_repo(repo, "mirror_locally", "0", token)
+ assert remote.save_repo(repo, token)
- # TODO: Assert
+ # Cleanup
+ remote.remove_repo("testrepo0", token)
- def test_get_repos(self):
+ def test_get_repos(self, remote):
"""
Test: Get repos
"""
- # TODO: Arrange
+ # Arrange --> Nothing to do
# Act
- self.remote.get_repos()
+ result = remote.get_repos()
- # TODO: Assert
+ # Assert
+ assert result == []
- def test_get_repo(self):
+ @pytest.mark.usefixtures("create_repo")
+ def test_get_repo(self, remote, token):
"""
Test: Get a repo object
"""
- # TODO: Arrange --> Place file under "/var/lib/coobler/collections/repos/?"
+ # Arrange --> Done in fixture
# Act
- repo = self.remote.get_repo("testrepo0")
+ repo = remote.get_repo("testrepo0")
+
+ # Assert
+ assert repo.get("name") == "testrepo0"
- # TODO: Assert
- # TODO: Cleanup
+ # Cleanup
+ remote.remove_repo("testrepo0", token)
- def test_find_repo(self, createRepo):
+ @pytest.mark.usefixtures("create_repo")
+ def test_find_repo(self, remote, token):
"""
Test: find a repo object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixture
# Act
- result = self.remote.find_repo({"name": "testrepo0"}, self.token)
+ result = remote.find_repo({"name": "testrepo0"}, token)
# Assert
- self.assertTrue(result)
- # TODO: Cleanup
+ assert result
- def test_copy_repo(self, createRepo):
+ # Cleanup
+ remote.remove_repo("testrepo0", token)
+
+ @pytest.mark.usefixtures("create_repo")
+ def test_copy_repo(self, remote, token):
"""
Test: copy a repo object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixture
# Act
- repo = self.remote.get_item_handle("repo", "testrepo0", self.token)
+ repo = remote.get_item_handle("repo", "testrepo0", token)
# Assert
- self.assertTrue(self.remote.copy_repo(repo, "testrepocopy", self.token))
- # TODO: Cleanup
+ assert remote.copy_repo(repo, "testrepocopy", token)
+
+ # Cleanup
+ remote.remove_repo("testrepo0", token)
+ remote.remove_repo("testrepocopy", token)
- def test_rename_repo(self, createRepo):
+ @pytest.mark.usefixtures("create_repo")
+ def test_rename_repo(self, remote, token):
"""
Test: rename a repo object
"""
- # TODO: Arrange
+ # Arrange
# Act
- repo = self.remote.get_item_handle("repo", "testrepo0", self.token)
+ repo = remote.get_item_handle("repo", "testrepo0", token)
+ result = remote.rename_repo(repo, "testrepo1", token)
# Assert
- self.assertTrue(self.remote.rename_repo(repo, "testrepo1", self.token))
- # TODO: Cleanup
+ assert result
+
+ # Cleanup
+ remote.remove_repo("testrepo1", token)
- def test_remove_repo(self, createRepo):
+ @pytest.mark.usefixtures("create_repo")
+ def test_remove_repo(self, remote, token):
"""
Test: remove a repo object
"""
- # TODO: Arrange
+ # Arrange --> Done in fixture
# Act
- result = self.remote.remove_repo("testrepo0", self.token)
+ result = remote.remove_repo("testrepo0", token)
- # TODO: Assert
- self.assertTrue(result)
-
-
-if __name__ == '__main__':
- unittest.main()
+ # Assert
+ assert result