예제 #1
0
class TestPkgdDBAuth(unittest.TestCase):
    ''' Authenticated pkgdb2 tests. '''

    @auth_only
    def setUp(self):
        """ set up data used in the tests.
        setUp is called before each test function execution.
        """
        self.pkgdb = PkgDB(PKGDB_URL, insecure=True)
        self.pkgdb.login(USERNAME, PASSWORD)

    @auth_only
    def test_01_create_collection(self):
        ''' Test the create_collection function. '''
        out = self.pkgdb.create_collection(
            clt_name='Test',
            version=VERSION,
            clt_status='Active',
            branchname=COL_NAME,
            dist_tag='.tst' + COL_NAME[:20],
            git_branch_name='test',
            kojiname='test',
        )

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Collection "%s" created' % COL_NAME])

        self.assertRaises(
            PkgDBException,
            self.pkgdb.create_collection,
            clt_name='Test',
            version=VERSION,
            clt_status='Active',
            branchname=COL_NAME,
            dist_tag='.tst' + COL_NAME[:20],
            git_branch_name='test',
            kojiname='test',
        )

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Collection "%s" created' % COL_NAME])

    @auth_only
    def test_02_create_package(self):
        ''' Test the create_package function. '''

        out = self.pkgdb.create_package(
            pkgname=PKG_NAME,
            summary='Test package',
            description='Test package desc',
            review_url='https://bz.com',
            status='Approved',
            shouldopen=False,
            branches=COL_NAME,
            poc='pingou',
            upstream_url='http://guake.org',
            critpath=False)

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Package created'])

    @auth_only
    def test_03_orphan_packages(self):
        ''' Test the orphan_packages function. '''

        out = self.pkgdb.orphan_packages('guake', ['master', 'el6'])

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou changed point of contact of package: guake from: '
             'pingou to: orphan on branch: master',
             'user: pingou changed point of contact of package: guake from: '
             'pingou to: orphan on branch: el6'])

    @auth_only
    def test_04_unorphan_packages(self):
        ''' Test the unorphan_packages function. '''

        out = self.pkgdb.unorphan_packages(
            'guake', ['master', 'el6'], 'pingou')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Package guake has been unorphaned on master by pingou',
             'Package guake has been unorphaned on el6 by pingou'])

    @auth_only
    def test_05_retire_packages(self):
        ''' Test the retire_packages function. '''

        out = self.pkgdb.retire_packages('guake', 'master')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou updated package: guake status from: Approved to '
             'Retired on branch: master'])

    @auth_only
    def test_06_unretire_packages(self):
        ''' Test the unretire_packages function. '''

        out = self.pkgdb.unretire_packages('guake', 'master')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou updated package: guake status from: Retired to '
             'Approved on branch: master'])

    @auth_only
    def test_07_update_acl(self):
        ''' Test the update_acl function. '''

        # After un-retiring the package on master, we need to re-set Ralph's
        # pending ACL request
        out = self.pkgdb.update_acl(
            'guake', ['master', 'el6'], 'commit', 'Awaiting Review',
            'ralph')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou set for ralph acl: commit of package: guake from: '
             'Obsolete to: Awaiting Review on branch: master',
             'Nothing to update on branch: el6 for acl: commit'])

        # Check the output when we try to change an ACL to what it is already
        out = self.pkgdb.update_acl(
            'guake', ['master', 'el6'], 'commit', 'Awaiting Review',
            'ralph')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Nothing to update on branch: master for acl: commit',
             'Nothing to update on branch: el6 for acl: commit'])

    @auth_only
    def test_08_update_collection_status(self):
        ''' Test the update_collection_status function. '''

        out = self.pkgdb.update_collection_status(COL_NAME, 'EOL')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['Collection updated from "Active" to "EOL"'])

    @auth_only
    def test_09_update_package_poc(self):
        ''' Test the update_package_poc function. '''

        out = self.pkgdb.update_package_poc(
            'guake', ['master', 'el6'], 'ralph')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou changed point of contact of package: guake from: '
             'orphan to: ralph on branch: master',
             'user: pingou changed point of contact of package: guake from: '
             'pingou to: ralph on branch: el6'])

        out = self.pkgdb.update_package_poc(
            'guake', ['master', 'el6'], 'pingou')

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['user: pingou changed point of contact of package: guake from: '
             'ralph to: pingou on branch: master',
             'user: pingou changed point of contact of package: guake from: '
             'ralph to: pingou on branch: el6'])

    @auth_only
    def test_10_update_critpath(self):
        ''' Test the update_critpath function. '''

        # Check before changing the critpath
        out = self.pkgdb.get_package('guake')
        self.assertEqual(
            sorted(out.keys()),
            ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(
            critpaths,
            [False, False, False, False, False]
        )
        self.assertEqual(
            branches,
            ['master', 'el6', 'f19', 'f20', 'f21']
        )

        out = self.pkgdb.update_critpath(
            'guake', ['master', 'el6'], True)

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['guake: critpath updated on master to True',
             'guake: critpath updated on el6 to True']
        )

        # Check after changing the critpath
        out = self.pkgdb.get_package('guake')
        self.assertEqual(
            sorted(out.keys()),
            ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(
            critpaths,
            [True, True, False, False, False]
        )
        self.assertEqual(
            branches,
            ['master', 'el6', 'f19', 'f20', 'f21']
        )

        out = self.pkgdb.get_package('guake')
        self.assertEqual(
            sorted(out.keys()),
            ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        self.assertEqual(
            out['packages'][0]['collection']['branchname'], 'master')
        self.assertEqual(
            out['packages'][0]['package']['name'], 'guake')
        self.assertEqual(
            out['packages'][0]['point_of_contact'], 'pingou')

        out = self.pkgdb.update_critpath(
            'guake', ['master', 'el6'], False)

        self.assertEqual(
            sorted(out.keys()),
            ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(
            out['messages'],
            ['guake: critpath updated on master to False',
             'guake: critpath updated on el6 to False']
        )

        # Check after reste critpath to False
        out = self.pkgdb.get_package('guake')
        self.assertEqual(
            sorted(out.keys()),
            ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(
            critpaths,
            [False, False, False, False, False]
        )
        self.assertEqual(
            branches,
            ['master', 'el6', 'f19', 'f20', 'f21']
        )
예제 #2
0
# Set Koschei monitoring flag for <PACKAGES> to <VALUE> in pkgdb2 instance at
# <PKGDB_URL>.  Login credentials are provided in <FAS_CONF> file.
# Requires: packagedb-cli >= 2.9.
PACKAGES = ['pkg1', 'pkg2']
VALUE = True
PKGDB_URL = 'https://admin.stg.fedoraproject.org/pkgdb'
FAS_CONF = '/etc/fas.conf'


from pkgdb2client import PkgDB
from ConfigParser import ConfigParser

# Obtain FAS credentials
conf = ConfigParser()
conf.read(FAS_CONF)
login = conf.get('global', 'login')
password = conf.get('global', 'password')

# Initiate authenticated pkgdb2 session
pkgdb = PkgDB(PKGDB_URL)
pkgdb.login(login, password)

# Set package monitoring status one-by-one
for package in PACKAGES:
    result = pkgdb.set_koschei_status(package, VALUE)
    message = result.get('messages', 'Invalid output')
    print "%s: %s" % (package, message)

print "Done."
예제 #3
0
class TestPkgdDBAuth(unittest.TestCase):
    ''' Authenticated pkgdb2 tests. '''
    @auth_only
    def setUp(self):
        """ set up data used in the tests.
        setUp is called before each test function execution.
        """
        self.pkgdb = PkgDB(PKGDB_URL, insecure=True)
        self.pkgdb.login(USERNAME, PASSWORD)

    @auth_only
    def test_01_create_collection(self):
        ''' Test the create_collection function. '''
        out = self.pkgdb.create_collection(
            clt_name='Test',
            version=VERSION,
            clt_status='Active',
            branchname=COL_NAME,
            dist_tag='.tst' + COL_NAME[:20],
            git_branch_name='test',
            kojiname='test',
        )

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'],
                         ['Collection "%s" created' % COL_NAME])

        self.assertRaises(
            PkgDBException,
            self.pkgdb.create_collection,
            clt_name='Test',
            version=VERSION,
            clt_status='Active',
            branchname=COL_NAME,
            dist_tag='.tst' + COL_NAME[:20],
            git_branch_name='test',
            kojiname='test',
        )

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'],
                         ['Collection "%s" created' % COL_NAME])

    @auth_only
    def test_02_create_package(self):
        ''' Test the create_package function. '''

        out = self.pkgdb.create_package(pkgname=PKG_NAME,
                                        summary='Test package',
                                        description='Test package desc',
                                        review_url='https://bz.com',
                                        status='Approved',
                                        shouldopen=False,
                                        branches=COL_NAME,
                                        poc='pingou',
                                        upstream_url='http://guake.org',
                                        critpath=False)

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], ['Package created'])

    @auth_only
    def test_03_orphan_packages(self):
        ''' Test the orphan_packages function. '''

        out = self.pkgdb.orphan_packages('guake', ['master', 'el6'])

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou changed point of contact of package: guake from: '
            'pingou to: orphan on branch: master',
            'user: pingou changed point of contact of package: guake from: '
            'pingou to: orphan on branch: el6'
        ])

    @auth_only
    def test_04_unorphan_packages(self):
        ''' Test the unorphan_packages function. '''

        out = self.pkgdb.unorphan_packages('guake', ['master', 'el6'],
                                           'pingou')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'Package guake has been unorphaned on master by pingou',
            'Package guake has been unorphaned on el6 by pingou'
        ])

    @auth_only
    def test_05_retire_packages(self):
        ''' Test the retire_packages function. '''

        out = self.pkgdb.retire_packages('guake', 'master')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou updated package: guake status from: Approved to '
            'Retired on branch: master'
        ])

    @auth_only
    def test_06_unretire_packages(self):
        ''' Test the unretire_packages function. '''

        out = self.pkgdb.unretire_packages('guake', 'master')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou updated package: guake status from: Retired to '
            'Approved on branch: master'
        ])

    @auth_only
    def test_07_update_acl(self):
        ''' Test the update_acl function. '''

        # After un-retiring the package on master, we need to re-set Ralph's
        # pending ACL request
        out = self.pkgdb.update_acl('guake', ['master', 'el6'], 'commit',
                                    'Awaiting Review', 'ralph')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou set for ralph acl: commit of package: guake from: '
            'Obsolete to: Awaiting Review on branch: master',
            'Nothing to update on branch: el6 for acl: commit'
        ])

        # Check the output when we try to change an ACL to what it is already
        out = self.pkgdb.update_acl('guake', ['master', 'el6'], 'commit',
                                    'Awaiting Review', 'ralph')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'Nothing to update on branch: master for acl: commit',
            'Nothing to update on branch: el6 for acl: commit'
        ])

    @auth_only
    def test_08_update_collection_status(self):
        ''' Test the update_collection_status function. '''

        out = self.pkgdb.update_collection_status(COL_NAME, 'EOL')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'],
                         ['Collection updated from "Active" to "EOL"'])

    @auth_only
    def test_09_update_package_poc(self):
        ''' Test the update_package_poc function. '''

        out = self.pkgdb.update_package_poc('guake', ['master', 'el6'],
                                            'ralph')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou changed point of contact of package: guake from: '
            'orphan to: ralph on branch: master',
            'user: pingou changed point of contact of package: guake from: '
            'pingou to: ralph on branch: el6'
        ])

        out = self.pkgdb.update_package_poc('guake', ['master', 'el6'],
                                            'pingou')

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'user: pingou changed point of contact of package: guake from: '
            'ralph to: pingou on branch: master',
            'user: pingou changed point of contact of package: guake from: '
            'ralph to: pingou on branch: el6'
        ])

    @auth_only
    def test_10_update_critpath(self):
        ''' Test the update_critpath function. '''

        # Check before changing the critpath
        out = self.pkgdb.get_package('guake')
        self.assertEqual(sorted(out.keys()), ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(critpaths, [False, False, False, False, False])
        self.assertEqual(branches, ['master', 'el6', 'f19', 'f20', 'f21'])

        out = self.pkgdb.update_critpath('guake', ['master', 'el6'], True)

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'guake: critpath updated on master to True',
            'guake: critpath updated on el6 to True'
        ])

        # Check after changing the critpath
        out = self.pkgdb.get_package('guake')
        self.assertEqual(sorted(out.keys()), ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(critpaths, [True, True, False, False, False])
        self.assertEqual(branches, ['master', 'el6', 'f19', 'f20', 'f21'])

        out = self.pkgdb.get_package('guake')
        self.assertEqual(sorted(out.keys()), ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        self.assertEqual(out['packages'][0]['collection']['branchname'],
                         'master')
        self.assertEqual(out['packages'][0]['package']['name'], 'guake')
        self.assertEqual(out['packages'][0]['point_of_contact'], 'pingou')

        out = self.pkgdb.update_critpath('guake', ['master', 'el6'], False)

        self.assertEqual(sorted(out.keys()), ['messages', 'output'])

        self.assertEqual(out['output'], 'ok')
        self.assertEqual(out['messages'], [
            'guake: critpath updated on master to False',
            'guake: critpath updated on el6 to False'
        ])

        # Check after reste critpath to False
        out = self.pkgdb.get_package('guake')
        self.assertEqual(sorted(out.keys()), ['output', 'packages'])
        self.assertEqual(out['output'], 'ok')
        self.assertEqual(len(out['packages']), 5)
        critpaths = [el['critpath'] for el in out['packages']]
        branches = [el['collection']['branchname'] for el in out['packages']]
        self.assertEqual(critpaths, [False, False, False, False, False])
        self.assertEqual(branches, ['master', 'el6', 'f19', 'f20', 'f21'])