def setUp(self): super(TestFixHostSystemRepoHook, self).setUp() conf = self.fake_config conf.from_version = '5.0.1' self.hook = FixHostSystemRepoHook(self.upgraders, conf)
class TestFixHostSystemRepoHook(TestPreUpgradeHooksBase): def setUp(self): super(TestFixHostSystemRepoHook, self).setUp() conf = self.fake_config conf.from_version = '5.0.1' self.hook = FixHostSystemRepoHook(self.upgraders, conf) @mock.patch( 'fuel_upgrade.pre_upgrade_hooks.' 'from_5_0_1_to_any_fix_host_system_repo.' 'utils.file_exists', return_value=True) def test_is_required_returns_true(self, exists_mock): self.hook.config.from_version = '5.0.1' self.assertTrue(self.hook.check_if_required()) self.assertEqual( exists_mock.call_args_list, [mock.call('/var/www/nailgun/5.0.1/centos/x86_64'), mock.call('/etc/yum.repos.d/5.0.1_nailgun.repo')]) def test_is_required_returns_false(self): self.hook.config.from_version = '5.0' self.assertFalse(self.hook.check_if_required()) self.hook.config.from_version = '5.1' self.assertFalse(self.hook.check_if_required()) @mock.patch( 'fuel_upgrade.pre_upgrade_hooks.' 'from_5_0_1_to_any_fix_host_system_repo.' 'utils.file_exists', return_value=False) def test_is_required_returns_false_if_repo_file_does_not_exist(self, _): self.assertFalse(self.hook.check_if_required()) @mock.patch( 'fuel_upgrade.pre_upgrade_hooks.' 'from_5_0_1_to_any_fix_host_system_repo.' 'utils.file_exists', side_effect=[True, False]) def test_is_required_returns_false_repo_does_not_exist(self, _): self.assertFalse(self.hook.check_if_required()) @mock.patch( 'fuel_upgrade.pre_upgrade_hooks.' 'from_5_0_1_to_any_fix_host_system_repo.utils') def test_run(self, mock_utils): self.hook.run() args, _ = mock_utils.render_template_to_file.call_args_list[0] # The first argument is a path to # template in upgrade script directory # it can be different and depends on # code allocation self.assertTrue(args[0].endswith('templates/nailgun.repo')) self.assertEqual( args[1:], ('/etc/yum.repos.d/5.0.1_nailgun.repo', {'repo_path': '/var/www/nailgun/5.0.1/centos/x86_64', 'version': '5.0.1'}))