| |
@@ -0,0 +1,260 @@
|
| |
+ from __future__ import print_function
|
| |
+
|
| |
+ import os
|
| |
+ import json
|
| |
+
|
| |
+ import tests
|
| |
+
|
| |
+ from pagure_distgit import plugin
|
| |
+
|
| |
+
|
| |
+ class PagureFlaskApiProjectBZOverrideTests(tests.Modeltests):
|
| |
+ """ Tests the bugzilla override endpoints added in pagure-dist-git. """
|
| |
+
|
| |
+ def setUp(self):
|
| |
+ """ Set up the environnment, ran before every tests. """
|
| |
+ super(PagureFlaskApiProjectBZOverrideTests, self).setUp()
|
| |
+ self.session.flush()
|
| |
+ tests.create_projects(self.session)
|
| |
+ tests.create_projects_git(os.path.join(self.path, "repos"), bare=True)
|
| |
+ tests.create_tokens(self.session)
|
| |
+ tests.create_tokens_acl(self.session)
|
| |
+ self._app.register_blueprint(plugin.DISTGIT_NS)
|
| |
+
|
| |
+ def test_default_values(self):
|
| |
+ """Test the default values returned by the bz overrides endpoint. """
|
| |
+
|
| |
+ expected_result = {
|
| |
+ "epel_assignee": "pingou",
|
| |
+ "fedora_assignee": "pingou",
|
| |
+ }
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ def test_token_missing_ACL(self):
|
| |
+ """Test the bz endpoint with an API token missing the `modify_project` ACL.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token foo_token"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", headers=headers
|
| |
+ )
|
| |
+ # invalid token
|
| |
+ self.assertEqual(output.status_code, 401)
|
| |
+
|
| |
+ def test_invalid_token(self):
|
| |
+ """Test the bz endpoint with an invalid API token. """
|
| |
+ headers = {"Authorization": "token BBBZZZOOO"}
|
| |
+ datainput = {}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 401)
|
| |
+
|
| |
+ def test_change_both_assignee(self):
|
| |
+ """Test the bz endpoint when changing both assignee at once. """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"epel_assignee": "foo", "fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, datainput)
|
| |
+
|
| |
+ def test_change_fedora_assignee(self):
|
| |
+ """Test the bz endpoint when changing the Fedora assignee while keeping
|
| |
+ the EPEL one.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, datainput)
|
| |
+
|
| |
+ def test_change_epel_assignee(self):
|
| |
+ """Test the bz endpoint when changing the EPEL assignee while keeping
|
| |
+ the Fedora one.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"epel_assignee": "", "fedora_assignee": None}
|
| |
+ expected_result = {
|
| |
+ "epel_assignee": "pingou",
|
| |
+ "fedora_assignee": "pingou",
|
| |
+ }
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ def test_reset_fedora_assignees(self):
|
| |
+ """Test the bz endpoint when resetting the Fedora assignee.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "foo"}
|
| |
+ )
|
| |
+
|
| |
+ datainput = {"fedora_assignee": ""}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |
+
|
| |
+ def test_reset_epel_assignees(self):
|
| |
+ """Test the bz endpoint when resetting the EPEL assignee.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, datainput)
|
| |
+
|
| |
+ datainput = {"fedora_assignee": "pingou"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |
+
|
| |
+ def test_reset_both_assignees(self):
|
| |
+ """Test the bz endpoint when resetting the both assignees.
|
| |
+ """
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ datainput = {"epel_assignee": "", "fedora_assignee": "pingou"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3",
|
| |
+ data=datainput,
|
| |
+ headers=headers,
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |
+
|
| |
+ def test_changing_assignees_logged_in_invalid_user(self):
|
| |
+ """Test the bz endpoint when changing the both assignees when logged in
|
| |
+ the UI but with an user that is not allowed.
|
| |
+ """
|
| |
+ user = tests.FakeUser(username="foo")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ expected_result = {
|
| |
+ "epel_assignee": "pingou",
|
| |
+ "fedora_assignee": "pingou",
|
| |
+ }
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=expected_result
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 401)
|
| |
+
|
| |
+ def test_change_epel_assignee_logged_in(self):
|
| |
+ """Test the bz endpoint when changing the EPEL assignee when logged in
|
| |
+ the UI.
|
| |
+ """
|
| |
+ user = tests.FakeUser(username="pingou")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ # change one assignee
|
| |
+ expected_result = {"epel_assignee": "foo"}
|
| |
+ datainput = {"epel_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |
+
|
| |
+ def test_change_fedora_assignee_logged_in(self):
|
| |
+ """Test the bz endpoint when changing the Fedora assignee when logged in
|
| |
+ the UI.
|
| |
+ """
|
| |
+ user = tests.FakeUser(username="pingou")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ # change one assignee
|
| |
+ datainput = {"fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "foo"}
|
| |
+ )
|
| |
+
|
| |
+ def test_change_both_assignees_logged_in(self):
|
| |
+ """Test the bz endpoint when changing the both assignees when logged in
|
| |
+ the UI.
|
| |
+ """
|
| |
+ user = tests.FakeUser(username="pingou")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ datainput = {"epel_assignee": "foo", "fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "foo", "fedora_assignee": "foo"}
|
| |
+ )
|
| |
+
|
| |
+ def test_resetting_assignees_logged_in(self):
|
| |
+ """Test the bz endpoint when resetting assignees when logged in the UI.
|
| |
+ """
|
| |
+ user = tests.FakeUser(username="pingou")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ datainput = {"epel_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |
+
|
| |
+ output = self.app.post("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(
|
| |
+ data, {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ )
|
| |