From 1b252696d889d734dacc341fcb8a2fb839b629fa Mon Sep 17 00:00:00 2001 From: Tomas Hrcka Date: Nov 25 2021 07:11:42 +0000 Subject: Extend take_orphan endpoint to accept fas username in POST data Fixes: releng#10394 Signed-off-by: Tomas Hrcka --- diff --git a/pagure_distgit/plugin.py b/pagure_distgit/plugin.py index 43dd6b6..0a7fe2f 100644 --- a/pagure_distgit/plugin.py +++ b/pagure_distgit/plugin.py @@ -342,9 +342,11 @@ def take_orphan_endpoint(namespace, repo): repo = _get_repo(repo, namespace=namespace) _check_token(repo, project_token=False) - + # check the POST data for fas_username to assign package to + # if not present use current users fas + fas_user_params = flask.request.args.get('fas_username') user_obj = pagure.lib.query.get_user( - flask.g.session, flask.g.fas_user.username + flask.g.session, flask.g.fas_user.username if fas_user_params is None else fas_user_params ) if not user_obj: raise pagure.exceptions.APIError(404, error_code=APIERROR.ENOUSER) diff --git a/pagure_distgit_tests/test_plugin.py b/pagure_distgit_tests/test_plugin.py index 39c5928..7f5bde4 100644 --- a/pagure_distgit_tests/test_plugin.py +++ b/pagure_distgit_tests/test_plugin.py @@ -375,6 +375,37 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): assert repo.orphan_reason.reason == "reason" output = self.app.post( "/_dg/take_orphan/rpms/test4", + headers=headers, + json={'fas_username': 'jednorozec'}, + ) + assert output.status_code == 200 + data = json.loads(output.get_data(as_text=True)) + self.assertDictEqual(data, {"point_of_contact": "jednorozec"}) + + # refresh the repo object, so we have the current state + self.session.refresh(repo) + assert repo.user.user == "jednorozec" + assert not repo.orphan_reason + + assert mock_log.call_count == 1 + + @patch("pagure_distgit.plugin._is_active_in_pdc") + @patch("pagure_distgit.plugin.pagure.lib.notify.log") + def test_take_orphan_specify_fas(self, mock_log, mock_pdc): + """ + Assert that package is correctly adopted. + By user specified in the POST data + """ + mock_pdc.return_value = True + headers = {"Authorization": "token aaabbbcccddd"} + repo = pagure.lib.query.get_authorized_project( + self.session, + "test4", + namespace="rpms", + ) + assert repo.orphan_reason.reason == "reason" + output = self.app.post( + "/_dg/take_orphan/rpms/test4", headers=headers, ) assert output.status_code == 200 @@ -388,6 +419,7 @@ class PagureFlaskApiTakeOrphanEndpointTests(tests.Modeltests): assert mock_log.call_count == 1 + @patch.dict("pagure.config.config", {"PDC_URL": "invalid://"}) @patch("pagure_distgit.plugin.requests") @patch("pagure_distgit.plugin.pagure.lib.notify.log")