예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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'])
예제 #4
0
 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'])
예제 #5
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'])
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
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')
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
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')
예제 #12
0
    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)
예제 #13
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")
예제 #14
0
    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)
예제 #15
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',
            ]))
예제 #16
0
    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)
예제 #17
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')
예제 #18
0
    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)
예제 #19
0
    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)
예제 #20
0
    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'], [])
예제 #21
0
    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)
예제 #22
0
    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)
예제 #23
0
    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)
예제 #24
0
    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)
예제 #25
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'])
예제 #26
0
    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)
예제 #27
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')
예제 #28
0
    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)>')
예제 #29
0
    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)>')
예제 #30
0
 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']))
예제 #31
0
 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'])
예제 #32
0
 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__())
예제 #33
0
 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__())
예제 #34
0
    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')
예제 #35
0
    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')
예제 #36
0
    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
예제 #37
0
    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
예제 #38
0
    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__())
예제 #39
0
    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__())
예제 #40
0
    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)
예제 #41
0
    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')
예제 #42
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"
        )
예제 #43
0
    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)
예제 #44
0
    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)
예제 #45
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')
예제 #46
0
    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)
예제 #47
0
    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')
예제 #48
0
    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')
예제 #49
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')
예제 #50
0
    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)
예제 #51
0
    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)
예제 #52
0
    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)
예제 #53
0
    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)
예제 #54
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"]))
예제 #55
0
    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)
예제 #56
0
    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'], [])
예제 #57
0
    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)
예제 #58
0
    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')
예제 #59
0
    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')
예제 #60
0
    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)