def test_migration_duplicate_unit(self, mock_modules, mock_dist,
                                      mock_association, mock_controller,
                                      mock_repo, mock_open):
        module_foo = Module(name='kung-foo', version='0.1.2', author='kung')
        module_bar = Module(name='foo', version='0.1.2', author='kung')
        module_bar.first = Mock()
        mock_modules.filter.side_effect = ([module_foo], module_bar)
        module_foo.save = Mock()
        module_foo.save.side_effect = NotUniqueError()
        repo_association = model.RepositoryContentUnit(
            repo_id='test_repo', unit_type_id='puppet_module', unit_id='bar')
        test_repo = model.Repository(repo_id='test_repo')
        mock_repo.get_repo_or_missing_resource.return_value = test_repo
        mock_association.filter.return_value = [repo_association]

        migration.migrate()

        module_foo.save.assert_called_once_with()
        mock_association.filter.assert_called_once_with(unit_id=module_foo.id)
        mock_modules.filter.assert_called_with(name='foo')
        mock_controller.disassociate_units.assert_called_once_with(
            repo_association, [module_foo])
        mock_repo.get_repo_or_missing_resource.assert_called_once_with(
            'test_repo')
        mock_controller.rebuild_content_unit_counts.assert_called_once_with(
            test_repo)
示例#2
0
 def setUp(self):
     self.distributor = installdistributor.PuppetModuleInstallDistributor()
     self.uk1 = {'author': 'puppetlabs', 'name': 'stdlib', 'version': '1.2.0'}
     self.uk2 = {'author': 'puppetlabs', 'name': 'stdlib', 'version': '1.2.1'}
     self.units = [
         Module(_storage_path='/a/b/x', **self.uk1),
         Module(_storage_path='/a/b/y', **self.uk2)
     ]
示例#3
0
 def setUp(self):
     self.distributor = installdistributor.PuppetModuleInstallDistributor()
     self.puppet_dir = '/opt/my/modules/'
     self.repo = Repository('repo1', '', repo_obj=mock.MagicMock())
     self.conduit = RepoPublishConduit('repo1', self.distributor.metadata()['id'])
     self.uk1 = {'author': 'puppetlabs', 'name': 'stdlib', 'version': '1.2.0'}
     self.uk2 = {'author': 'puppetlabs', 'name': 'java', 'version': '1.3.1'}
     self.units = [
         Module(_storage_path='/a/b/x', **self.uk1),
         Module(_storage_path='/a/b/y', **self.uk2)
     ]
     self.conduit.get_units = mock.MagicMock(return_value=self.units, spec_set=self.conduit.get_units)
示例#4
0
    def setUp(self):
        self.working_dir = tempfile.mkdtemp(prefix='puppet-sync-tests')
        self.repo = Repository('test-repo', working_dir=self.working_dir)
        self.conduit = MockConduit()
        self.config = PluginCallConfiguration({}, {
            constants.CONFIG_FEED: FEED,
        })

        self.method = SynchronizeWithPuppetForge(self.repo, self.conduit,
                                                 self.config)

        self.sample_units = [
            Module(author='a1', name='n1', version='1.0'),
            Module(author='a2', name='n2', version='2.0'),
            Module(author='a3', name='n3', version='3.0')
        ]
    def test_migration(self, mock_modules, mock_dist, mock_open):
        module_foo = Module(name='kung-foo', version='0.1.2', author='kung')
        mock_modules.filter.return_value = [module_foo]
        module_foo.save = Mock()

        migration.migrate()

        module_foo.save.assert_called_once_with()
        mock_dist.filter.assert_called_once_with(repo_id__in=[],
                                                 last_publish__ne=None)
示例#6
0
    def test_duplicate_unit_names(self, mock_find):
        config = PluginCallConfiguration({}, {constants.CONFIG_INSTALL_PATH: self.puppet_dir})
        uk3 = {'author': 'puppetlabs', 'name': 'stdlib', 'version': '1.3.1'}
        unit3 = Module(_storage_path='/a/b/y', **uk3)
        self.units.append(unit3)
        mock_find.return_value = self.units

        report = self.distributor.publish_repo(self.repo, self.conduit, config)

        self.assertFalse(report.success_flag)
        self.assertTrue(isinstance(report.summary, basestring))
        self.assertEqual(len(report.details['errors']), 2)
        self.assertTrue(report.summary.find('duplicate') >= 0)