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_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_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(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_pattern=None, version_url=None, version_prefix=None, regex=None, insecure=False, user_id="*****@*****.**", releases_only=True, ) 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 = 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_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_create_project(self): """ Test the create_project function of Distro. """ create_distro(self.session) self.assertEqual(2, models.Distro.all(self.session, count=True)) utilities.create_project( self.session, name="geany", homepage="https://www.geany.org/", version_url="https://www.geany.org/Download/Releases", regex="DEFAULT", user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") self.assertRaises( ProjectExists, utilities.create_project, self.session, name="geany", homepage="https://www.geany.org/", version_url="https://www.geany.org/Download/Releases", regex="DEFAULT", user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
def test_create_project(self): """ Test the create_project function of Distro. """ create_distro(self.session) self.assertEqual(2, model.Distro.all(self.session, count=True)) anitya.lib.create_project( self.session, name='geany', homepage='http://www.geany.org/', version_url='http://www.geany.org/Download/Releases', regex='DEFAULT', user_id='*****@*****.**', ) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/') self.assertRaises( AnityaException, anitya.lib.create_project, self.session, name='geany', homepage='http://www.geany.org/', version_url='http://www.geany.org/Download/Releases', regex='DEFAULT', user_id='*****@*****.**', ) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
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_create_project_dry_run(self): """ Test the create_project dry_run parameter. """ create_distro(self.session) self.assertEqual(2, models.Distro.all(self.session, count=True)) with fml_testing.mock_sends(): utilities.create_project( self.session, name="geany", homepage="https://www.geany.org/", version_url="https://www.geany.org/Download/Releases", regex="DEFAULT", user_id="*****@*****.**", dry_run=True, ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") # This should be still a running transaction self.session.rollback() project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 0)
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_create_project(self): """ Test the create_project function of Distro. """ create_distro(self.session) self.assertEqual(2, model.Distro.all(self.session, count=True)) anitya.lib.create_project( self.session, name='geany', homepage='http://www.geany.org/', version_url='http://www.geany.org/Download/Releases', regex='DEFAULT', user_id='*****@*****.**', ) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/') self.assertRaises( ProjectExists, anitya.lib.create_project, self.session, name='geany', homepage='http://www.geany.org/', version_url='http://www.geany.org/Download/Releases', regex='DEFAULT', user_id='*****@*****.**', ) project_objs = anitya.lib.model.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, 'geany') self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
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_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_pattern=None, version_url=project_objs[2].version_url, version_prefix=None, regex=project_objs[2].regex, insecure=False, user_id="*****@*****.**", releases_only=False, )
def test_create_project_duplicate(self): """ Assert that duplicate can't be created. """ create_distro(self.session) self.assertEqual(2, models.Distro.all(self.session, count=True)) with fml_testing.mock_sends(anitya_schema.ProjectCreated): utilities.create_project( self.session, name="geany", homepage="https://www.geany.org/", version_url="https://www.geany.org/Download/Releases", regex="DEFAULT", user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/") self.assertRaises( ProjectExists, utilities.create_project, self.session, name="geany", homepage="https://www.geany.org/", version_url="https://www.geany.org/Download/Releases", regex="DEFAULT", user_id="*****@*****.**", ) project_objs = models.Project.all(self.session) self.assertEqual(len(project_objs), 1) self.assertEqual(project_objs[0].name, "geany") self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
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(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_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_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_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_init_distro(self): """ Test the __init__ function of Distro. """ create_distro(self.session) self.assertEqual(2, models.Distro.all(self.session, count=True)) distros = models.Distro.all(self.session) self.assertEqual(distros[0].name, "Debian") self.assertEqual(distros[1].name, "Fedora")
def test_init_distro(self): """ Test the __init__ function of Distro. """ create_distro(self.session) self.assertEqual(2, model.Distro.all(self.session, count=True)) distros = model.Distro.all(self.session) self.assertEqual(distros[0].name, 'Debian') self.assertEqual(distros[1].name, 'Fedora')
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_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_distro_search_page(self): """ Assert that pagination is working in `Distro.search`. """ create_distro(self.session) logs = models.Distro.search(self.session, "Fed*", page=1) self.assertEqual(len(logs), 1) self.assertEqual(logs[0].name, "Fedora")
def test_distro_all(self): """ Test the all function of Distro. """ create_distro(self.session) distro = model.Distro.all(self.session, page=2) self.assertEqual(distro, []) distro = model.Distro.all(self.session, page='b') distro2 = model.Distro.all(self.session) self.assertEqual(distro, distro2)
def test_distro_search_pattern(self): """ Assert that `Distro.search` returns correct distribution, when pattern is used. """ create_distro(self.session) logs = models.Distro.search(self.session, "Fed*") self.assertEqual(len(logs), 1) self.assertEqual(logs[0].name, "Fedora")
def test_distro_search_incorrect_page(self): """ Assert that pagination is automatically adjusted if incorrect value is used in `Distro.search`. """ create_distro(self.session) logs = models.Distro.search(self.session, "Fed*", page="as") self.assertEqual(len(logs), 1) self.assertEqual(logs[0].name, "Fedora")
def setUp(self): """Set up the Flask testing environnment""" super(EditProjectTests, self).setUp() self.app = self.flask_app.test_client() # Make a user to login with session = Session() self.user = models.User(email='*****@*****.**', username='******') session.add(self.user) session.commit() create_distro(self.session) create_project(self.session)
def test_distro_search(self): """ Test the search function of Distro. """ create_distro(self.session) distro = model.Distro.search(self.session, 'fed') self.assertEqual(distro, []) distro = model.Distro.search(self.session, 'fed*') self.assertNotEqual(distro, []) self.assertEqual(distro[0].name, 'Fedora') self.assertEqual(len(distro), 1)
def test_distro_get_or_create(self): """ Test the get_or_create function of Distro. """ create_distro(self.session) distro = model.Distro.get_or_create(self.session, 'fedora') self.assertEqual(distro.name, 'Fedora') self.assertEqual(2, model.Distro.all(self.session, count=True)) distro = model.Distro.get_or_create(self.session, 'CentOS') self.assertEqual(distro.name, 'CentOS') self.assertEqual(3, model.Distro.all(self.session, count=True))
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)
def test_edit_dry_run(self): """ Test the edit_project function dry_run parameter. """ 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.assertFalse(project_objs[0].releases_only) with fml_testing.mock_sends(): 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_pattern=None, version_url=None, version_prefix=None, pre_release_filter="a;v", version_filter="foo", regex=None, insecure=False, user_id="*****@*****.**", releases_only=True, archived=True, dry_run=True, ) 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") self.assertEqual(project_objs[0].pre_release_filter, "a;v") self.assertEqual(project_objs[0].version_filter, "foo") self.assertTrue(project_objs[0].releases_only) self.assertTrue(project_objs[0].archived) # This should be still a running transaction self.session.rollback() self.assertEqual(project_objs[0].backend, "custom") self.assertEqual(project_objs[0].pre_release_filter, None) self.assertEqual(project_objs[0].version_filter, None) self.assertFalse(project_objs[0].releases_only) self.assertFalse(project_objs[0].archived)
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": "https://www.geany.org/", "ecosystem": "https://www.geany.org/", "name": "geany", "regex": "DEFAULT", "version": None, "version_url": "https://www.geany.org/Download/Releases", "versions": [], "packages": [{ "distro": "Fedora", "package_name": "geany" }], } self.assertEqual(data, exp)
def test_distros(self): """ Test the distros function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/distros/') self.assertEqual(output.status_code, 200) expected = b"Here is the list of all the distributions" self.assertTrue(expected in output.data) output = self.app.get('/distros/?page=ab') self.assertEqual(output.status_code, 200) self.assertTrue(expected in output.data)
def test_api_get_version_exists(self): """ Test the api_get_version when returning a version. """ create_distro(self.session) create_project(self.session) data = {"id": 1, "test": True} output = self.app.post("/api/version/get", data=data) self.assertEqual(output.status_code, 200) data = _read_json(output) exp = {"versions": ["1.36"]} self.assertEqual(data, exp)
def test_distro_by_name(self): """ Test the by_name function of Distro. """ create_distro(self.session) distro = models.Distro.by_name(self.session, "fedora") self.assertEqual(distro.name, "Fedora") distro = models.Distro.get(self.session, "fedora") self.assertEqual(distro.name, "Fedora") distro = models.Distro.by_name(self.session, "DEBIAN") self.assertEqual(distro.name, "Debian") distro = models.Distro.get(self.session, "DEBIAN") self.assertEqual(distro.name, "Debian")
def setUp(self): super(MapProjectTests, self).setUp() create_distro(self.session) create_project(self.session) self.client = self.flask_app.test_client() self.user = models.User( email='*****@*****.**', username='******', ) user_social_auth = social_models.UserSocialAuth(user_id=self.user.id, user=self.user) self.session.add(self.user) self.session.add(user_social_auth) self.session.commit()
def test_distro_by_name(self): """ Test the by_name function of Distro. """ create_distro(self.session) distro = model.Distro.by_name(self.session, 'fedora') self.assertEqual(distro.name, 'Fedora') distro = model.Distro.get(self.session, 'fedora') self.assertEqual(distro.name, 'Fedora') distro = model.Distro.by_name(self.session, 'DEBIAN') self.assertEqual(distro.name, 'Debian') distro = model.Distro.get(self.session, 'DEBIAN') self.assertEqual(distro.name, 'Debian')
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": "https://www.geany.org/", "ecosystem": "https://www.geany.org/", "name": "geany", "regex": "DEFAULT", "version": None, "version_url": "https://www.geany.org/Download/Releases", "versions": [], "packages": [{"distro": "Fedora", "package_name": "geany"}], } self.assertEqual(data, exp)
def test_api_packages_wiki_list(self): """ Test the api_packages_wiki_list function of the API. """ create_distro(self.session) output = self.app.get('/api/packages/wiki/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, b'') create_project(self.session) create_package(self.session) output = self.app.get('/api/packages/wiki/') self.assertEqual(output.status_code, 200) exp = b"* geany DEFAULT http://www.geany.org/Download/Releases\n"\ b"* subsurface DEFAULT http://subsurface.hohndel.org/downloads/" self.assertEqual(output.data, exp)
def test_api_get_project_by_ecosystem(self): """ Test the api_get_project_ecosystem function of the API. """ create_distro(self.session) output = self.app.get("/api/by_ecosystem/pypi/pypi_and_npm") self.assertEqual(output.status_code, 404) data = _read_json(output) exp = { "error": 'No project "pypi_and_npm" found in ecosystem "pypi"', "output": "notok", } self.assertEqual(data, exp) create_ecosystem_projects(self.session) output = self.app.get("/api/by_ecosystem/pypi/not-a-project") self.assertEqual(output.status_code, 404) data = _read_json(output) exp = { "error": 'No project "not-a-project" found in ecosystem "pypi"', "output": "notok", } self.assertEqual(data, exp) output = self.app.get("/api/by_ecosystem/pypi/pypi_and_npm") self.assertEqual(output.status_code, 200) data = _read_json(output) del data["created_on"] del data["updated_on"] exp = { "id": 1, "backend": "PyPI", "homepage": "https://example.com/not-a-real-pypi-project", "ecosystem": "pypi", "name": "pypi_and_npm", "regex": None, "version": None, "version_url": None, "versions": [], "packages": [], } self.assertEqual(data, exp)
def test_project(self): """ Test the project function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/project/1/') self.assertEqual(output.status_code, 200) expected = b""" <p><a property="doap:homepage" href="http://www.geany.org/" target="_blank" rel="noopener noreferrer">http://www.geany.org/ </a><p>""" self.assertTrue(expected in output.data) output = self.app.get('/project/10/') self.assertEqual(output.status_code, 404)
def test_distro_projects_search(self): """ Test the distro_projects_search function. """ create_distro(self.session) create_project(self.session) output = self.app.get('/distro/Fedora/search/gua') self.assertEqual(output.status_code, 200) expected = b""" <blockquote> Oups this is embarrassing, it seems that no projects are being monitored currently. <p><a href="/project/new?name=gua">Click Here</a> to add this project instead. </p> </blockquote>""" self.assertTrue(expected in output.data) self.assertTrue( b'form action="/distro/Fedora/search/" role="form">' in output.data) self.assertTrue( b'<h1>Search projects in Fedora</h1>' in output.data)
def test_map_project_session_error(self): """ Test SQLAlchemy session error """ create_project(self.session) create_distro(self.session) project_obj = models.Project.get(self.session, 1) self.assertEqual(project_obj.name, "geany") self.assertEqual(len(project_obj.packages), 0) with mock.patch.object( self.session, "flush", mock.Mock(side_effect=[SQLAlchemyError(), None]) ): # With Distro object self.assertRaises( exceptions.AnityaException, utilities.map_project, self.session, project=project_obj, package_name="geany", distribution="Fedora", user_id="*****@*****.**", old_package_name=None, )