def test_search(self): """ Test the search function of Package. """ create_package(self.session) packages = model.Package.search( session=self.session, pkg_name='g%') self.assertEqual(len(packages), 2) self.assertEqual(packages[0].name, 'geany') self.assertEqual(packages[1].name, 'guake') packages = model.Package.search( session=self.session, pkg_name='g%', limit=1) self.assertEqual(len(packages), 1) self.assertEqual(packages[0].name, 'geany') packages = model.Package.search( session=self.session, pkg_name='g%', offset=1) self.assertEqual(len(packages), 1) self.assertEqual(packages[0].name, 'guake') packages = model.Package.search( session=self.session, pkg_name='g%', count=True) self.assertEqual(packages, 2)
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_api_repr(self): """ Test the api_repr function of Package. """ create_package(self.session) package = model.Package.by_name(self.session, 'guake') package = package.api_repr(1) self.assertEqual(package.keys(), ['upstreamurl', 'name', 'reviewurl', 'summary'])
def test_statistics(self): """ Test the statistics method. """ out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(0, out['summary']['with_tags']) self.assertEqual(0, out['summary']['no_tags']) self.assertEqual(0, out['summary']['tags_per_package']) self.assertEqual(0, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(0, out['summary']['total_packages']) self.assertEqual(0, out['summary']['total_unique_tags']) create_package(self.session) out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(0, out['summary']['with_tags']) self.assertEqual(3, out['summary']['no_tags']) self.assertEqual(0, out['summary']['tags_per_package']) self.assertEqual(0, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(3, out['summary']['total_packages']) self.assertEqual(0, out['summary']['total_unique_tags']) create_tag(self.session) out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(2, out['summary']['with_tags']) self.assertEqual(1, out['summary']['no_tags']) self.assertEqual(4 / float(3), out['summary']['tags_per_package']) self.assertEqual(2, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(3, out['summary']['total_packages']) self.assertEqual(3, out['summary']['total_unique_tags'])
def test_search(self): """ Test the search function of Package. """ create_package(self.session) packages = model.Package.search( session=self.session, pkg_name='g%') self.assertEqual(len(packages), 2) self.assertEqual(packages[0].name, 'guake') self.assertEqual(packages[1].name, 'geany') packages = model.Package.search( session=self.session, pkg_name='g%', limit=1) self.assertEqual(len(packages), 1) self.assertEqual(packages[0].name, 'guake') packages = model.Package.search( session=self.session, pkg_name='g%', offset=1) self.assertEqual(len(packages), 1) self.assertEqual(packages[0].name, 'geany') packages = model.Package.search( session=self.session, pkg_name='g%', count=True) self.assertEqual(packages, 2)
def test_pkg_ratings(self): """ Test the pkg_ratings function. """ output = self.app.get('/api/v1/ratings/guake') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/ratings/guake/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'Package "guake" not found') create_package(self.session) output = self.app.get('/api/v1/ratings/guake,geany/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(len(output['ratings']), 2) self.assertEqual(output['ratings'][0]['rating'], -1) self.assertEqual(output['ratings'][0]['name'], 'guake') self.assertEqual(output['ratings'][1]['rating'], -1) self.assertEqual(output['ratings'][1]['name'], 'geany') create_rating(self.session) output = self.app.get('/api/v1/ratings/guake,geany/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(len(output['ratings']), 2) self.assertEqual(output['ratings'][0]['name'], 'guake') self.assertEqual(output['ratings'][0]['rating'], 75) self.assertEqual(output['ratings'][1]['name'], 'geany') self.assertEqual(output['ratings'][1]['rating'], 100.0)
def test_pkg_get_rating(self): """ Test the pkg_get_rating function. """ output = self.app.get('/api/v1/guake/rating') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/guake/rating/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'Package "guake" not found') create_package(self.session) output = self.app.get('/api/v1/guake/rating/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['rating'], -1.0) self.assertEqual(output['name'], 'guake') create_rating(self.session) output = self.app.get('/api/v1/guake/rating/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['rating'], 75.0) self.assertEqual(output['name'], 'guake')
def test_score(self): """ Test the scores """ output = self.app.get("/api/v1/score/pingou/") self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output.keys(), ["output", "error"]) self.assertEqual(output["output"], "notok") self.assertEqual(output["error"], "User not found") create_package(self.session) create_tag(self.session) output = self.app.get("/api/v1/score/pingou/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), ["score", "gravatar", "name"]) self.assertEqual(output["name"], "pingou") self.assertEqual(output["score"], 8) output = self.app.get("/api/v1/score/toshio/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), ["score", "gravatar", "name"]) self.assertEqual(output["name"], "toshio") self.assertEqual(output["score"], 2)
def test_pkg_get_tag(self): """ Test the pkg_get_tag function. """ output = self.app.get('/api/v1/guake/tag') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/guake/tag/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'Package "guake" not found') create_package(self.session) output = self.app.get('/api/v1/guake/tag/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['name'], 'guake') self.assertEqual(output['tags'], []) create_tag(self.session) output = self.app.get('/api/v1/guake/tag/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['name'], 'guake') self.assertEqual(output['tags'][0]['tag'], u'gnóme') self.assertEqual(output['tags'][0]['votes'], 2) self.assertEqual(output['tags'][0]['like'], 2) self.assertEqual(output['tags'][0]['dislike'], 0) self.assertEqual(output['tags'][1]['tag'], 'terminal') self.assertEqual(output['tags'][0]['votes'], 2) self.assertEqual(output['tags'][0]['like'], 2) self.assertEqual(output['tags'][0]['dislike'], 0)
def test_rating_get(self): """ Test the rating_get function. """ output = self.app.get('/api/v1/rating/75') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/rating/76/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'No packages found with rating "76.0"') output = self.app.get('/api/v1/rating/as/') self.assertEqual(output.status_code, 500) create_package(self.session) create_rating(self.session) output = self.app.get('/api/v1/rating/75/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['rating'], 75) self.assertEqual(len(output['packages']), 1) self.assertEqual(output['packages'][0], 'guake')
def test_tag_sqlite(self): """ Test tag_pkg_sqlite. A url for bodhi's masher. """ create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/tag/sqlitebuildtags/') self.assertEqual(output.status_code, 200) fd, db_filename = tempfile.mkstemp() os.close(fd) with open(db_filename, 'w') as f: f.write(output.data) with sqlite3.connect(db_filename) as conn: cursor = conn.cursor(); cursor.execute("select * from packagetags;") rows = cursor.fetchall() target_rows = [ (u'guake', u'gnóme', 2), (u'guake', u'terminal', 2), (u'geany', u'gnóme', 2), (u'geany', u'ide', 2), ] self.assertEqual(len(rows), len(target_rows)) for actual, target in zip(rows, target_rows): self.assertEqual(actual, target)
def test_pkg_get_rating(self): """ Test the pkg_get_rating function. """ output = self.app.get("/api/v1/guake/rating") self.assertEqual(output.status_code, 301) output = self.app.get("/api/v1/guake/rating/") self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output["output"], "notok") self.assertEqual(output["error"], 'Package "guake" not found') create_package(self.session) output = self.app.get("/api/v1/guake/rating/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output["rating"], -1.0) self.assertEqual(output["name"], "guake") create_rating(self.session) output = self.app.get("/api/v1/guake/rating/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output["rating"], 75.0) self.assertEqual(output["name"], "guake")
def test_pkg_ratings(self): """ Test the pkg_ratings function. """ output = self.app.get("/api/v1/ratings/guake") self.assertEqual(output.status_code, 301) output = self.app.get("/api/v1/ratings/guake/") self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output["output"], "notok") self.assertEqual(output["error"], 'Package "guake" not found') create_package(self.session) output = self.app.get("/api/v1/ratings/guake,geany/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(len(output["ratings"]), 2) self.assertEqual(output["ratings"][0]["rating"], -1) self.assertEqual(output["ratings"][0]["name"], "guake") self.assertEqual(output["ratings"][1]["rating"], -1) self.assertEqual(output["ratings"][1]["name"], "geany") create_rating(self.session) output = self.app.get("/api/v1/ratings/guake,geany/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(len(output["ratings"]), 2) self.assertEqual(output["ratings"][0]["name"], "guake") self.assertEqual(output["ratings"][0]["rating"], 75) self.assertEqual(output["ratings"][1]["name"], "geany") self.assertEqual(output["ratings"][1]["rating"], 100.0)
def test_random(self): """ Test pkg_random """ output = self.app.get('/api/v1/random/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'No package could be found') create_package(self.session) create_rating(self.session) output = self.app.get('/api/v1/random/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) keys = output.keys() keys.sort() self.assertEqual( set(output.keys()), set([ 'rating', 'summary', 'name', 'tags', 'usage', 'icon', ]))
def test_tag_sqlite(self): """ Test tag_pkg_sqlite. A url for bodhi's masher. """ create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/tag/sqlitebuildtags/') self.assertEqual(output.status_code, 200) fd, db_filename = tempfile.mkstemp() os.close(fd) with open(db_filename, 'w') as f: f.write(output.data) with sqlite3.connect(db_filename) as conn: cursor = conn.cursor() cursor.execute("select * from packagetags;") rows = cursor.fetchall() target_rows = [ (u'guake', u'gnóme', 2), (u'guake', u'terminal', 2), (u'geany', u'gnóme', 2), (u'geany', u'ide', 2), ] self.assertEqual(len(rows), len(target_rows)) for actual, target in zip(rows, target_rows): self.assertEqual(actual, target)
def test_score(self): """ Test the scores """ output = self.app.get('/api/v1/score/pingou/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output.keys(), ['output', 'error']) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'User not found') create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/score/pingou/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), ['score', 'gravatar', 'name']) self.assertEqual(output['name'], 'pingou') self.assertEqual(output['score'], 8) output = self.app.get('/api/v1/score/toshio/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), ['score', 'gravatar', 'name']) self.assertEqual(output['name'], 'toshio') self.assertEqual(output['score'], 2)
def test_add_rating(self): """ Test the add_rating function of taggerlib. """ create_user(self.session) user_pingou = model.FASUser.by_name(self.session, 'pingou') user_ralph = model.FASUser.by_name(self.session, 'ralph') create_package(self.session) out = fedoratagger.lib.add_rating(self.session, 'guake', 100, user_pingou) self.assertEqual(out, 'Rating "100" added to the package "guake"') self.session.commit() pkg = model.Package.by_name(self.session, 'guake') rating = model.Rating.rating_of_package(self.session, pkg.id) self.assertEqual(100, rating) out = fedoratagger.lib.add_rating(self.session, 'guake', 50, user_pingou) self.assertEqual(out, 'Rating on package "guake" changed to "50"') self.session.commit() out = fedoratagger.lib.add_rating(self.session, 'guake', 50, user_pingou) self.assertEqual(out, 'Rating on package "guake" did not change') self.session.commit() out = fedoratagger.lib.add_rating(self.session, 'guake', 100, user_ralph) self.assertEqual(out, 'Rating "100" added to the package "guake"') self.session.commit() rating = model.Rating.rating_of_package(self.session, pkg.id) self.assertEqual(75, rating) r = fedoratagger.lib.model.Package.rating(pkg, self.session) self.assertEquals(75, r)
def test_pkg_get(self): """ Test the pkg_get function. """ output = self.app.get('/api/v1/guake') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/guake/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'Package "guake" not found') create_package(self.session) output = self.app.get('/api/v1/guake/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['name'], 'guake') self.assertEqual(output['summary'], u'drop-down terminal for gnóme') self.assertEqual( output['icon'], 'https://apps.fedoraproject.org/' 'packages/images/icons/guake.png') self.assertEqual(output['rating'], -1) self.assertEqual(output['usage'], 0) self.assertEqual(output['tags'], [])
def test_pkg_get_tag(self): """ Test the pkg_get_tag function. """ output = self.app.get("/api/v1/guake/tag") self.assertEqual(output.status_code, 301) output = self.app.get("/api/v1/guake/tag/") self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output["output"], "notok") self.assertEqual(output["error"], 'Package "guake" not found') create_package(self.session) output = self.app.get("/api/v1/guake/tag/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output["name"], "guake") self.assertEqual(output["tags"], []) create_tag(self.session) output = self.app.get("/api/v1/guake/tag/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output["name"], "guake") self.assertEqual(output["tags"][0]["tag"], u"gnóme") self.assertEqual(output["tags"][0]["votes"], 2) self.assertEqual(output["tags"][0]["like"], 2) self.assertEqual(output["tags"][0]["dislike"], 0) self.assertEqual(output["tags"][1]["tag"], "terminal") self.assertEqual(output["tags"][0]["votes"], 2) self.assertEqual(output["tags"][0]["like"], 2) self.assertEqual(output["tags"][0]["dislike"], 0)
def test_statistics(self): """ Test the statistics method. """ out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(0, out['summary']['with_tags']) self.assertEqual(0, out['summary']['no_tags']) self.assertEqual(0, out['summary']['tags_per_package']) self.assertEqual(0, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(0, out['summary']['total_packages']) self.assertEqual(0, out['summary']['total_unique_tags']) create_package(self.session) out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(0, out['summary']['with_tags']) self.assertEqual(3, out['summary']['no_tags']) self.assertEqual(0, out['summary']['tags_per_package']) self.assertEqual(0, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(3, out['summary']['total_packages']) self.assertEqual(0, out['summary']['total_unique_tags']) create_tag(self.session) out = fedoratagger.lib.statistics(self.session) self.assertEqual(['summary'], out.keys()) self.assertEqual(2, out['summary']['with_tags']) self.assertEqual(1, out['summary']['no_tags']) self.assertEqual(4/float(3), out['summary']['tags_per_package']) self.assertEqual(2, out['summary']['tags_per_package_no_zeroes']) self.assertEqual(3, out['summary']['total_packages']) self.assertEqual(3, out['summary']['total_unique_tags'])
def test_packages__repr__(self): """ Test the Packages.__repr__ function. """ create_project(self.session) create_distro(self.session) create_package(self.session) pkg = model.Packages.by_id(self.session, 1) self.assertEqual(str(pkg), '<Packages(1, Fedora: geany)>')
def test_to_json(self): """ Test the to_json function of Package. """ create_package(self.session) package = model.Package.by_name(self.session, 'guake') package = package.to_json() self.assertEqual(set(package.keys()), set(['status', 'upstream_url', 'name', 'summary', 'acls', 'creation_date', 'review_url', 'description']))
def test_to_json(self): """ Test the to_json function of Package. """ create_package(self.session) package = model.Package.by_name(self.session, 'guake') package = package.to_json() self.assertEqual(package.keys(), ['status', 'upstream_url', 'name', 'summary', 'acls', 'creation_date', 'review_url'])
def test_repr_package(self): """ Test the __repr__ function of Package. """ create_package(self.session) packages = model.Package.all(self.session) self.assertEqual("Package(u'guake', u'Top down terminal for GNOME', " "u'Approved', " "upstreamurl=u'http://guake.org', " "reviewurl=u'https://bugzilla.redhat.com/450189')", packages[0].__repr__())
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 = model.Packages.by_id(self.session, 1) self.assertEqual(pkg.package_name, 'geany') self.assertEqual(pkg.distro, 'Fedora')
def test_admin_actions(self, login_func): """ Test the admin_actions function. """ login_func.return_value = None user = FakeFasUserAdmin() with user_set(pkgdb2.APP, user): output = self.app.get('/admin/actions/') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) output = self.app.get( '/admin/actions/?page=abc&limit=def&status=ghi&package=test') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) self.assertTrue( 'class="errors">Incorrect limit provided, using default</' in output.data) self.assertTrue( '<li class="errors">No package exists</li>' in output.data) output = self.app.get('/admin/actions/?package=guake') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) self.assertTrue( '<p>No actions found</p>' in output.data) # Create some actions to see create_collection(pkgdb2.SESSION) create_package(pkgdb2.SESSION) create_admin_actions(pkgdb2.SESSION, n=2) # set the pagination pkgdb2.APP.config['ITEMS_PER_PAGE'] = 1 # Check the list output = self.app.get('/admin/actions/?status=all') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) # 2 actions = 2 pages self.assertTrue('<td>1 / 2</td>' in output.data) # Reset the pagination pkgdb2.APP.config['ITEMS_PER_PAGE'] = 50
def test_admin_actions(self, login_func): """ Test the admin_actions function. """ login_func.return_value = None user = FakeFasUserAdmin() with user_set(pkgdb2.APP, user): output = self.app.get('/admin/actions/') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) output = self.app.get( '/admin/actions/?page=abc&limit=def&status=ghi&package=test') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) self.assertTrue( 'class="errors">Incorrect limit provided, using default</' in output.data) self.assertTrue( '<li class="errors">No package exists</li>' in output.data) output = self.app.get('/admin/actions/?package=guake') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) self.assertTrue( '<p>No actions found</p>' in output.data) # Create some actions to see create_collection(pkgdb2.SESSION) create_package(pkgdb2.SESSION) create_admin_actions(pkgdb2.SESSION, n=2) # set the pagination pkgdb2.APP.config['ITEMS_PER_PAGE'] = 1 # Check the list output = self.app.get('/admin/actions/?status=all') self.assertEqual(output.status_code, 200) self.assertTrue('<h1>Actions</h1>' in output.data) self.assertTrue( 'Restrict to package: <input type="text" name="package" />' in output.data) # 3 actions = 3 pages self.assertTrue('<td>1 / 3</td>' in output.data) # Reset the pagination pkgdb2.APP.config['ITEMS_PER_PAGE'] = 50
def test_add_tag(self): """ Test the add_tag function of taggerlib. """ create_user(self.session) user_pingou = model.FASUser.by_name(self.session, 'pingou') user_ralph = model.FASUser.by_name(self.session, 'ralph') create_package(self.session) out = fedoratagger.lib.add_tag(self.session, 'guake', u'gnóme', user_pingou) self.assertEqual(out, u'Tag "gnóme" added to the package "guake"') self.session.commit() pkg = model.Package.by_name(self.session, 'guake') self.assertEqual(1, len(pkg.tags)) self.assertEqual(u'gnóme', pkg.tags[0].label) self.assertRaises(IntegrityError, fedoratagger.lib.add_tag, self.session, 'guake', u'gnóme', user_pingou) self.session.rollback() out = fedoratagger.lib.add_tag(self.session, 'guake', 'terminal', user_pingou) self.assertEqual(out, 'Tag "terminal" added to the package "guake"') self.session.commit() pkg = model.Package.by_name(self.session, 'guake') self.assertEqual(2, len(pkg.tags)) self.assertEqual(u'gnóme', pkg.tags[0].label) self.assertEqual('terminal', pkg.tags[1].label) self.assertEqual(1, pkg.tags[0].like) self.assertEqual(1, pkg.tags[1].like) out = fedoratagger.lib.add_tag(self.session, 'guake', 'terminal', user_ralph) self.assertEqual(out, 'Tag "terminal" added to the package "guake"') self.session.commit() pkg = model.Package.by_name(self.session, 'guake') self.assertEqual(2, len(pkg.tags)) self.assertEqual(u'gnóme', pkg.tags[0].label) self.assertEqual('terminal', pkg.tags[1].label) self.assertEqual(1, pkg.tags[0].like) self.assertEqual(2, pkg.tags[1].like) self.assertRaises(ValueError, fedoratagger.lib.add_tag, self.session, 'guake', 'ass', user_pingou) tagobj1 = model.Tag.get(self.session, pkg.id, 'terminal') self.assertEquals('terminal on guake', tagobj1.__unicode__()) tagobj2 = model.Tag.get(self.session, pkg.id, u'gnóme') self.assertEquals(u'gnóme on guake', tagobj2.__unicode__())
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 = json.loads(output.data) 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 = json.loads(output.data) 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 = json.loads(output.data) 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_rating_dump(self): """ Test rating_pkg_dump """ output = self.app.get('/api/v1/rating/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, '') create_package(self.session) create_rating(self.session) output = self.app.get('/api/v1/rating/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, 'guake\t75.0\n' 'geany\t100.0')
def test_tag_dump(self): """ Test tag_pkg_dump """ output = self.app.get("/api/v1/tag/dump/") self.assertEqual(output.status_code, 200) self.assertEqual(output.data, "") create_package(self.session) create_tag(self.session) output = self.app.get("/api/v1/tag/dump/") self.assertEqual(output.status_code, 200) self.assertEqual( output.data.decode("utf-8"), u"guake\tgnóme\n" u"guake\tterminal\n" u"geany\tgnóme\ngeany\tide" )
def test_rating_dump(self): """ Test rating_pkg_dump """ output = self.app.get('/api/v1/rating/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, '') create_package(self.session) create_rating(self.session) set_usages(self.session, usage=True) output = self.app.get('/api/v1/rating/dump/') self.assertEqual(output.status_code, 200) expected = 'guake\t75.0\t2\t2\ngeany\t100.0\t1\t1\ngitg\t-1.0\t0\t1' self.assertEqual(output.data, expected)
def test_tag_dump(self): """ Test tag_pkg_dump """ output = self.app.get('/api/v1/tag/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, '') create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/tag/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data.decode('utf-8'), u'guake\tgnóme\n' u'guake\tterminal\n' u'geany\tgnóme\ngeany\tide')
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_pkg_get_usage(self): """ Test the pkg_get_usage function. """ output = self.app.get('/api/v1/guake/usage') self.assertEqual(output.status_code, 301) output = self.app.get('/api/v1/guake/usage/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], 'Package "guake" not found') create_user(self.session) create_package(self.session) output = self.app.get('/api/v1/guake/usage/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['name'], 'guake') self.assertEqual(output['usage'], 0) # Mark two people as using it. set_usages(self.session, usage=True) output = self.app.get('/api/v1/guake/usage/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['usage'], 2) self.assertEqual(output['name'], 'guake') # And now have them no longer use it. set_usages(self.session, usage=False) output = self.app.get('/api/v1/guake/usage/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['usage'], 0) self.assertEqual(output['name'], 'guake') # But if we try to mark this twice, it only counts once. set_usages(self.session, usage=True) set_usages(self.session, usage=True) set_usages(self.session, usage=True) output = self.app.get('/api/v1/guake/usage/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['usage'], 2) self.assertEqual(output['name'], 'guake')
def test_tag_dump(self): """ Test tag_pkg_dump """ output = self.app.get('/api/v1/tag/dump/') self.assertEqual(output.status_code, 200) self.assertEqual(output.data, '') create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/tag/dump/') self.assertEqual(output.status_code, 200) self.assertEqual( output.data.decode('utf-8'), u'guake\tgnóme\n' u'guake\tterminal\n' u'geany\tgnóme\ngeany\tide')
def test_leaderboard(self): """ Test the leaderboard method. """ out = fedoratagger.lib.leaderboard(self.session) self.assertEqual([], out.keys()) create_package(self.session) create_tag(self.session) out = fedoratagger.lib.leaderboard(self.session) self.assertEqual(out.keys(), [1, 2, 3, 4, 5, 6]) self.assertEqual(out[1].keys(), ['score', 'gravatar', 'name']) self.assertEqual(out[1]['name'], 'pingou') self.assertEqual(out[1]['score'], 8) self.assertEqual(out[2]['name'], 'toshio') self.assertEqual(out[2]['score'], 2)
def test_score(self): """ Test the score method. """ self.assertRaises(NoResultFound, fedoratagger.lib.score, self.session, 'asd') create_package(self.session) create_tag(self.session) out = fedoratagger.lib.score(self.session, 'pingou') self.assertEqual(out.keys(), ['score', 'gravatar', 'name']) self.assertEqual(out['name'], 'pingou') self.assertEqual(out['score'], 8) out = fedoratagger.lib.score(self.session, 'toshio') self.assertEqual(out.keys(), ['score', 'gravatar', 'name']) self.assertEqual(out['name'], 'toshio') self.assertEqual(out['score'], 2)
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, '') create_project(self.session) create_package(self.session) output = self.app.get('/api/packages/wiki/') self.assertEqual(output.status_code, 200) exp = "* geany DEFAULT http://www.geany.org/Download/Releases\n"\ "* subsurface DEFAULT http://subsurface.hohndel.org/downloads/" self.assertEqual(output.data, exp)
def test_random(self): """ Test pkg_random """ output = self.app.get("/api/v1/random/") self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output["output"], "notok") self.assertEqual(output["error"], "No package could be found") create_package(self.session) create_rating(self.session) output = self.app.get("/api/v1/random/") self.assertEqual(output.status_code, 200) output = json.loads(output.data) keys = output.keys() keys.sort() self.assertEqual(set(output.keys()), set(["rating", "summary", "name", "tags", "usage", "icon"]))
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_to_json(self): """ Test the to_json function of Package. """ create_package(self.session) package = model.Package.by_name(self.session, 'guake') package = package.to_json() self.assertEqual( set(package.keys()), set(['status', 'upstream_url', 'name', 'summary', 'acls', 'creation_date', 'review_url', 'description'])) self.assertEqual(package['acls'], []) package = model.Package.by_name(self.session, 'guake') package = package.to_json(collection='master') self.assertEqual( set(package.keys()), set(['status', 'upstream_url', 'name', 'summary', 'acls', 'creation_date', 'review_url', 'description'])) self.assertEqual(package['acls'], [])
def test_api_get_project(self): """ Test the api_get_project function of the API. """ create_distro(self.session) output = self.app.get('/api/project/') self.assertEqual(output.status_code, 404) output = self.app.get('/api/project/10') self.assertEqual(output.status_code, 404) data = json.loads(output.data) exp = {"error": "no such project", "output": "notok"} self.assertEqual(data, exp) create_project(self.session) create_package(self.session) output = self.app.get('/api/project/10') self.assertEqual(output.status_code, 404) output = self.app.get('/api/project/1') self.assertEqual(output.status_code, 200) data = json.loads(output.data) 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(exp, data)
def test_leaderboard(self): """ Test leaderboard """ output = self.app.get('/api/v1/leaderboard/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), []) create_package(self.session) create_tag(self.session) output = self.app.get('/api/v1/leaderboard/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output.keys(), ['1', '3', '2', '5', '4', '6']) self.assertEqual(output['1'].keys(), ['score', 'gravatar', 'name']) self.assertEqual(output['1']['name'], 'pingou') self.assertEqual(output['1']['score'], 8) self.assertEqual(output['2']['name'], 'toshio') self.assertEqual(output['2']['score'], 2) self.assertEqual(output['5']['name'], 'ralph')
def test_tag_get(self): """ Test the tag_get function. """ output = self.app.get(u'/api/v1/tag/gnóme') self.assertEqual(output.status_code, 301) output = self.app.get(u'/api/v1/tag/gnóme/') self.assertEqual(output.status_code, 404) output = json.loads(output.data) self.assertEqual(output['output'], 'notok') self.assertEqual(output['error'], u'Tag "gnóme" not found') create_package(self.session) create_tag(self.session) output = self.app.get(u'/api/v1/tag/gnóme/') self.assertEqual(output.status_code, 200) output = json.loads(output.data) self.assertEqual(output['tag'], u'gnóme') self.assertEqual(len(output['packages']), 2) self.assertEqual(output['packages'][0]['package'], 'guake')
def test_banned(self): """ Test the banned property of a Tag""" create_user(self.session) user_pingou = model.FASUser.by_name(self.session, 'pingou') create_package(self.session) pkg = model.Package.by_name(self.session, 'guake') out = fedoratagger.lib.add_tag(self.session, 'guake', 'X-test', user_pingou) self.assertEqual(out, 'Tag "x-test" added to the package "guake"') tagobj = model.Tag.get(self.session, pkg.id, 'x-test') self.assertEquals(True, tagobj.banned) out = fedoratagger.lib.add_tag(self.session, 'guake', 'terminal', user_pingou) self.assertEqual(out, 'Tag "terminal" added to the package "guake"') tagobj = model.Tag.get(self.session, pkg.id, 'terminal') self.assertEquals(False, tagobj.banned) out = fedoratagger.lib.add_tag(self.session, 'guake', 'application', user_pingou) self.assertEqual(out, 'Tag "application" added to the package "guake"') tagobj = model.Tag.get(self.session, pkg.id, 'application') self.assertEquals(True, tagobj.banned)