| |
@@ -292,6 +292,16 @@
|
| |
True,
|
| |
[],
|
| |
)
|
| |
+ pagure.lib.query.add_group(
|
| |
+ self.session,
|
| |
+ "rel-eng",
|
| |
+ "rel-eng",
|
| |
+ "",
|
| |
+ "user",
|
| |
+ "pingou",
|
| |
+ True,
|
| |
+ [],
|
| |
+ )
|
| |
|
| |
# Create a rpms/test4 project
|
| |
item = pagure.lib.model.Project(
|
| |
@@ -424,3 +434,129 @@
|
| |
"global_component=test4&name=rawhide&type=rpm",
|
| |
timeout=(30, 30),
|
| |
)
|
| |
+
|
| |
+ @patch("pagure_distgit.plugin._is_active_in_pdc")
|
| |
+ def test_give_orphan_no_user(self, mock_pdc):
|
| |
+ """Assert that the point_of_contact cannot be updated without specifying user."""
|
| |
+ mock_pdc.return_value = True
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ repo = pagure.lib.query.get_authorized_project(
|
| |
+ self.session,
|
| |
+ "test4",
|
| |
+ namespace="rpms",
|
| |
+ )
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/give_orphan/rpms/test4",
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ assert output.status_code == 404
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ assert data["error"] == "No such user found"
|
| |
+ assert data["error_code"] == "ENOUSER"
|
| |
+ assert data["errors"] == "You have to specify a user as point_of_contact."
|
| |
+
|
| |
+ @patch("pagure_distgit.plugin._is_active_in_pdc")
|
| |
+ @patch("pagure_distgit.plugin.pagure.lib.notify.log")
|
| |
+ def test_give_orphan(self, mock_log, mock_pdc):
|
| |
+ """Assert that point of contact is correctly updated."""
|
| |
+ mock_pdc.return_value = True
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ orphan_user_obj = pagure.lib.query.get_user(self.session, "orphan")
|
| |
+ repo = pagure.lib.query.get_authorized_project(
|
| |
+ self.session,
|
| |
+ "test4",
|
| |
+ namespace="rpms",
|
| |
+ )
|
| |
+
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/give_orphan/rpms/test4?user=pingou",
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ assert output.status_code == 200
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, {"point_of_contact": "pingou"})
|
| |
+
|
| |
+ @patch("pagure_distgit.plugin._is_active_in_pdc")
|
| |
+ @patch("pagure_distgit.plugin.pagure.lib.notify.log")
|
| |
+ def test_give_orphan_user_not_in_packager_group(self, mock_log, mock_pdc):
|
| |
+ """Assert that point of contact is correctly updated."""
|
| |
+ mock_pdc.return_value = True
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ orphan_user_obj = pagure.lib.query.get_user(self.session, "orphan")
|
| |
+ repo = pagure.lib.query.get_authorized_project(
|
| |
+ self.session,
|
| |
+ "test4",
|
| |
+ namespace="rpms",
|
| |
+ )
|
| |
+
|
| |
+ repo.user = orphan_user_obj
|
| |
+ self.session.add(repo)
|
| |
+ self.session.commit()
|
| |
+
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/give_orphan/rpms/test4?user=orphan",
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ assert (
|
| |
+ data["error"]
|
| |
+ == "You do not have sufficient permissions to perform this action"
|
| |
+ )
|
| |
+ assert data["error_code"] == "ENOTHIGHENOUGH"
|
| |
+ assert data["errors"] == "The new POC must be a packager to adopt a package."
|
| |
+
|
| |
+ @patch("pagure_distgit.plugin._is_active_in_pdc")
|
| |
+ @patch("pagure_distgit.plugin.pagure.lib.notify.log")
|
| |
+ def test_give_orphan_repo_user_not_orphan(self, mock_log, mock_pdc):
|
| |
+ """Assert that point of contact is correctly updated."""
|
| |
+ mock_pdc.return_value = True
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ orphan_user_obj = pagure.lib.query.get_user(self.session, "pingou")
|
| |
+ repo = pagure.lib.query.get_authorized_project(
|
| |
+ self.session,
|
| |
+ "test4",
|
| |
+ namespace="rpms",
|
| |
+ )
|
| |
+
|
| |
+ repo.user = orphan_user_obj
|
| |
+ self.session.add(repo)
|
| |
+ self.session.commit()
|
| |
+
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/give_orphan/rpms/test4?user=orphan",
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ assert data["error"] == "You are not allowed to modify this project"
|
| |
+ assert data["error_code"] == "EMODIFYPROJECTNOTALLOWED"
|
| |
+
|
| |
+ @patch("pagure_distgit.plugin._is_active_in_pdc")
|
| |
+ @patch("pagure_distgit.plugin.pagure.lib.notify.log")
|
| |
+ def test_give_orphan_user_not_in_releng_or_admin_group(self, mock_log, mock_pdc):
|
| |
+ """Assert that point of contact is correctly updated."""
|
| |
+ mock_pdc.return_value = True
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ repo = pagure.lib.query.get_authorized_project(
|
| |
+ self.session,
|
| |
+ "test4",
|
| |
+ namespace="rpms",
|
| |
+ )
|
| |
+ pagure.lib.query.delete_user_of_group(
|
| |
+ self.session,
|
| |
+ "pingou",
|
| |
+ "rel-eng",
|
| |
+ "pingou",
|
| |
+ False,
|
| |
+ force=True,
|
| |
+ )
|
| |
+ self.session.commit()
|
| |
+
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/give_orphan/rpms/test4?user=foo",
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ assert output.status_code == 403
|
| |
+ assert data["errors"] == "You must be in rel-eng or admin group to assign a package."
|
| |
+ assert data["error_code"] == "ENOTHIGHENOUGH"
|
| |
Signed-off-by: Mattia Verga mattia.verga@protonmail.com