#91 Rework the tests structure and design
Merged 5 years ago by pingou. Opened 5 years ago by pingou.

file modified
+1 -3
@@ -75,9 +75,7 @@ 

  The tests here require the *test suite* of pagure itself to work.  You have to

  modify your PYTHONPATH to find them. Run with::

  

-     $ PYTHONPATH=.:/path/to/pagure/checkout nosetests dist_git_auth_tests.py

- or

-     $ PYTHONPATH=.:/path/to/pagure/checkout nosetests bugzilla-override-tests.py

+     $ PYTHONPATH=.:/path/to/pagure/checkout nosetests pagure_distgit_tests/

  

  You can use our requirements-testing.txt to install testing dependencies with pip:

      $ pip install -r /path/to/pagure/checkout/requirements.txt

@@ -1,198 +0,0 @@ 

- 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)

@@ -0,0 +1,11 @@ 

+ from __future__ import print_function

+ 

+ import tests

+ 

+ 

+ def setUp():

+     tests.setUp()

+ 

+ 

+ def tearDown():

+     tests.tearDown()

@@ -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"}

+             )

file renamed
-10
@@ -5,9 +5,6 @@ 

  

  from mock import Mock, patch

  

- # These are the tests from the pagure/ git repo.

- # Run with:

- # PYTHONPATH=.:/path/to/pagure/checkout nosetests dist_git_auth_tests.py

  import pagure.config

  import pagure.exceptions

  import pagure.lib.model
@@ -22,13 +19,6 @@ 

  import dist_git_auth

  

  

- def setUp():

-     tests.setUp()

- 

- 

- def tearDown():

-     tests.tearDown()

- 

  

  def patch_pdc(values):

      """ Decorator to patch the PDC calls to return values for this test.