From d5f38f16d60176a65befdb27f84a05507777fae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kone=C4=8Dn=C3=BD?= Date: Mon, 21 Mar 2022 13:22:10 +0100 Subject: [PATCH] Unit tests for scm_request_processor done MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unit tests are now covering 100% of current code. Signed-off-by: Michal Konečný --- tests/plugins/test_scm_request_processor.py | 128 ++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/tests/plugins/test_scm_request_processor.py b/tests/plugins/test_scm_request_processor.py index f129663..72ef349 100644 --- a/tests/plugins/test_scm_request_processor.py +++ b/tests/plugins/test_scm_request_processor.py @@ -2626,3 +2626,131 @@ class TestValidateReviewBug: call({"username": user}, "packager"), call({"username": user}, "packager"), ]) + + +class TestValidEpelPackage: + """ + Test class for `toddlers.plugins.scm_request_processor.SCMRequestProcessor.valid_epel_package` method. + """ + + def setup(self): + """ + Initialize toddler. + """ + self.toddler = scm_request_processor.SCMRequestProcessor() + self.toddler.pagure_io = Mock() + self.toddler.dist_git = Mock() + self.toddler.requests_session = Mock() + + def test_valid_epel_package_bad_response(self): + """ + Assert that method will raise error when bad response is retrieved. + """ + # Preparation + name = "package" + branch = "epel8" + + mock_response = Mock() + mock_response.status_code = 500 + self.toddler.requests_session.get.return_value = mock_response + + error = "Couldn't retrieve the list of official EL packages" + + # Method to test + with pytest.raises(ValidationError, match=error): + self.toddler.valid_epel_package(name=name, branch=branch) + + # Asserts + self.toddler.requests_session.get.assert_called_with( + "https://infrastructure.fedoraproject.org/repo/json/pkg_el8.json" + ) + + def test_valid_epel_package_epel6_noarch(self): + """ + Assert that method will return False when epel6 noarch package is introduced. + """ + # Preparation + name = "package" + branch = "epel6" + + mock_response = Mock() + mock_response.status_code = 200 + mock_response.json.return_value = { + "arches": ["noarch", "ppc", "i386"], + "packages": { + name: { + "arch": ["noarch"] + } + } + } + self.toddler.requests_session.get.return_value = mock_response + + # Method to test + result = self.toddler.valid_epel_package(name=name, branch=branch) + + # Asserts + self.toddler.requests_session.get.assert_called_with( + "https://infrastructure.fedoraproject.org/repo/json/pkg_el6.json" + ) + + assert result is False + + def test_valid_epel_package_epel7_noarch(self): + """ + Assert that method will return False when epel7 noarch package is introduced. + """ + # Preparation + name = "package" + branch = "epel7" + + mock_response = Mock() + mock_response.status_code = 200 + mock_response.json.return_value = { + "arches": ["noarch", "ppc", "i386"], + "packages": { + name: { + "arch": ["noarch"] + } + } + } + self.toddler.requests_session.get.return_value = mock_response + + # Method to test + result = self.toddler.valid_epel_package(name=name, branch=branch) + + # Asserts + self.toddler.requests_session.get.assert_called_with( + "https://infrastructure.fedoraproject.org/repo/json/pkg_el7.json" + ) + + assert result is False + + def test_valid_epel_package_valid_package(self): + """ + Assert that method will return True when package is valid. + """ + # Preparation + name = "package" + branch = "epel8" + + mock_response = Mock() + mock_response.status_code = 200 + mock_response.json.return_value = { + "arches": ["noarch", "ppc", "i386"], + "packages": { + name: { + "arch": ["x86_64"] + } + } + } + self.toddler.requests_session.get.return_value = mock_response + + # Method to test + result = self.toddler.valid_epel_package(name=name, branch=branch) + + # Asserts + self.toddler.requests_session.get.assert_called_with( + "https://infrastructure.fedoraproject.org/repo/json/pkg_el8.json" + ) + + assert result is True