From bdbff56789d6e8dd70fc8da9d4772dfeb940a5ca Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Feb 22 2021 14:14:07 +0000 Subject: Adjust the branch looked up on PDC depending on the namespace Adjust the tests so it uses a project in the rpms namespace and check how PDC is being called. Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure_distgit/plugin.py b/pagure_distgit/plugin.py index 60dfbdd..a4f24f9 100644 --- a/pagure_distgit/plugin.py +++ b/pagure_distgit/plugin.py @@ -152,9 +152,14 @@ def _is_active_in_pdc(name, namespace): % namespace, ) - url = "%s?global_component=%s&name=master&type=%s" % ( + branch = "master" + if namespace in ["rpms", "container"]: + branch = "rawhide" + + url = "%s?global_component=%s&name=%s&type=%s" % ( pdc_url, name, + branch, pdc_namespace, ) diff --git a/pagure_distgit_tests/test_plugin.py b/pagure_distgit_tests/test_plugin.py index 0e5a602..e1d38ca 100644 --- a/pagure_distgit_tests/test_plugin.py +++ b/pagure_distgit_tests/test_plugin.py @@ -1,9 +1,10 @@ import json import os -from unittest.mock import patch +from unittest.mock import patch, MagicMock import pagure.lib.model import pagure.lib.query +import pygit2 from pagure_distgit import model from pagure_distgit import plugin @@ -274,8 +275,27 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): [], ) + # Create a rpms/test4 project + item = pagure.lib.model.Project( + user_id=1, # pingou + name="test4", + namespace="rpms", + is_fork=False, + parent_id=None, + description="test project #4", + hook_token="aaabbbcccdd", + ) + item.close_status = ["Invalid", "Insufficient data", "Fixed", "Duplicate"] + self.session.add(item) + self.session.flush() + tests.create_locks(self.session, item) + self.session.commit() + # Create its git repo + repo_path = os.path.join(self.path, "repos", "rpms", "test4.git") + pygit2.init_repository(repo_path, bare=True) + repo = pagure.lib.query.get_authorized_project( - self.session, "test3", namespace="somenamespace", + self.session, "test4", namespace="rpms", ) token = pagure.lib.query.get_api_token(self.session, "aaabbbcccddd") token.project = repo @@ -297,7 +317,7 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): """ headers = {"Authorization": "token foo_token"} output = self.app.post( - "/_dg/take_orphan/somenamespace/test3", headers=headers + "/_dg/take_orphan/rpms/test4", headers=headers ) # invalid token assert output.status_code == 401 @@ -306,7 +326,7 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): """Test the take orphan endpoint with an invalid API token. """ headers = {"Authorization": "token BBBZZZOOO"} output = self.app.post( - "/_dg/take_orphan/somenamespace/test3", headers=headers, + "/_dg/take_orphan/rpms/test4", headers=headers, ) assert output.status_code == 401 @@ -318,11 +338,11 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): mock_pdc.return_value = True headers = {"Authorization": "token aaabbbcccddd"} repo = pagure.lib.query.get_authorized_project( - self.session, "test3", namespace="somenamespace", + self.session, "test4", namespace="rpms", ) assert repo.orphan_reason.reason == "reason" output = self.app.post( - "/_dg/take_orphan/somenamespace/test3", headers=headers, + "/_dg/take_orphan/rpms/test4", headers=headers, ) assert output.status_code == 200 data = json.loads(output.get_data(as_text=True)) @@ -335,23 +355,27 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): assert mock_log.call_count == 1 - @patch("pagure_distgit.plugin._is_active_in_pdc") + @patch.dict("pagure.config.config", {"PDC_URL": "invalid://"}) + @patch("pagure_distgit.plugin.requests") @patch("pagure_distgit.plugin.pagure.lib.notify.log") - def test_take_orphan_no_reason(self, mock_log, mock_pdc): + def test_take_orphan_no_reason(self, mock_log, mock_req): """ Assert that package is correctly adopted when reason is not provided. """ - mock_pdc.return_value = True + resp = MagicMock() + resp.url = "http://localhost" + resp.json.return_value = {"results": [{"active": True}]} + mock_req.get.return_value = resp headers = {"Authorization": "token aaabbbcccddd"} repo = pagure.lib.query.get_authorized_project( - self.session, "test3", namespace="somenamespace", + self.session, "test4", namespace="rpms", ) reason = repo.orphan_reason self.session.delete(reason) self.session.commit() output = self.app.post( - "/_dg/take_orphan/somenamespace/test3", headers=headers, + "/_dg/take_orphan/rpms/test4", headers=headers, ) assert output.status_code == 200 data = json.loads(output.get_data(as_text=True)) @@ -362,3 +386,10 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): assert repo.user.user == "pingou" assert mock_log.call_count == 1 + + assert mock_req.get.call_count == 1 + mock_req.get.assert_called_with( + "invalid:/component-branches/?" + "global_component=test4&name=rawhide&type=rpm", + timeout=(30, 30) + )