| |
@@ -0,0 +1,198 @@
|
| |
+ from __future__ import print_function
|
| |
+
|
| |
+ import os
|
| |
+ import json
|
| |
+
|
| |
+ # These are the tests from the pagure/ git repo.
|
| |
+ # Run with:
|
| |
+ # PYTHONPATH=.:/path/to/pagure/checkout nosetests dist_git_auth_tests.py
|
| |
+ import tests
|
| |
+
|
| |
+ from pagure_distgit import plugin
|
| |
+
|
| |
+
|
| |
+ def setUp():
|
| |
+ tests.setUp()
|
| |
+
|
| |
+
|
| |
+ def tearDown():
|
| |
+ tests.tearDown()
|
| |
+
|
| |
+
|
| |
+ class PagureFlaskApiProjectBZOverrideTests(tests.Modeltests):
|
| |
+ 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_override_endpoint(self):
|
| |
+ """Test bugzilla overrides. """
|
| |
+
|
| |
+ output = self.app.get("/api/0/somenamespace/test3")
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ expected_result = {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ headers = {"Authorization": "token foo_token"}
|
| |
+ datainput = {
|
| |
+ "epel_assignee": "foo",
|
| |
+ "fedora_assignee": "pingou",
|
| |
+ }
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput, headers=headers
|
| |
+ )
|
| |
+ # invalid token
|
| |
+ self.assertEqual(output.status_code, 401)
|
| |
+
|
| |
+ headers = {"Authorization": "token BBBZZZOOO"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput, headers=headers
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 401)
|
| |
+
|
| |
+ 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)
|
| |
+
|
| |
+ # Change assignees with a valid token
|
| |
+ headers = {"Authorization": "token aaabbbcccddd"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput, headers=headers
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ expected_result = {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ # set both assignees to foo
|
| |
+ 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)
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, datainput)
|
| |
+
|
| |
+ # Change both assignees back to default
|
| |
+ 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)
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ # Change only one assignee, then change assignee back to default
|
| |
+ expected_result = {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ 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)
|
| |
+ datainput = {"epel_assignee": "", "fedora_assignee": "pingou"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput, headers=headers
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ output = self.app.get("/_dg/bzoverrides/somenamespace/test3")
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertDictEqual(data, expected_result)
|
| |
+
|
| |
+ user = tests.FakeUser(username="pingou")
|
| |
+ with tests.user_set(self.app.application, user):
|
| |
+ # change one assignee
|
| |
+ expected_result = {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ datainput = {"epel_assignee": "foo", "fedora_assignee": "pingou"}
|
| |
+ 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, expected_result)
|
| |
+
|
| |
+ # change one assignee
|
| |
+ expected_result = {"epel_assignee": "foo", "fedora_assignee": "foo"}
|
| |
+ 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, expected_result)
|
| |
+
|
| |
+ # reset assignees
|
| |
+ expected_result = {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ datainput = {"epel_assignee": None, "fedora_assignee": ""}
|
| |
+ 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, expected_result)
|
| |
+
|
| |
+ # change both assignees to foo, then change only one back
|
| |
+ # As the other is considered empty, both should be back to pingou
|
| |
+ expected_result = {"epel_assignee": "foo", "fedora_assignee": "foo"}
|
| |
+ 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, expected_result)
|
| |
+ expected_result = {"epel_assignee": "pingou", "fedora_assignee": "pingou"}
|
| |
+ datainput = {"epel_assignee": "pingou"}
|
| |
+ 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, expected_result)
|
| |
+
|
| |
+ # Invalid datainput resets to default
|
| |
+ datainput = {"epel_assignee": "foo","fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ datainput = {} # This is invalid input
|
| |
+ 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, expected_result)
|
| |
+
|
| |
+ datainput = {"epel_assignee": "foo","fedora_assignee": "foo"}
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+ datainput = None # Invalid input
|
| |
+ output = self.app.post(
|
| |
+ "/_dg/bzoverrides/somenamespace/test3", data=datainput
|
| |
+ )
|
| |
+ data = json.loads(output.get_data(as_text=True))
|
| |
+ self.assertEqual(output.status_code, 200)
|
| |
+
|
| |
+ 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)
|
| |
I disagree, it is entirely valid