mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-05 03:38:12 +08:00
Make testing with different configuration values easier and less error-prone by using mock.patch to change the configuration.
This commit is contained in:
@@ -34,7 +34,7 @@ import module_build_service.scheduler.handlers.repos
|
||||
import module_build_service.utils
|
||||
from module_build_service import db, models, conf
|
||||
|
||||
from mock import patch
|
||||
from mock import patch, PropertyMock
|
||||
|
||||
from tests import app, init_data
|
||||
import os
|
||||
@@ -203,15 +203,13 @@ class TestModuleBuilder(GenericBuilder):
|
||||
pass
|
||||
|
||||
|
||||
@patch("module_build_service.config.Config.system",
|
||||
new_callable=PropertyMock, return_value = "mock")
|
||||
class TestBuild(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
GenericBuilder.register_backend_class(TestModuleBuilder)
|
||||
self.client = app.test_client()
|
||||
self._prev_system = conf.system
|
||||
self._prev_num_consecutive_builds = conf.num_consecutive_builds
|
||||
|
||||
conf.set_item("system", "mock")
|
||||
|
||||
init_data()
|
||||
models.ModuleBuild.query.delete()
|
||||
@@ -222,8 +220,6 @@ class TestBuild(unittest.TestCase):
|
||||
self.vcr.__enter__()
|
||||
|
||||
def tearDown(self):
|
||||
conf.set_item("system", self._prev_system)
|
||||
conf.set_item("num_consecutive_builds", self._prev_num_consecutive_builds)
|
||||
TestModuleBuilder.reset()
|
||||
|
||||
# Necessary to restart the twisted reactor for the next test.
|
||||
@@ -237,7 +233,7 @@ class TestBuild(unittest.TestCase):
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build(self, mocked_scm, mocked_get_user):
|
||||
def test_submit_build(self, mocked_scm, mocked_get_user, conf_system):
|
||||
"""
|
||||
Tests the build of testmodule.yaml using TestModuleBuilder which
|
||||
succeeds everytime.
|
||||
@@ -292,7 +288,7 @@ class TestBuild(unittest.TestCase):
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_from_yaml(self, mocked_scm, mocked_get_user):
|
||||
def test_submit_build_from_yaml(self, mocked_scm, mocked_get_user, conf_system):
|
||||
MockedSCM(mocked_scm, "testmodule", "testmodule.yaml")
|
||||
|
||||
testmodule = os.path.join(base_dir, 'staged_data', 'testmodule.yaml')
|
||||
@@ -305,18 +301,21 @@ class TestBuild(unittest.TestCase):
|
||||
data={'yaml': (testmodule, yaml)})
|
||||
return json.loads(rv.data)
|
||||
|
||||
conf.set_item("yaml_submit_allowed", True)
|
||||
data = submit()
|
||||
self.assertEqual(data['id'], 1)
|
||||
with patch("module_build_service.config.Config.yaml_submit_allowed",
|
||||
new_callable=PropertyMock, return_value = True):
|
||||
conf.set_item("yaml_submit_allowed", True)
|
||||
data = submit()
|
||||
self.assertEqual(data['id'], 1)
|
||||
|
||||
conf.set_item("yaml_submit_allowed", False)
|
||||
data = submit()
|
||||
self.assertEqual(data['status'], 401)
|
||||
self.assertEqual(data['message'], 'YAML submission is not enabled')
|
||||
with patch("module_build_service.config.Config.yaml_submit_allowed",
|
||||
new_callable=PropertyMock, return_value = False):
|
||||
data = submit()
|
||||
self.assertEqual(data['status'], 401)
|
||||
self.assertEqual(data['message'], 'YAML submission is not enabled')
|
||||
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
def test_submit_build_with_optional_params(self, mocked_get_user):
|
||||
def test_submit_build_with_optional_params(self, mocked_get_user, conf_system):
|
||||
params = {'branch': 'master', 'scmurl': 'git://pkgs.stg.fedoraproject.org/modules/'
|
||||
'testmodule.git?#68932c90de214d9d13feefbd35246a81b6cb8d49'}
|
||||
|
||||
@@ -335,7 +334,7 @@ class TestBuild(unittest.TestCase):
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_cancel(self, mocked_scm, mocked_get_user):
|
||||
def test_submit_build_cancel(self, mocked_scm, mocked_get_user, conf_system):
|
||||
"""
|
||||
Submit all builds for a module and cancel the module build later.
|
||||
"""
|
||||
@@ -387,7 +386,7 @@ class TestBuild(unittest.TestCase):
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_instant_complete(self, mocked_scm, mocked_get_user):
|
||||
def test_submit_build_instant_complete(self, mocked_scm, mocked_get_user, conf_system):
|
||||
"""
|
||||
Tests the build of testmodule.yaml using TestModuleBuilder which
|
||||
succeeds everytime.
|
||||
@@ -418,7 +417,11 @@ class TestBuild(unittest.TestCase):
|
||||
@timed(30)
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_concurrent_threshold(self, mocked_scm, mocked_get_user):
|
||||
@patch("module_build_service.config.Config.num_consecutive_builds",
|
||||
new_callable=PropertyMock, return_value = 1)
|
||||
def test_submit_build_concurrent_threshold(self, conf_num_consecutive_builds,
|
||||
mocked_scm, mocked_get_user,
|
||||
conf_system):
|
||||
"""
|
||||
Tests the build of testmodule.yaml using TestModuleBuilder with
|
||||
num_consecutive_builds set to 1.
|
||||
@@ -426,8 +429,6 @@ class TestBuild(unittest.TestCase):
|
||||
MockedSCM(mocked_scm, 'testmodule', 'testmodule.yaml',
|
||||
'620ec77321b2ea7b0d67d82992dda3e1d67055b4')
|
||||
|
||||
conf.set_item("num_consecutive_builds", 1)
|
||||
|
||||
rv = self.client.post('/module-build-service/1/module-builds/', data=json.dumps(
|
||||
{'branch': 'master', 'scmurl': 'git://pkgs.stg.fedoraproject.org/modules/'
|
||||
'testmodule.git?#68932c90de214d9d13feefbd35246a81b6cb8d49'}))
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
import unittest
|
||||
from module_build_service import messaging, conf
|
||||
from mock import patch, PropertyMock
|
||||
|
||||
|
||||
class TestFedmsgMessaging(unittest.TestCase):
|
||||
@@ -53,7 +54,9 @@ class TestFedmsgMessaging(unittest.TestCase):
|
||||
self.assertEqual(msg.build_id, 614503)
|
||||
self.assertEqual(msg.build_new_state, 1)
|
||||
|
||||
def test_copr_build_end(self):
|
||||
@patch("module_build_service.config.Config.system",
|
||||
new_callable=PropertyMock, return_value = "copr")
|
||||
def test_copr_build_end(self, conf_system):
|
||||
# http://fedora-fedmsg.readthedocs.io/en/latest/topics.html#copr-build-end
|
||||
copr_build_end_msg = {
|
||||
'msg': {
|
||||
@@ -75,7 +78,6 @@ class TestFedmsgMessaging(unittest.TestCase):
|
||||
'username': 'copr'
|
||||
}
|
||||
|
||||
conf.set_item("system", "copr")
|
||||
topic = 'org.fedoraproject.prod.copr.build.end'
|
||||
msg = messaging.BaseMessage.from_fedmsg(topic, copr_build_end_msg)
|
||||
self.assertIsInstance(msg, messaging.KojiBuildChange)
|
||||
|
||||
@@ -24,7 +24,7 @@ import unittest
|
||||
import json
|
||||
import time
|
||||
import vcr
|
||||
from mock import patch, Mock
|
||||
from mock import patch, Mock, PropertyMock
|
||||
from shutil import copyfile
|
||||
from os import path, mkdir
|
||||
from os.path import dirname
|
||||
@@ -475,19 +475,14 @@ class TestViews(unittest.TestCase):
|
||||
|
||||
@patch('module_build_service.auth.get_user', return_value=user)
|
||||
@patch('module_build_service.scm.SCM')
|
||||
def test_submit_build_includedmodule(self, mocked_scm, mocked_get_user):
|
||||
_prev_modules_allow_repository = conf.modules_allow_repository
|
||||
conf.set_item("modules_allow_repository", True)
|
||||
@patch("module_build_service.config.Config.modules_allow_repository",
|
||||
new_callable=PropertyMock, return_value = True)
|
||||
def test_submit_build_includedmodule(self, conf, mocked_scm, mocked_get_user):
|
||||
mocked_scm_obj = MockedSCM(mocked_scm, "includedmodules",
|
||||
["includedmodules.yaml", "testmodule.yaml"])
|
||||
try:
|
||||
rv = self.client.post('/module-build-service/1/module-builds/', data=json.dumps(
|
||||
{'branch': 'master', 'scmurl': 'git://pkgs.stg.fedoraproject.org/modules/'
|
||||
'testmodule.git?#68931c90de214d9d13feefbd35246a81b6cb8d49'}))
|
||||
except e:
|
||||
raise
|
||||
finally:
|
||||
conf.set_item("modules_allow_repository", _prev_modules_allow_repository)
|
||||
rv = self.client.post('/module-build-service/1/module-builds/', data=json.dumps(
|
||||
{'branch': 'master', 'scmurl': 'git://pkgs.stg.fedoraproject.org/modules/'
|
||||
'testmodule.git?#68931c90de214d9d13feefbd35246a81b6cb8d49'}))
|
||||
data = json.loads(rv.data)
|
||||
|
||||
assert 'component_builds' in data, data
|
||||
|
||||
Reference in New Issue
Block a user