def test_as_dict(self): expected_dict = { "items_per_page": 1, "page": 1, "total_items": 3, "items": [ { "id": 3, "backend": "custom", "name": "R2spec", "homepage": "https://fedorahosted.org/r2spec/", "ecosystem": "https://fedorahosted.org/r2spec/", "regex": None, "version": None, "version_url": None, "versions": [], } ], } create_project(self.session) page = self.query.paginate(order_by=models.Project.name, items_per_page=1) actual_dict = page.as_dict() actual_dict["items"][0].pop("updated_on") actual_dict["items"][0].pop("created_on") self.assertEqual(expected_dict, actual_dict)
def test_edit_project_insecure(self): """ Assert change of project insecure flag """ create_project(self.session) project_objs = models.Project.all(self.session) self.assertFalse(project_objs[0].insecure) utilities.edit_project( self.session, project=project_objs[0], name="geany", homepage="https://www.geany.org/", backend=project_objs[0].backend, version_scheme="RPM", version_url=project_objs[0].version_url, version_prefix=None, regex=project_objs[0].regex, insecure=True, user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertTrue(project_objs[0].insecure)
def test_api_projects_names(self): """ Test the api_projects_names function of the API. """ create_distro(self.session) output = self.app.get('/api/projects/names') self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": [], "total": 0} self.assertEqual(data, exp) create_project(self.session) create_package(self.session) output = self.app.get('/api/projects/names/') self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": ["geany", "R2spec", "subsurface"], "total": 3} self.assertEqual(data, exp) output = self.app.get('/api/projects/names/?pattern=ge') self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": ["geany"], "total": 1} self.assertEqual(data, exp)
def test_edit_project_insecure(self): """ Assert change of project insecure flag """ create_project(self.session) project_objs = models.Project.all(self.session) self.assertFalse(project_objs[0].insecure) utilities.edit_project( self.session, project=project_objs[0], name='geany', homepage='https://www.geany.org/', backend=project_objs[0].backend, version_scheme='RPM', version_url=project_objs[0].version_url, version_prefix=None, regex=project_objs[0].regex, insecure=True, user_id='*****@*****.**', ) project_objs = models.Project.all(self.session) self.assertTrue(project_objs[0].insecure)
def test_log_search(self): """ Test the Log.search function. """ create_project(self.session) logs = models.Log.search(self.session) self.assertEqual(len(logs), 3) self.assertEqual( logs[0].description, '[email protected] added project: R2spec') self.assertEqual( logs[1].description, '[email protected] added project: subsurface') self.assertEqual( logs[2].description, '[email protected] added project: geany') logs = models.Log.search(self.session, count=True) self.assertEqual(logs, 3) from_date = datetime.datetime.utcnow().date() - datetime.timedelta(days=1) logs = models.Log.search( self.session, from_date=from_date, offset=1, limit=1) self.assertEqual(len(logs), 1) self.assertEqual( logs[0].description, '[email protected] added project: subsurface') logs = models.Log.search(self.session, project_name='subsurface') self.assertEqual(len(logs), 1) self.assertEqual( logs[0].description, '[email protected] added project: subsurface')
def test_distro_repr(self): """ Test the __repr__ function of Project. """ create_project(self.session) obs = "<Project(geany, https://www.geany.org/)>" project = models.Project.by_id(self.session, 1) self.assertEqual(str(project), obs)
def test_edit_project_creating_duplicate(self): """ Assert that attempting to edit a project and creating a duplicate fails """ create_distro(self.session) create_project(self.session) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'https://www.geany.org/') self.assertEqual(project_objs[1].name, 'R2spec') self.assertEqual(project_objs[2].name, 'subsurface') self.assertRaises( AnityaException, utilities.edit_project, self.session, project=project_objs[2], name='geany', homepage='https://www.geany.org/', backend=project_objs[2].backend, version_scheme=project_objs[2].version_scheme, version_url=project_objs[2].version_url, version_prefix=None, regex=project_objs[2].regex, insecure=False, user_id='*****@*****.**', )
def test_api_projects_names(self): """ Test the api_projects_names function of the API. """ create_distro(self.session) output = self.app.get("/api/projects/names") self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": [], "total": 0} self.assertEqual(data, exp) create_project(self.session) create_package(self.session) output = self.app.get("/api/projects/names/") self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": ["geany", "R2spec", "subsurface"], "total": 3} self.assertEqual(data, exp) output = self.app.get("/api/projects/names/?pattern=ge") self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"projects": ["geany"], "total": 1} self.assertEqual(data, exp)
def test_as_dict(self): expected_dict = { u"items_per_page": 1, u"page": 1, u"total_items": 3, u"items": [ { "id": 3, "backend": u"custom", "name": u"R2spec", "homepage": u"https://fedorahosted.org/r2spec/", "ecosystem": u"https://fedorahosted.org/r2spec/", "regex": None, "version": None, "version_url": None, "versions": [], } ], } create_project(self.session) page = self.query.paginate(order_by=models.Project.name, items_per_page=1) actual_dict = page.as_dict() actual_dict["items"][0].pop("updated_on") actual_dict["items"][0].pop("created_on") self.assertEqual(expected_dict, actual_dict)
def test_project_updated_incorrect_status(self): """ Assert that all projects are returned when incorrect status is used. """ create_project(self.session) projects = models.Project.updated(self.session, status="incorrect") self.assertEqual(len(projects), 3)
def test_edit_project_check_release(self, mock_check): """ Assert that check_release is working as it should """ create_project(self.session) project_objs = models.Project.all(self.session) utilities.edit_project( self.session, project=project_objs[0], name="geany", homepage="https://www.geany.org/", backend=project_objs[0].backend, version_scheme="RPM", version_pattern=None, version_url=project_objs[0].version_url, version_prefix=None, pre_release_filter=None, version_filter=None, regex=project_objs[0].regex, insecure=False, user_id="*****@*****.**", releases_only=False, check_release=True, ) project_objs = models.Project.all(self.session) mock_check.assert_called_with(project_objs[0], mock.ANY)
def test_map_project_no_project_for_package(self): """ Test package duplicity when package is not associated to project """ create_distro(self.session) create_project(self.session) pkg = models.Packages( distro_name="Fedora", project_id=None, package_name="geany" ) self.session.add(pkg) self.session.commit() distro_objs = self.session.query(models.Distro).all() project_obj = models.Project.get(self.session, 1) self.assertEqual(project_obj.name, "geany") self.assertEqual(len(project_obj.packages), 0) self.assertEqual(distro_objs[0].name, "Fedora") with fml_testing.mock_sends(anitya_schema.ProjectMapCreated): utilities.map_project( self.session, project=project_obj, package_name="geany", distribution="Fedora", user_id="*****@*****.**", old_package_name=None, ) self.session.commit() project_obj = models.Project.get(self.session, 1) packages = self.session.query(models.Packages).all() self.assertEqual(project_obj.name, "geany") self.assertEqual(len(project_obj.packages), 1) self.assertEqual(len(packages), 1) self.assertEqual(project_obj.packages[0].package_name, "geany") self.assertEqual(project_obj.packages[0].distro_name, "Fedora")
def test_map_project_no_project_for_package(self): """ Test package duplicity when package is not associated to project """ create_distro(self.session) create_project(self.session) pkg = models.Packages(distro_name='Fedora', project_id=None, package_name='geany') self.session.add(pkg) self.session.commit() distro_objs = self.session.query(models.Distro).all() project_obj = models.Project.get(self.session, 1) self.assertEqual(project_obj.name, 'geany') self.assertEqual(len(project_obj.packages), 0) self.assertEqual(distro_objs[0].name, 'Fedora') utilities.map_project( self.session, project=project_obj, package_name='geany', distribution='Fedora', user_id='*****@*****.**', old_package_name=None, ) self.session.commit() project_obj = models.Project.get(self.session, 1) packages = self.session.query(models.Packages).all() self.assertEqual(project_obj.name, 'geany') self.assertEqual(len(project_obj.packages), 1) self.assertEqual(len(packages), 1) self.assertEqual(project_obj.packages[0].package_name, 'geany') self.assertEqual(project_obj.packages[0].distro_name, 'Fedora')
def test_projects_search(self): """ Test the projects_search function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/projects/search/g') self.assertEqual(output.status_code, 200) self.assertEqual(output.data.count(b'<a href="/project/'), 1) output = self.app.get('/projects/search/g*') self.assertEqual(output.status_code, 200) expected = b""" <a href="https://www.geany.org/" target="_blank" rel="noopener noreferrer"> https://www.geany.org/ </a>""" self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 1) output = self.app.get('/projects/search/?page=ab') self.assertEqual(output.status_code, 200) self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 3) output = self.app.get('/projects/search/geany*', follow_redirects=True) self.assertEqual(output.status_code, 200) expected = b'<li class="list-group-item list-group-item-default">' \ b'Only one result matching with an ' \ b'exact match, redirecting</li>' self.assertTrue(expected in output.data)
def test_as_dict(self): expected_dict = { u'items_per_page': 1, u'page': 1, u'total_items': 3, u'items': [{ 'id': 3, 'backend': u'custom', 'name': u'R2spec', 'homepage': u'https://fedorahosted.org/r2spec/', 'regex': None, 'version': None, 'version_url': None, 'versions': [], }], } create_project(self.session) page = self.query.paginate(order_by=models.Project.name, items_per_page=1) actual_dict = page.as_dict() actual_dict['items'][0].pop('updated_on') actual_dict['items'][0].pop('created_on') self.assertEqual(expected_dict, actual_dict)
def test_edit_project_creating_duplicate(self): """ Assert that attempting to edit a project and creating a duplicate fails """ create_distro(self.session) create_project(self.session) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") self.assertEqual(project_objs[1].name, "R2spec") self.assertEqual(project_objs[2].name, "subsurface") with fml_testing.mock_sends(anitya_schema.ProjectEdited): self.assertRaises( AnityaException, utilities.edit_project, self.session, project=project_objs[2], name="geany", homepage="https://www.geany.org/", backend=project_objs[2].backend, version_scheme=project_objs[2].version_scheme, version_pattern=None, version_url=project_objs[2].version_url, version_prefix=None, pre_release_filter=None, version_filter=None, regex=project_objs[2].regex, insecure=False, user_id="*****@*****.**", releases_only=False, )
def test_distro(self): """ Test the distro function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/distro/Fedora/') self.assertEqual(output.status_code, 200) expected = b""" <blockquote> Oups this is embarrassing, it seems that no projects are being monitored currently. </blockquote>""" self.assertTrue(expected in output.data) self.assertTrue( b'form action="/distro/Fedora/search/" role="form" ' b'class="form-inline">' in output.data) self.assertTrue( b'<h1>Projects of Fedora monitored</h1>' in output.data) output = self.app.get('/distro/Fedora/?page=ab') self.assertEqual(output.status_code, 200) self.assertTrue(expected in output.data) self.assertTrue( b'form action="/distro/Fedora/search/" role="form" ' b'class="form-inline">' in output.data) self.assertTrue( b'<h1>Projects of Fedora monitored</h1>' in output.data)
def test_projects_search(self): """ Test the projects_search function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/projects/search/g') self.assertEqual(output.status_code, 200) self.assertEqual(output.data.count(b'<a href="/project/'), 1) output = self.app.get('/projects/search/g*') self.assertEqual(output.status_code, 200) expected = b""" <a href="http://www.geany.org/" target="_blank" rel="noopener noreferrer"> http://www.geany.org/ </a>""" self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 1) output = self.app.get('/projects/search/?page=ab') self.assertEqual(output.status_code, 200) self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 3) output = self.app.get( '/projects/search/geany*', follow_redirects=True) self.assertEqual(output.status_code, 200) expected = b'<li class="list-group-item list-group-item-default">' \ b'Only one result matching with an ' \ b'exact match, redirecting</li>' self.assertTrue(expected in output.data)
def test_projects(self): """ Test the projects function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/projects/') self.assertEqual(output.status_code, 200) expected = b""" <a href="http://www.geany.org/" target="_blank" rel="noopener noreferrer"> http://www.geany.org/ </a>""" self.assertTrue(expected in output.data) expected = b""" <a href="https://fedorahosted.org/r2spec/" target="_blank" rel="noopener noreferrer"> https://fedorahosted.org/r2spec/ </a>""" self.assertTrue(expected in output.data) expected = b""" <a href="http://subsurface.hohndel.org/" target="_blank" rel="noopener noreferrer"> http://subsurface.hohndel.org/ </a>""" self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 3) output = self.app.get('/projects/?page=ab') self.assertEqual(output.status_code, 200) self.assertEqual(output.data.count(b'<a href="/project/'), 3)
def test_edit_project_regex(self): """ Assert that change of project regex to same value doesn't trigger log """ create_project(self.session) logs = self.session.query(models.Log).all() project_objs = models.Project.all(self.session) self.assertEqual(len(logs), 3) self.assertEqual(project_objs[0].regex, 'DEFAULT') utilities.edit_project( self.session, project=project_objs[0], name='geany', homepage='https://www.geany.org/', backend=project_objs[0].backend, version_scheme='RPM', version_url=project_objs[0].version_url, version_prefix=None, regex='DEFAULT ', insecure=False, user_id='*****@*****.**', ) logs = self.session.query(models.Log).all() project_objs = models.Project.all(self.session) self.assertEqual(len(logs), 3) self.assertEqual(project_objs[0].regex, 'DEFAULT')
def test_edit_project_version_prefix(self): """ Assert that when version prefix is changed log message is generated """ create_project(self.session) logs = self.session.query(models.Log).all() project_objs = models.Project.all(self.session) self.assertEqual(len(logs), 3) self.assertEqual(project_objs[0].version_prefix, None) utilities.edit_project( self.session, project=project_objs[0], name='geany', homepage='https://www.geany.org/', backend=project_objs[0].backend, version_scheme='RPM', version_url=project_objs[0].version_url, version_prefix='v', regex=project_objs[0].regex, insecure=False, user_id='*****@*****.**', ) logs = self.session.query(models.Log).all() project_objs = models.Project.all(self.session) self.assertEqual(len(logs), 4) self.assertEqual(project_objs[0].version_prefix, 'v')
def test_distro_repr(self): """ Test the __repr__ function of Project. """ create_project(self.session) obs = '<Project(geany, http://www.geany.org/)>' project = models.Project.by_id(self.session, 1) self.assertEqual(str(project), obs)
def test_edit_project(self): """ Test the edit_project function of Distro. """ create_distro(self.session) create_project(self.session) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'https://www.geany.org/') self.assertEqual(project_objs[1].name, 'R2spec') self.assertEqual(project_objs[2].name, 'subsurface') utilities.edit_project(self.session, project=project_objs[0], name=project_objs[0].name, homepage='https://www.geany.org', backend='PyPI', version_scheme='Date', version_url=None, version_prefix=None, regex=None, insecure=False, user_id='*****@*****.**') project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'https://www.geany.org') self.assertEqual(project_objs[0].backend, 'PyPI')
def test_projects(self): """ Test the projects function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/projects/') self.assertEqual(output.status_code, 200) expected = b""" <a href="https://www.geany.org/" target="_blank" rel="noopener noreferrer"> https://www.geany.org/ </a>""" self.assertTrue(expected in output.data) expected = ( b'\n <a href="https://fedorahosted.org/r2spec/" target="_blank"' b' rel="noopener noreferrer">\n ' b'https://fedorahosted.org/r2spec/\n </a>') self.assertTrue(expected in output.data) expected = b""" <a href="https://subsurface-divelog.org/" target="_blank" rel="noopener noreferrer"> https://subsurface-divelog.org/ </a>""" self.assertTrue(expected in output.data) self.assertEqual(output.data.count(b'<a href="/project/'), 3) output = self.app.get('/projects/?page=ab') self.assertEqual(output.status_code, 200) self.assertEqual(output.data.count(b'<a href="/project/'), 3)
def test_distro(self): """ Test the distro function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/distro/Fedora/') self.assertEqual(output.status_code, 200) expected = b""" <blockquote> Oups this is embarrassing, it seems that no projects are being monitored currently. </blockquote>""" self.assertTrue(expected in output.data) self.assertTrue(b'form action="/distro/Fedora/search/" role="form" ' b'class="form-inline">' in output.data) self.assertTrue( b'<h1>Projects of Fedora monitored</h1>' in output.data) output = self.app.get('/distro/Fedora/?page=ab') self.assertEqual(output.status_code, 200) self.assertTrue(expected in output.data) self.assertTrue(b'form action="/distro/Fedora/search/" role="form" ' b'class="form-inline">' in output.data) self.assertTrue( b'<h1>Projects of Fedora monitored</h1>' in output.data)
def test_map_project_no_project_for_package(self): """ Test package duplicity when package is not associated to project """ create_distro(self.session) create_project(self.session) pkg = models.Packages( distro_name="Fedora", project_id=None, package_name="geany" ) self.session.add(pkg) self.session.commit() distro_objs = self.session.query(models.Distro).all() project_obj = models.Project.get(self.session, 1) self.assertEqual(project_obj.name, "geany") self.assertEqual(len(project_obj.packages), 0) self.assertEqual(distro_objs[0].name, "Fedora") utilities.map_project( self.session, project=project_obj, package_name="geany", distribution="Fedora", user_id="*****@*****.**", old_package_name=None, ) self.session.commit() project_obj = models.Project.get(self.session, 1) packages = self.session.query(models.Packages).all() self.assertEqual(project_obj.name, "geany") self.assertEqual(len(project_obj.packages), 1) self.assertEqual(len(packages), 1) self.assertEqual(project_obj.packages[0].package_name, "geany") self.assertEqual(project_obj.packages[0].distro_name, "Fedora")
def test_edit_project(self): """ Test the edit_project function of Distro. """ create_distro(self.session) create_project(self.session) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") self.assertEqual(project_objs[1].name, "R2spec") self.assertEqual(project_objs[2].name, "subsurface") utilities.edit_project( self.session, project=project_objs[0], name=project_objs[0].name, homepage="https://www.geany.org", backend="PyPI", version_scheme="RPM", version_url=None, version_prefix=None, regex=None, insecure=False, user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org") self.assertEqual(project_objs[0].backend, "PyPI")
def test_edit_project_creating_duplicate(self): """ Assert that attempting to edit a project and creating a duplicate fails """ create_distro(self.session) create_project(self.session) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") self.assertEqual(project_objs[1].name, "R2spec") self.assertEqual(project_objs[2].name, "subsurface") self.assertRaises( AnityaException, utilities.edit_project, self.session, project=project_objs[2], name="geany", homepage="https://www.geany.org/", backend=project_objs[2].backend, version_scheme=project_objs[2].version_scheme, version_url=project_objs[2].version_url, version_prefix=None, regex=project_objs[2].regex, insecure=False, user_id="*****@*****.**", )
def test_edit_project(self): """ Test the edit_project function of Distro. """ create_distro(self.session) create_project(self.session) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/') self.assertEqual(project_objs[1].name, 'R2spec') self.assertEqual(project_objs[2].name, 'subsurface') anitya.lib.edit_project( self.session, project=project_objs[0], name=project_objs[0].name, homepage='http://www.geany.org', backend='PyPI', version_url=None, version_prefix=None, regex=None, insecure=False, user_id='*****@*****.**') project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org') self.assertEqual(project_objs[0].backend, 'PyPI')
def test_edit_project_creating_duplicate(self): """ Assert that attempting to edit a project and creating a duplicate fails """ create_distro(self.session) create_project(self.session) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 3) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/') self.assertEqual(project_objs[1].name, 'R2spec') self.assertEqual(project_objs[2].name, 'subsurface') self.assertRaises( AnityaException, anitya.lib.edit_project, self.session, project=project_objs[2], name='geany', homepage='http://www.geany.org/', backend=project_objs[2].backend, version_url=project_objs[2].version_url, version_prefix=None, regex=project_objs[2].regex, insecure=False, user_id='*****@*****.**', )
def test_edit_project_insecure(self): """ Assert change of project insecure flag """ create_project(self.session) project_objs = models.Project.all(self.session) self.assertFalse(project_objs[0].insecure) with fml_testing.mock_sends(anitya_schema.ProjectEdited): utilities.edit_project( self.session, project=project_objs[0], name="geany", homepage="https://www.geany.org/", backend=project_objs[0].backend, version_scheme="RPM", version_pattern=None, version_url=project_objs[0].version_url, version_prefix=None, pre_release_filter=None, version_filter=None, regex=project_objs[0].regex, insecure=True, user_id="*****@*****.**", releases_only=False, ) project_objs = models.Project.all(self.session) self.assertTrue(project_objs[0].insecure)
def test_no_results(self): """Assert an empty page is returned when page * items_per_page > total_items.""" create_project(self.session) page = self.query.paginate(page=1000) self.assertEqual(1000, page.page) self.assertEqual(3, page.total_items) self.assertEqual(25, page.items_per_page) self.assertEqual(0, len(page.items))
def test_packages__repr__(self): """ Test the Packages.__repr__ function. """ create_project(self.session) create_distro(self.session) create_package(self.session) pkg = models.Packages.by_id(self.session, 1) self.assertEqual(str(pkg), "<Packages(1, Fedora: geany)>")
def test_packages_by_id(self): """ Test the Packages.by_id function. """ create_project(self.session) create_distro(self.session) create_package(self.session) pkg = models.Packages.by_id(self.session, 1) self.assertEqual(pkg.package_name, "geany") self.assertEqual(pkg.distro_name, "Fedora")
def test_project_init(self): """ Test the __init__ function of Project. """ create_project(self.session) self.assertEqual(3, models.Project.all(self.session, count=True)) projects = models.Project.all(self.session) self.assertEqual(projects[0].name, 'geany') self.assertEqual(projects[1].name, 'R2spec') self.assertEqual(projects[2].name, 'subsurface')
def setUp(self): super(MapProjectTests, self).setUp() create_distro(self.session) create_project(self.session) self.client = self.flask_app.test_client() session = Session() self.user = models.User(email='*****@*****.**', username='******') session.add(self.user) session.commit()
def test_project_search_no_pattern(self): """ Assert that all projects are returned when no pattern is provided. """ create_project(self.session) projects = models.Project.search(self.session, "") self.assertEqual(len(projects), 3)
def test_project_init(self): """ Test the __init__ function of Project. """ create_project(self.session) self.assertEqual(3, models.Project.all(self.session, count=True)) projects = models.Project.all(self.session) self.assertEqual(projects[0].name, "geany") self.assertEqual(projects[1].name, "R2spec") self.assertEqual(projects[2].name, "subsurface")
def test_project_search(self): """ Test the search function of Project. """ create_project(self.session) projects = models.Project.search(self.session, 'gea') self.assertEqual(projects, []) projects = models.Project.search(self.session, 'gea*') self.assertEqual(projects[0].name, 'geany') self.assertEqual(projects[0].homepage, 'http://www.geany.org/')
def test_project_search_by_distro(self): """ Assert that only projects with mappings to specific distro are returned when distro is provided. """ create_project(self.session) create_package(self.session) projects = models.Project.search(self.session, "*", distro="Fedora") self.assertEqual(len(projects), 2)
def test_project_updated_new(self): """ Assert that only new projects are returned when status is set to 'new'. """ create_project(self.session) projects = models.Project.updated(self.session, status="new") self.assertEqual(len(projects), 3) self.assertEqual(projects[0].logs, None)
def test_order_by(self): """Assert you can alter the order of page results.""" create_project(self.session) page = self.query.paginate(order_by=models.Project.name) self.assertEqual(1, page.page) self.assertEqual(3, page.total_items) self.assertEqual(25, page.items_per_page) self.assertEqual(page.items[0].name, "R2spec") self.assertEqual(page.items[1].name, "geany") self.assertEqual(page.items[2].name, "subsurface")
def test_project_by_name(self): """ Test the by_name function of Project. """ create_project(self.session) project = model.Project.by_name(self.session, 'geany') self.assertEqual(project[0].name, 'geany') self.assertEqual(project[0].homepage, 'http://www.geany.org/') project = model.Project.by_name(self.session, 'terminal') self.assertEqual(project, [])
def test_project_search(self): """ Test the search function of Project. """ create_project(self.session) projects = model.Project.search(self.session, 'gea') self.assertEqual(projects, []) projects = model.Project.search(self.session, 'gea*') self.assertEqual(projects[0].name, 'geany') self.assertEqual(projects[0].homepage, 'http://www.geany.org/')
def test_project_search(self): """ Test the search function of Project. """ create_project(self.session) projects = models.Project.search(self.session, "gea") self.assertEqual(projects, []) projects = models.Project.search(self.session, "gea*") self.assertEqual(projects[0].name, "geany") self.assertEqual(projects[0].homepage, "https://www.geany.org/")
def test_project_by_name(self): """ Test the by_name function of Project. """ create_project(self.session) project = models.Project.by_name(self.session, "geany") self.assertEqual(project[0].name, "geany") self.assertEqual(project[0].homepage, "https://www.geany.org/") project = models.Project.by_name(self.session, "terminal") self.assertEqual(project, [])
def test_project_by_name(self): """ Test the by_name function of Project. """ create_project(self.session) project = models.Project.by_name(self.session, 'geany') self.assertEqual(project[0].name, 'geany') self.assertEqual(project[0].homepage, 'http://www.geany.org/') project = models.Project.by_name(self.session, 'terminal') self.assertEqual(project, [])
def test_defaults(self): """Assert paginate defaults to the first page and 25 items.""" create_project(self.session) page = self.query.paginate() self.assertEqual(1, page.page) self.assertEqual(3, page.total_items) self.assertEqual(25, page.items_per_page) # Default ordering is just by id self.assertEqual(page.items[0].name, "geany") self.assertEqual(page.items[1].name, "subsurface") self.assertEqual(page.items[2].name, "R2spec")
def test_project_all(self): """ Test the all function of Project. """ create_project(self.session) projects = models.Project.all(self.session) self.assertEqual(projects[0].name, "geany") self.assertEqual(projects[0].homepage, "https://www.geany.org/") self.assertEqual(projects[1].name, "R2spec") self.assertEqual(projects[1].homepage, "https://fedorahosted.org/r2spec/") projects = models.Project.all(self.session, page=3) self.assertEqual(projects, [])
def test_project_all(self): """ Test the Project.all function. """ create_project(self.session) projects = models.Project.all(self.session, count=True) self.assertEqual(projects, 3) projects = models.Project.all(self.session, page=2) self.assertEqual(len(projects), 0) projects = models.Project.all(self.session, page="asd") self.assertEqual(len(projects), 3)
def test_project_updated_count(self): """ Assert that correct count is returned. """ create_project(self.session) for project in self.session.query(models.Project).filter( models.Project.id == 1 ): project.logs = "Version retrieved correctly" self.session.commit() projects = models.Project.updated(self.session, count=True) self.assertEqual(projects, 1)
def test_api_get_project_distro(self): """ Test the api_get_project_distro function of the API. """ create_distro(self.session) output = self.app.get('/api/project/Fedora/geany') self.assertEqual(output.status_code, 404) data = _read_json(output) exp = { "error": "No package \"geany\" found in distro \"Fedora\"", "output": "notok" } self.assertEqual(data, exp) create_project(self.session) create_package(self.session) output = self.app.get('/api/project/Fedora/gnome-terminal/') self.assertEqual(output.status_code, 404) data = _read_json(output) exp = { "error": "No package \"gnome-terminal\" found in distro " "\"Fedora\"", "output": "notok" } self.assertEqual(data, exp) output = self.app.get('/api/project/Fedora/geany/') self.assertEqual(output.status_code, 200) data = _read_json(output) del(data['created_on']) del(data['updated_on']) exp = { "id": 1, "backend": "custom", "homepage": "http://www.geany.org/", "name": "geany", "regex": 'DEFAULT', "version": None, "version_url": 'http://www.geany.org/Download/Releases', "versions": [], "packages": [ { "distro": "Fedora", "package_name": "geany" } ], } self.assertEqual(data, exp)