def test_direct_pkglist_add_blocked_previously_force(
            self, lookup_package, get_tag, get_user, assert_policy,
            readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force = True
        update = False
        policy = True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = pkg
        get_user.return_value = user
        readPackageList.return_value = {
            pkg['id']: {
                'owner_id': pkg['owner_id'],
                'blocked': True,
                'extra_arches': ''
            }
        }

        kojihub._direct_pkglist_add(tag['name'],
                                    pkg['name'],
                                    user['name'],
                                    block=block,
                                    extra_arches=extra_arches,
                                    force=force,
                                    update=update,
                                    policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        lookup_package.assert_called_once_with(pkg['name'], strict=False)
        get_user.assert_called_once_with(user['name'], strict=True)
        # force + admin
        assert_policy.assert_not_called()

        self.assertEqual(self.run_callbacks.call_count, 2)
        self.run_callbacks.assert_has_calls([
            mock.call('prePackageListChange',
                      action='add',
                      tag=tag,
                      package=pkg,
                      owner=user['id'],
                      block=block,
                      extra_arches=extra_arches,
                      force=force,
                      update=update),
            mock.call('postPackageListChange',
                      action='add',
                      tag=tag,
                      package=pkg,
                      owner=user['id'],
                      block=block,
                      extra_arches=extra_arches,
                      force=force,
                      update=update),
        ])
        _pkglist_add.assert_called_once_with(tag['id'], pkg['id'], user['id'],
                                             block, extra_arches)
Esempio n. 2
0
    def test_direct_pkglist_add_no_user(self, lookup_package, get_tag,
                                        get_user, assert_policy,
                                        readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force = False
        update = False
        policy = True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = None
        get_user.side_effect = koji.GenericError
        readPackageList.return_value = {}

        with self.assertRaises(koji.GenericError):
            kojihub._direct_pkglist_add(tag['name'],
                                        pkg,
                                        user['name'],
                                        block=block,
                                        extra_arches=extra_arches,
                                        force=force,
                                        update=update,
                                        policy=policy)

        lookup_package.assert_called_once_with(pkg, strict=False)
        self.assertEqual(self.run_callbacks.call_count, 0)
        _pkglist_add.assert_not_called()
Esempio n. 3
0
    def test_direct_pkglist_add_no_package(self, lookup_package, get_tag,
                                           get_user, assert_policy,
                                           readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force = False
        update = False
        policy = True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = None
        get_user.return_value = user
        readPackageList.return_value = {}

        # package needs to be name, not dict
        with self.assertRaises(koji.GenericError) as ex:
            kojihub._direct_pkglist_add(tag['name'],
                                        pkg,
                                        user['name'],
                                        block=block,
                                        extra_arches=extra_arches,
                                        force=force,
                                        update=update,
                                        policy=policy)
        self.assertEqual("No such package: %s" % pkg, str(ex.exception))
Esempio n. 4
0
    def test_direct_pkglist_add_blocked_previously(self,
            lookup_package, get_tag, get_user,
            assert_policy, readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force=False
        update=False
        policy=True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = pkg
        get_user.return_value = user
        readPackageList.return_value = {pkg['id']: {
            'owner_id': pkg['owner_id'],
            'blocked': True,
            'extra_arches': ''}
        }

        with self.assertRaises(koji.GenericError):
            kojihub._direct_pkglist_add(tag['name'], pkg['name'],
                user['name'], block=block, extra_arches=extra_arches,
                force=force, update=update, policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        lookup_package.assert_called_once_with(pkg['name'], strict=False)
        get_user.assert_called_once_with(user['name'], strict=True)
        assert_policy.assert_called_once_with('package_list', {'tag': tag['id'],
            'action': 'add', 'package': pkg['name'], 'force': False})
        self.run_callbacks.assert_called_once_with(
                'prePackageListChange', action='add', tag=tag,
                package=pkg, owner=user['id'], block=block,
                extra_arches=extra_arches, force=force, update=update)
        _pkglist_add.assert_not_called()
    def test_direct_pkglist_add_blocked_previously(self, lookup_package,
                                                   get_tag, get_user,
                                                   assert_policy,
                                                   readPackageList,
                                                   _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force = False
        update = False
        policy = True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = pkg
        get_user.return_value = user
        readPackageList.return_value = {
            pkg['id']: {
                'owner_id': pkg['owner_id'],
                'blocked': True,
                'extra_arches': ''
            }
        }

        with self.assertRaises(koji.GenericError):
            kojihub._direct_pkglist_add(tag['name'],
                                        pkg['name'],
                                        user['name'],
                                        block=block,
                                        extra_arches=extra_arches,
                                        force=force,
                                        update=update,
                                        policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        lookup_package.assert_called_once_with(pkg['name'], strict=False)
        get_user.assert_called_once_with(user['name'], strict=True)
        assert_policy.assert_called_once_with(
            'package_list', {
                'tag': tag['id'],
                'action': 'add',
                'package': pkg['name'],
                'force': False
            })
        self.run_callbacks.assert_called_once_with('prePackageListChange',
                                                   action='add',
                                                   tag=tag,
                                                   package=pkg,
                                                   owner=user['id'],
                                                   block=block,
                                                   extra_arches=extra_arches,
                                                   force=force,
                                                   update=update)
        _pkglist_add.assert_not_called()
Esempio n. 6
0
    def test_direct_pkglist_add_pkginfo_dict(self, lookup_package, get_tag):
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = '******'
        tag = {'id': 1, 'name': 'tag'}
        expected = "Invalid type for id lookup: %s" % pkg

        get_tag.return_value = tag
        lookup_package.side_effect = koji.GenericError(expected)
        with self.assertRaises(koji.GenericError) as ex:
            kojihub._direct_pkglist_add(tag['name'],
                                        pkg,
                                        user,
                                        block=False,
                                        extra_arches='arch',
                                        force=False,
                                        update=True)
        self.assertEqual(expected, str(ex.exception))
Esempio n. 7
0
    def test_direct_pkglist_add_blocked_previously_force(self,
            lookup_package, get_tag, get_user,
            assert_policy, readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force=True
        update=False
        policy=True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = pkg
        get_user.return_value = user
        readPackageList.return_value = {pkg['id']: {
            'owner_id': pkg['owner_id'],
            'blocked': True,
            'extra_arches': ''}
        }

        kojihub._direct_pkglist_add(tag['name'], pkg['name'],
            user['name'], block=block, extra_arches=extra_arches,
            force=force, update=update, policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        lookup_package.assert_called_once_with(pkg['name'], strict=False)
        get_user.assert_called_once_with(user['name'], strict=True)
        # force + admin
        assert_policy.assert_not_called()

        self.assertEqual(self.run_callbacks.call_count, 2)
        self.run_callbacks.assert_has_calls([
            mock.call('prePackageListChange', action='add', tag=tag,
                package=pkg, owner=user['id'], block=block,
                extra_arches=extra_arches, force=force, update=update),
            mock.call('postPackageListChange', action='add', tag=tag,
                package=pkg, owner=user['id'], block=block,
                extra_arches=extra_arches, force=force, update=update),
        ])
        _pkglist_add.assert_called_once_with(tag['id'], pkg['id'],
            user['id'], block, extra_arches)
Esempio n. 8
0
    def test_direct_pkglist_add_new_package(self, lookup_package, get_tag, get_user,
            assert_policy, readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force=False
        update=False
        policy=True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.side_effect = [None, pkg]
        get_user.return_value = user
        readPackageList.return_value = {}


        kojihub._direct_pkglist_add(tag['name'], pkg['name'],
            user['name'], block=block, extra_arches=extra_arches,
            force=force, update=update, policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        self.assertEqual(lookup_package.call_count, 2)
        lookup_package.has_calls(
            mock.call(pkg['name'], strict=False),
            mock.call(pkg['name'], create=True),
        )
        get_user.assert_called_once_with(user['name'], strict=True)
        assert_policy.assert_called_once_with('package_list', {'tag': tag['id'],
            'action': 'add', 'package': pkg['name'], 'force': False})
        self.assertEqual(self.run_callbacks.call_count, 2)
        self.run_callbacks.assert_has_calls([
            mock.call('prePackageListChange', action='add', tag=tag,
                package=pkg, owner=user['id'], block=block,
                extra_arches=extra_arches, force=force, update=update),
            mock.call('postPackageListChange', action='add', tag=tag,
                package=pkg, owner=user['id'], block=block,
                extra_arches=extra_arches, force=force, update=update),
        ])
        _pkglist_add.assert_called_once_with(tag['id'], pkg['id'],
            user['id'], block, extra_arches)
Esempio n. 9
0
    def test_direct_pkglist_add_no_user(self, lookup_package,
            get_tag, get_user, assert_policy, readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force=False
        update=False
        policy=True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        user = {'id': 3, 'name': 'user'}
        get_tag.return_value = tag
        lookup_package.return_value = None
        get_user.side_effect = koji.GenericError
        readPackageList.return_value = {}

        with self.assertRaises(koji.GenericError):
            kojihub._direct_pkglist_add(tag['name'], pkg,
                user['name'], block=block, extra_arches=extra_arches,
                force=force, update=update, policy=policy)

        lookup_package.assert_called_once_with(pkg, strict=False)
        self.assertEqual(self.run_callbacks.call_count, 0)
        _pkglist_add.assert_not_called()
Esempio n. 10
0
    def test_direct_pkglist_add_new_package(self, lookup_package, get_tag,
                                            get_user, assert_policy,
                                            readPackageList, _pkglist_add):
        block = False
        extra_arches = 'arch123'
        force = False
        update = False
        policy = True
        tag = {'id': 1, 'name': 'tag'}
        pkg = {'id': 2, 'name': 'pkg', 'owner_id': 3}
        users = [
            {
                'id': 3,
                'name': 'user'
            },
            {
                'id': 112233,
                'name': 'user1'
            },
        ]
        user = users[0]
        get_tag.return_value = tag
        lookup_package.side_effect = [None, pkg]
        get_user.side_effect = get_user_factory(users)
        readPackageList.return_value = {}

        kojihub._direct_pkglist_add(tag['name'],
                                    pkg['name'],
                                    user['name'],
                                    block=block,
                                    extra_arches=extra_arches,
                                    force=force,
                                    update=update,
                                    policy=policy)

        get_tag.assert_called_once_with(tag['name'], strict=True)
        self.assertEqual(lookup_package.call_count, 2)
        lookup_package.has_calls(
            mock.call(pkg['name'], strict=False),
            mock.call(pkg['name'], create=True),
        )
        get_user.assert_has_calls([
            mock.call(user['name'], strict=True),
            mock.call(112233),
        ])
        assert_policy.assert_called_once_with('package_list', {
            'tag': tag['id'],
            'action': 'add',
            'package': pkg['name'],
            'force': False
        },
                                              force=False)
        self.assertEqual(self.run_callbacks.call_count, 2)
        self.run_callbacks.assert_has_calls([
            mock.call('prePackageListChange',
                      action='add',
                      tag=tag,
                      package=pkg,
                      owner=user['id'],
                      block=block,
                      extra_arches=extra_arches,
                      force=force,
                      update=update,
                      user=users[1]),
            mock.call('postPackageListChange',
                      action='add',
                      tag=tag,
                      package=pkg,
                      owner=user['id'],
                      block=block,
                      extra_arches=extra_arches,
                      force=force,
                      update=update,
                      user=users[1]),
        ])
        _pkglist_add.assert_called_once_with(tag['id'], pkg['id'], user['id'],
                                             block, extra_arches)