| |
@@ -2799,36 +2799,23 @@
|
| |
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_bad_response_epel9(self):
|
| |
+ @pytest.mark.parametrize(
|
| |
+ "branch",
|
| |
+ [
|
| |
+ "epel8",
|
| |
+ "epel9",
|
| |
+ "epel9-next",
|
| |
+ "epel10",
|
| |
+ "epel10.0",
|
| |
+ ],
|
| |
+ )
|
| |
+ def test_valid_epel_package_bad_response(self, branch):
|
| |
"""
|
| |
Assert that method will raise error when bad response is retrieved.
|
| |
"""
|
| |
# Preparation
|
| |
name = "package"
|
| |
- branch = "epel9"
|
| |
+ major_version = int(re.findall(r"^epel(\d+)(?:\.\d+)?(?:-next)?$", branch)[0])
|
| |
|
| |
mock_response = Mock()
|
| |
mock_response.status_code = 500
|
| |
@@ -2841,149 +2828,76 @@
|
| |
self.toddler.valid_epel_package(name=name, branch=branch)
|
| |
|
| |
# Asserts
|
| |
- self.toddler.requests_session.get.assert_called_with(
|
| |
- "https://composes.stream.centos.org/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
- )
|
| |
-
|
| |
- 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_correct_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
|
| |
+ if major_version == 8:
|
| |
+ url = "https://infrastructure.fedoraproject.org/repo/json/pkg_el8.json" # NOQA E501
|
| |
+ elif major_version == 9:
|
| |
+ url = "https://composes.stream.centos.org/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
+ else:
|
| |
+ url = f"https://composes.stream.centos.org/stream-{major_version}/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
+ self.toddler.requests_session.get.assert_called_with(url)
|
| |
|
| |
- def test_valid_epel_package_epel9(self):
|
| |
+ @pytest.mark.parametrize(
|
| |
+ "name, branch, expected",
|
| |
+ [
|
| |
+ ("hello", "epel8", True),
|
| |
+ ("hello", "epel9", True),
|
| |
+ ("hello", "epel9-next", True),
|
| |
+ ("hello", "epel10", True),
|
| |
+ ("hello", "epel10.0", True),
|
| |
+ ("bash", "epel8", False),
|
| |
+ ("bash", "epel9", False),
|
| |
+ ("bash", "epel9-next", False),
|
| |
+ ("bash", "epel10", False),
|
| |
+ ("bash", "epel10.0", False),
|
| |
+ ],
|
| |
+ )
|
| |
+ def test_valid_epel_package_correct_package(self, name, branch, expected):
|
| |
"""
|
| |
- Assert that method will return False when epel9 package already exists.
|
| |
+ Assert that method will return correct response about package validity.
|
| |
"""
|
| |
# Preparation
|
| |
- name = "package"
|
| |
- branch = "epel9"
|
| |
+ major_version = int(re.findall(r"^epel(\d+)(?:\.\d+)?(?:-next)?$", branch)[0])
|
| |
|
| |
mock_response = Mock()
|
| |
mock_response.status_code = 200
|
| |
- mock_response.json.return_value = {
|
| |
- "payload": {
|
| |
- "rpms": {
|
| |
- "AppStream": {"noarch": {"package-0:2.2-1.el9.src": {}}},
|
| |
- "BaseOS": {"noarch": {}},
|
| |
- "CRB": {"noarch": {}},
|
| |
+ if major_version == 8:
|
| |
+ metadata = {"packages": {"bash": {}}}
|
| |
+ elif major_version == 9:
|
| |
+ metadata = {
|
| |
+ "payload": {
|
| |
+ "rpms": {
|
| |
+ "BaseOS": {"x86_64": {"bash-0:5.1.8-9.el9.src": {}}},
|
| |
+ "AppStream": {"x86_64": {}},
|
| |
+ "CRB": {"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://composes.stream.centos.org/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
- )
|
| |
-
|
| |
- assert result is False
|
| |
-
|
| |
- def test_valid_epel_package_epel9_noarch_correct_package(self):
|
| |
- """
|
| |
- Assert that method will return True when package is valid.
|
| |
- """
|
| |
- # Preparation
|
| |
- name = "package"
|
| |
- branch = "epel9"
|
| |
-
|
| |
- mock_response = Mock()
|
| |
- mock_response.status_code = 200
|
| |
- mock_response.json.return_value = {
|
| |
- "payload": {
|
| |
- "rpms": {
|
| |
- "AppStream": {"noarch": {}},
|
| |
- "BaseOS": {"noarch": {}},
|
| |
- "CRB": {"noarch": {}},
|
| |
+ else:
|
| |
+ metadata = {
|
| |
+ "payload": {
|
| |
+ "rpms": {
|
| |
+ "BaseOS": {"x86_64": {"bash-0:5.2.26-4.el10.src": {}}},
|
| |
+ "AppStream": {"x86_64": {}},
|
| |
+ "CRB": {"x86_64": {}},
|
| |
+ }
|
| |
}
|
| |
}
|
| |
- }
|
| |
+ mock_response.json.return_value = metadata
|
| |
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://composes.stream.centos.org/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
- )
|
| |
-
|
| |
- assert result is True
|
| |
+ if major_version == 8:
|
| |
+ url = "https://infrastructure.fedoraproject.org/repo/json/pkg_el8.json" # NOQA E501
|
| |
+ elif major_version == 9:
|
| |
+ url = "https://composes.stream.centos.org/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
+ else:
|
| |
+ url = f"https://composes.stream.centos.org/stream-{major_version}/production/latest-CentOS-Stream/compose/metadata/rpms.json" # NOQA E501
|
| |
+ self.toddler.requests_session.get.assert_called_with(url)
|
| |
+
|
| |
+ assert result is expected
|
| |
|
| |
|
| |
class TestMain:
|
| |
This PR primarily adds EPEL 10 support to scm_request_processor. To make those changes testable, it also parametrizes a few tests. See individual commit messages for more details.