def test_enumfields(self): """Testing enum fields on releases.""" client = Client(schema) release = Release(name='F22', long_name='Fedora 22', id_prefix='FEDORA', version='22', dist_tag='f22', stable_tag='f22-updates', testing_tag='f22-updates-testing', candidate_tag='f22-updates-candidate', pending_signing_tag='f22-updates-testing-signing', pending_testing_tag='f22-updates-testing-pending', pending_stable_tag='f22-updates-pending', override_tag='f22-override', branch='f22', package_manager=PackageManager.dnf, testing_repository='updates-testing') self.db.add(release) self.db.commit() executed = client.execute( """{ allReleases{ state packageManager }}""") assert executed == { 'data': { 'allReleases': [{ 'packageManager': 'unspecified', 'state': 'current' }, { 'packageManager': 'dnf', 'state': 'disabled' }] } }
def test___init___uses_bz2_for_epel(self): """Assert that the __init__() method sets the comp_type attribute to cr.BZ2 for EPEL.""" epel_7 = Release(id_prefix="FEDORA-EPEL", stable_tag='epel7') md = UpdateInfoMetadata(epel_7, UpdateRequest.stable, self.db, self.tempdir) self.assertEqual(md.comp_type, createrepo_c.BZ2)
def test_allReleases(self): """Testing allReleases.""" client = Client(schema) release = Release(name='F22', long_name='Fedora 22', id_prefix='FEDORA', version='22', dist_tag='f22', stable_tag='f22-updates', testing_tag='f22-updates-testing', candidate_tag='f22-updates-candidate', pending_signing_tag='f22-updates-testing-signing', pending_testing_tag='f22-updates-testing-pending', pending_stable_tag='f22-updates-pending', override_tag='f22-override', branch='f22', package_manager=PackageManager.dnf, testing_repository='updates-testing') self.db.add(release) self.db.commit() executed = client.execute("""{ allReleases{ name }}""") assert executed == { "data": { "allReleases": [{ "name": "F17" }, { "name": "F22" }] } }
def save_release(request): """ Save a release. This entails either creating a new release, or editing an existing one. To edit an existing release, the release's original name must be specified in the ``edited`` parameter. Args: request (pyramid.request): The current request. Returns: bodhi.server.models.Request: The created or edited Request. """ data = request.validated edited = data.pop("edited", None) # This has already been validated at this point, but we need to ditch # it since the models don't care about a csrf argument. data.pop('csrf_token', None) try: if edited is None: log.info("Creating a new release: %s" % data['name']) r = Release(**data) else: log.info("Editing release: %s" % edited) r = request.db.query(Release).filter(Release.name == edited).one() for k, v in data.items(): # We have to change updates status to obsolete # if state of release changes to archived if k == "state" and v == ReleaseState.archived and \ r.state != ReleaseState.archived: updates = request.db.query(Update).filter(Update.release_id == r.id).filter( Update.status.notin_( [UpdateStatus.obsolete, UpdateStatus.stable, UpdateStatus.unpushed] ) ).all() for u in updates: u.status = UpdateStatus.obsolete u.comment( request.db, 'This update is marked obsolete because ' 'the {} release is archived.'.format(u.release.name), author='bodhi', ) setattr(r, k, v) except Exception as e: log.exception(e) request.errors.add('body', 'release', 'Unable to create/edit release: %s' % e) return request.db.add(r) request.db.flush() return r
def populate(db): """ Create some data for tests to use. Args: db (sqlalchemy.orm.session.Session): The database session. """ user = User(name='guest') db.add(user) anonymous = User(name='anonymous') db.add(anonymous) provenpackager = Group(name='provenpackager') db.add(provenpackager) packager = Group(name='packager') db.add(packager) user.groups.append(packager) release = Release(name='F17', long_name='Fedora 17', id_prefix='FEDORA', version='17', dist_tag='f17', stable_tag='f17-updates', testing_tag='f17-updates-testing', candidate_tag='f17-updates-candidate', pending_signing_tag='f17-updates-signing-pending', pending_testing_tag='f17-updates-testing-pending', pending_stable_tag='f17-updates-pending', override_tag='f17-override', branch='f17', state=ReleaseState.current, create_automatic_updates=True, package_manager=PackageManager.unspecified, testing_repository=None) db.add(release) db.flush() # This mock will help us generate a consistent update alias. with mock.patch(target='uuid.uuid4', return_value='wat'): update = create_update(db, ['bodhi-2.0-1.fc17']) update.type = UpdateType.bugfix update.severity = UpdateSeverity.medium bug = Bug(bug_id=12345) db.add(bug) update.bugs.append(bug) comment = Comment(karma=1, text="wow. amaze.") db.add(comment) comment.user = user update.comments.append(comment) comment = Comment(karma=0, text="srsly. pretty good.") comment.user = anonymous db.add(comment) update.comments.append(comment) db.add(update) db.commit()
def populate(db): """ Create some data for tests to use. Args: db (sqlalchemy.orm.session.Session): The database session. """ user = User(name=u'guest') db.add(user) anonymous = User(name=u'anonymous') db.add(anonymous) provenpackager = Group(name=u'provenpackager') db.add(provenpackager) packager = Group(name=u'packager') db.add(packager) user.groups.append(packager) release = Release(name=u'F17', long_name=u'Fedora 17', id_prefix=u'FEDORA', version=u'17', dist_tag=u'f17', stable_tag=u'f17-updates', testing_tag=u'f17-updates-testing', candidate_tag=u'f17-updates-candidate', pending_signing_tag=u'f17-updates-testing-signing', pending_testing_tag=u'f17-updates-testing-pending', pending_stable_tag=u'f17-updates-pending', override_tag=u'f17-override', branch=u'f17', state=ReleaseState.current) db.add(release) db.flush() update = create_update(db, [u'bodhi-2.0-1.fc17']) update.type = UpdateType.bugfix update.severity = UpdateSeverity.medium bug = Bug(bug_id=12345) db.add(bug) update.bugs.append(bug) cve = CVE(cve_id=u"CVE-1985-0110") db.add(cve) update.cves.append(cve) comment = Comment(karma=1, text=u"wow. amaze.") db.add(comment) comment.user = user update.comments.append(comment) comment = Comment(karma=0, text=u"srsly. pretty good.", anonymous=True) comment.user = anonymous db.add(comment) update.comments.append(comment) with mock.patch(target='uuid.uuid4', return_value='wat'): update.assign_alias() db.add(update) db.commit()
def test_list_overrides_by_releases_without_override(self): self.db.add(Release(name='F42', long_name='Fedora 42', id_prefix='FEDORA', version='42', dist_tag='f42', stable_tag='f42-updates', testing_tag='f42-updates-testing', candidate_tag='f42-updates-candidate', pending_signing_tag='f42-updates-testing-signing', pending_testing_tag='f42-updates-testing-pending', pending_stable_tag='f42-updates-pending', override_tag='f42-override', branch='f42')) self.db.flush() res = self.app.get('/overrides/', {'releases': 'F42'}) body = res.json_body self.assertEqual(len(body['overrides']), 0)
def setUp(self): super(TestReleasesService, self).setUp() release = Release( name=u'F22', long_name=u'Fedora 22', id_prefix=u'FEDORA', version=u'22', dist_tag=u'f22', stable_tag=u'f22-updates', testing_tag=u'f22-updates-testing', candidate_tag=u'f22-updates-candidate', pending_signing_tag=u'f22-updates-testing-signing', pending_testing_tag=u'f22-updates-testing-pending', pending_stable_tag=u'f22-updates-pending', override_tag=u'f22-override', branch=u'f22') self.db.add(release) self.db.flush()
def setUp(self): super(TestReleasesService, self).setUp() release = Release( name='F22', long_name='Fedora 22', id_prefix='FEDORA', version='22', dist_tag='f22', stable_tag='f22-updates', testing_tag='f22-updates-testing', candidate_tag='f22-updates-candidate', pending_signing_tag='f22-updates-testing-signing', pending_testing_tag='f22-updates-testing-pending', pending_stable_tag='f22-updates-pending', override_tag='f22-override', branch='f22', package_manager=PackageManager.dnf, testing_repository='updates-testing') self.db.add(release) self.db.commit()
def save_release(request): """ Save a release. This entails either creating a new release, or editing an existing one. To edit an existing release, the release's original name must be specified in the ``edited`` parameter. Args: request (pyramid.request): The current request. Returns: bodhi.server.models.Request: The created or edited Request. """ data = request.validated edited = data.pop("edited", None) # This has already been validated at this point, but we need to ditch # it since the models don't care about a csrf argument. data.pop('csrf_token', None) try: if edited is None: log.info("Creating a new release: %s" % data['name']) r = Release(**data) else: log.info("Editing release: %s" % edited) r = request.db.query(Release).filter(Release.name == edited).one() for k, v in data.items(): setattr(r, k, v) except Exception as e: log.exception(e) request.errors.add('body', 'release', 'Unable to create update: %s' % e) return request.db.add(r) request.db.flush() return r
def setup_method(self, method): super().setup_method(method) release = Release(name='F22', long_name='Fedora 22', id_prefix='FEDORA', version='22', dist_tag='f22', stable_tag='f22-updates', testing_tag='f22-updates-testing', candidate_tag='f22-updates-candidate', pending_signing_tag='f22-updates-testing-signing', pending_testing_tag='f22-updates-testing-pending', pending_stable_tag='f22-updates-pending', override_tag='f22-override', branch='f22', package_manager=PackageManager.dnf, testing_repository='updates-testing', eol=date(2016, 6, 14)) self.db.add(release) self.db.commit()
def setUp(self, *args, **kwargs): super(TestReleasesHTML, self).setUp(*args, **kwargs) def _add_updates(updateslist, user, release, packagesuffix): """Private method that adds updates to the database for testing """ count = 0 for i in updateslist: for j in i[1]: for k in range(0, j[1]): update = Update( user=user, status=i[0], type=j[0], notes='Useful details!', release=release, date_submitted=datetime(1984, 11, 2), requirements='rpmlint', stable_karma=3, unstable_karma=-3, ) self.db.add(update) self.db.commit() count = count + 1 user2 = User(name='dudemcpants') self.db.flush() self.db.add(user2) release = Release(name='F18', long_name='Fedora 18', id_prefix='FEDORA', version='18', dist_tag='f18', stable_tag='f18-updates', testing_tag='f18-updates-testing', candidate_tag='f18-updates-candidate', pending_signing_tag='f18-updates-testing-signing', pending_testing_tag='f18-updates-testing-pending', pending_stable_tag='f18-updates-pending', override_tag='f18-override', branch='f18', state=ReleaseState.pending) self.db.add(release) currentrelease = self.db.query(Release).filter_by(name='F17').one() addedupdates = [[ UpdateStatus.pending, [[UpdateType.security, 5], [UpdateType.bugfix, 4], [UpdateType.enhancement, 3], [UpdateType.newpackage, 2]] ], [ UpdateStatus.testing, [[UpdateType.security, 15], [UpdateType.bugfix, 14], [UpdateType.enhancement, 13], [UpdateType.newpackage, 12]] ], [ UpdateStatus.stable, [[UpdateType.security, 25], [UpdateType.bugfix, 24], [UpdateType.enhancement, 23], [UpdateType.newpackage, 22]] ]] with fml_testing.mock_sends(*[api.Message] * 54): _add_updates(addedupdates, user2, currentrelease, "fc17") pendingrelease = self.db.query(Release).filter_by(name='F18').one() addedupdates2 = [[ UpdateStatus.pending, [[UpdateType.security, 2], [UpdateType.bugfix, 2], [UpdateType.enhancement, 2], [UpdateType.newpackage, 2]] ], [ UpdateStatus.testing, [[UpdateType.security, 3], [UpdateType.bugfix, 3], [UpdateType.enhancement, 3], [UpdateType.newpackage, 3]] ], [ UpdateStatus.stable, [[UpdateType.security, 4], [UpdateType.bugfix, 4], [UpdateType.enhancement, 4], [UpdateType.newpackage, 4]] ]] with fml_testing.mock_sends(*[api.Message] * 12): _add_updates(addedupdates2, user2, pendingrelease, "fc18") self.db.flush() # Clear the caches Release._tag_cache = None generic._generate_home_page_stats.invalidate()
def setUp(self, *args, **kwargs): super(TestFrontpageView, self).setUp(*args, **kwargs) def _add_updates(updateslist, user, release, packagesuffix): """Private method that adds updates to the database for testing """ count = 0 for i in updateslist: for j in i[1]: for k in range(0, j[1]): update = Update( title=u'bodhi-2.0-1%s.%s' % (str(count), packagesuffix), user=user, status=i[0], type=j[0], notes=u'Useful details!', release=release, date_submitted=datetime(1984, 11, 2), requirements=u'rpmlint', stable_karma=3, unstable_karma=-3, ) self.db.add(update) self.db.flush() count = count + 1 user2 = User(name=u'dudemcpants') self.db.flush() self.db.add(user2) release = Release(name=u'F18', long_name=u'Fedora 18', id_prefix=u'FEDORA', version=u'18', dist_tag=u'f18', stable_tag=u'f18-updates', testing_tag=u'f18-updates-testing', candidate_tag=u'f18-updates-candidate', pending_signing_tag=u'f18-updates-testing-signing', pending_testing_tag=u'f18-updates-testing-pending', pending_stable_tag=u'f18-updates-pending', override_tag=u'f18-override', branch=u'f18', state=ReleaseState.pending) self.db.add(release) currentrelease = self.db.query(Release).filter_by(name=u'F17').one() addedupdates = [[ UpdateStatus.pending, [[UpdateType.security, 5], [UpdateType.bugfix, 4], [UpdateType.enhancement, 3], [UpdateType.newpackage, 2]] ], [ UpdateStatus.testing, [[UpdateType.security, 15], [UpdateType.bugfix, 14], [UpdateType.enhancement, 13], [UpdateType.newpackage, 12]] ], [ UpdateStatus.stable, [[UpdateType.security, 25], [UpdateType.bugfix, 24], [UpdateType.enhancement, 23], [UpdateType.newpackage, 22]] ]] _add_updates(addedupdates, user2, currentrelease, "fc17") pendingrelease = self.db.query(Release).filter_by(name=u'F18').one() addedupdates2 = [[ UpdateStatus.pending, [[UpdateType.security, 2], [UpdateType.bugfix, 2], [UpdateType.enhancement, 2], [UpdateType.newpackage, 2]] ], [ UpdateStatus.testing, [[UpdateType.security, 3], [UpdateType.bugfix, 3], [UpdateType.enhancement, 3], [UpdateType.newpackage, 3]] ], [ UpdateStatus.stable, [[UpdateType.security, 4], [UpdateType.bugfix, 4], [UpdateType.enhancement, 4], [UpdateType.newpackage, 4]] ]] _add_updates(addedupdates2, user2, pendingrelease, "fc18") self.db.flush() Release._tag_cache = None