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'] )
# 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."
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'])