def test_acl_get(self):
        """ Test the api_acl_get function.  """
        output = self.app.get('/api/package/acl/get/guake')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/api/package/acl/get/guake/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(output.data,
                         '{\n  "output": "notok",\n  '
                         '"error": "No package found with name '
                         '\\"guake\\""\n}')

        output = self.app.get('/api/package/acl/get/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(output.data,
                         '{\n  "output": "notok",\n  '
                         '"error": "No package provided"\n}')

        create_package_acl(self.session)

        output = self.app.get('/api/package/acl/get/guake/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(output.keys(),
                         ['acls'])
        self.assertEqual(len(output['acls']), 2)
        self.assertEqual(output['acls'][0]['collection']['branchname'],
                         'F-18')
        self.assertEqual(output['acls'][0]['point_of_contact'],
                         'pingou')
        self.assertEqual(output['acls'][1]['collection']['branchname'],
                         'devel')
        self.assertEqual(output['acls'][1]['point_of_contact'],
                         'pingou')
Example #2
0
    def test_branch(self):
        """ Test the branch method of PackageListing. """
        create_package_acl(self.session)

        pkg = model.Package.by_name(self.session, 'guake')
        pkg_list = model.PackageListing.by_package_id(self.session, pkg.id)
        self.assertEqual(len(pkg_list), 2)
        self.assertEqual(pkg_list[0].collection.branchname, 'f18')
        self.assertEqual(len(pkg_list[0].acls), 2)
        self.assertEqual(pkg_list[1].collection.branchname, 'master')
        self.assertEqual(len(pkg_list[1].acls), 5)

        # Create a new collection
        new_collection = model.Collection(
            name='Fedora',
            version='19',
            status='Active',
            owner='toshio',
            branchname='f19',
            dist_tag='.fc19',
        )
        self.session.add(new_collection)
        self.session.commit()

        # Branch guake from master to f19
        pkg_list[1].branch(self.session, new_collection)

        pkg_list = model.PackageListing.by_package_id(self.session, pkg.id)
        self.assertEqual(len(pkg_list), 3)
        self.assertEqual(pkg_list[0].collection.branchname, 'f18')
        self.assertEqual(pkg_list[1].collection.branchname, 'master')
        self.assertEqual(len(pkg_list[1].acls), 5)
        self.assertEqual(pkg_list[2].collection.branchname, 'f19')
        self.assertEqual(len(pkg_list[2].acls), 5)
    def test_packager_list(self):
        """ Test the api_packager_list function.  """
        output = self.app.get('/api/packager/list/pin*')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/api/packager/list/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(
            output.data, '{\n  "output": "notok",\n  '
            '"error": "Invalid request"\n}')

        output = self.app.get('/api/packager/list/pin*/')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data,
                         '{\n  "output": "ok",\n  "packagers": []\n}')

        create_package_acl(self.session)

        output = self.app.get('/api/packager/list/pin*/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(output.keys(), ['output', 'packagers'])
        self.assertEqual(output['output'], 'ok')
        self.assertEqual(len(output['packagers']), 1)
        self.assertEqual(output['packagers'][0], 'pingou')
Example #4
0
    def test_get_acl_user_package(self):
        """ Test the get_acl_user_package function. """
        pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou',
                                                     'guake')
        self.assertEqual(pending_acls, [])

        create_package_acl(self.session)

        pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou',
                                                     'geany')
        self.assertEqual(len(pending_acls), 0)

        pending_acls = pkgdblib.get_acl_user_package(self.session, 'pingou',
                                                     'guake')
        self.assertEqual(len(pending_acls), 4)

        pending_acls = pkgdblib.get_acl_user_package(self.session,
                                                     'toshio',
                                                     'guake',
                                                     status='Awaiting Review')
        self.assertEqual(len(pending_acls), 1)
        self.assertEqual(pending_acls[0]['package'], 'guake')
        self.assertEqual(pending_acls[0]['collection'], 'devel')
        self.assertEqual(pending_acls[0]['acl'], 'commit')
        self.assertEqual(pending_acls[0]['status'], 'Awaiting Review')
Example #5
0
    def test_get_acl_package(self):
        """ Test the get_acl_package function. """
        create_package_acl(self.session)

        packages = model.Package.all(self.session)
        self.assertEqual(3, len(packages))
        self.assertEqual('guake', packages[0].name)

        pkg_acl = pkgdblib.get_acl_package(self.session, 'guake')
        self.assertEqual(len(pkg_acl), 2)
        self.assertEqual(pkg_acl[0].collection.branchname, 'F-18')
        self.assertEqual(pkg_acl[0].package.name, 'guake')
        self.assertEqual(pkg_acl[0].acls[0].fas_name, 'pingou')

        pkg_acl = pkgdblib.get_acl_package(self.session, 'guake', 'devel')
        self.assertEqual(pkg_acl.collection.branchname, 'devel')
        self.assertEqual(pkg_acl.package.name, 'guake')
        self.assertEqual(pkg_acl.acls[0].fas_name, 'pingou')

        # Collection does not exist
        self.assertRaises(pkgdblib.PkgdbException,
                          pkgdblib.get_acl_package,
                          self.session,
                          'guake',
                          'unknown')
Example #6
0
    def test_dropcommit_package(self, bz_mail_func, login_func, mock_func):
        """ Test the dropcommit_package function. """
        login_func.return_value = None
        bz_mail_func.return_value = 1

        create_package_acl(self.session)

        user = FakeFasUser()
        mock_func.return_value = ['pingou', 'ralph', 'kevin']

        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/rpms/guake/dropcommit/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 405)

        with user_set(pkgdb2.APP, user):
            output = self.app.get('/package/rpms/guake/')
            csrf_token = output.data.split(
                'name="csrf_token" type="hidden" value="')[1].split('">')[0]
            data = {'csrf_token': csrf_token}

            output = self.app.post('/acl/rpms/guake/dropcommit/',
                                   data=data,
                                   follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="message">ACLs updated</li>' in output.data)

            output = self.app.post('/acl/rpms/random/dropcommit/',
                                   data=data,
                                   follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">No package found by this name</li>' in
                output.data)
    def test_acl_get(self):
        """ Test the api_acl_get function.  """
        output = self.app.get('/api/package/acl/get/guake')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/api/package/acl/get/guake/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(
            output.data, '{\n  "output": "notok",\n  '
            '"error": "No package found with name '
            '\\"guake\\""\n}')

        output = self.app.get('/api/package/acl/get/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(
            output.data, '{\n  "output": "notok",\n  '
            '"error": "No package provided"\n}')

        create_package_acl(self.session)

        output = self.app.get('/api/package/acl/get/guake/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(output.keys(), ['acls'])
        self.assertEqual(len(output['acls']), 2)
        self.assertEqual(output['acls'][0]['collection']['branchname'], 'F-18')
        self.assertEqual(output['acls'][0]['point_of_contact'], 'pingou')
        self.assertEqual(output['acls'][1]['collection']['branchname'],
                         'devel')
        self.assertEqual(output['acls'][1]['point_of_contact'], 'pingou')
Example #8
0
    def test_get_package_of_user(self):
        """ Test the get_package_of_user function of Package. """
        create_package_acl(self.session)

        packages = model.Package.get_package_of_user(self.session,
                                                     user='******',
                                                     poc=True)
        self.assertEqual(len(packages), 2)
        self.assertEqual(packages[0][0].name, 'guake')

        expected = set(['master', 'f18'])
        branches = set([packages[0][1].branchname, packages[1][1].branchname])
        self.assertEqual(branches.symmetric_difference(expected), set())

        packages = model.Package.get_package_of_user(self.session,
                                                     user='******',
                                                     poc=False)
        self.assertEqual(packages, [])

        packages = model.Package.get_package_of_user(
            self.session,
            user='******',
            pkg_status='Awaiting Review',
        )
        self.assertEqual(len(packages), 0)
    def test_packager_list(self):
        """ Test the api_packager_list function.  """
        output = self.app.get('/api/packager/list/pin*')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/api/packager/list/')
        self.assertEqual(output.status_code, 500)
        self.assertEqual(output.data,
                         '{\n  "output": "notok",\n  '
                         '"error": "Invalid request"\n}')

        output = self.app.get('/api/packager/list/pin*/')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data,
                         '{\n  "output": "ok",\n  "packagers": []\n}')

        create_package_acl(self.session)

        output = self.app.get('/api/packager/list/pin*/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(output.keys(),
                         ['output', 'packagers'])
        self.assertEqual(output['output'], 'ok')
        self.assertEqual(len(output['packagers']), 1)
        self.assertEqual(output['packagers'][0], 'pingou')
Example #10
0
    def test_dropcommit_package(self, login_func, mock_func):
        """ Test the dropcommit_package function. """
        login_func.return_value = None

        create_package_acl(self.session)

        user = FakeFasUser()
        mock_func.return_value = ['pingou', 'ralph', 'kevin']

        with user_set(pkgdb2.APP, user):
            output = self.app.get(
                '/acl/guake/dropcommit/', follow_redirects=True)
            self.assertEqual(output.status_code, 405)

        with user_set(pkgdb2.APP, user):
            output = self.app.get('/package/guake/')
            csrf_token = output.data.split(
                'name="csrf_token" type="hidden" value="')[1].split('">')[0]
            data = {'csrf_token': csrf_token}

            output = self.app.post(
                '/acl/guake/dropcommit/',
                data=data, follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="message">ACLs updated</li>' in output.data)

            output = self.app.post(
                '/acl/random/dropcommit/',
                data=data, follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">No package found by this name</li>'
                in output.data)
Example #11
0
    def test_to_json(self):
        """ Test the to_json function of PersonPackageListing. """
        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(0, len(packager))

        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(4, len(packager))
        output = packager[0].to_json()
        self.assertEqual(
            output, {
                'status': u'Approved',
                'acl': 'commit',
                'fas_name': u'pingou',
                'packagelist': {
                    'point_of_contact': u'pingou',
                    'collection': {
                        'pendingurltemplate': None,
                        'publishurltemplate': None,
                        'branchname': u'F-18',
                        'version': u'18',
                        'name': u'Fedora'
                    },
                    'package': {
                        'upstreamurl': u'http://guake.org',
                        'name': u'guake',
                        'reviewurl': u'https://bugzilla.redhat.com/450189',
                        'summary': u'Top down terminal for GNOME'
                    }
                }
            })
Example #12
0
    def test_get_package_of_user(self):
        """ Test the get_package_of_user function of Package. """
        create_package_acl(self.session)

        packages = model.Package.get_package_of_user(
            self.session, user='******', poc=True
        )
        self.assertEqual(len(packages), 2)
        self.assertEqual(packages[0][0].name, 'guake')

        expected = set(['master', 'f18'])
        branches = set([packages[0][1].branchname,
                        packages[1][1].branchname])
        self.assertEqual(branches.symmetric_difference(expected), set())

        packages = model.Package.get_package_of_user(
            self.session, user='******', poc=False
        )
        self.assertEqual(packages, [])

        packages = model.Package.get_package_of_user(
            self.session,
            user='******',
            pkg_status='Awaiting Review',
        )
        self.assertEqual(len(packages), 0)
Example #13
0
    def test_packager_list(self):
        """ Test the api_packager_list function.  """

        output = self.app.get('/api/packagers/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data, {
            "output": "ok",
            "packagers": [],
        })

        output = self.app.get('/api/packagers/pin*/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data, {
            "output": "ok",
            "packagers": [],
        })

        create_package_acl(self.session)

        output = self.app.get('/api/packagers/pin*/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(sorted(output.keys()), ['output', 'packagers'])
        self.assertEqual(output['output'], 'ok')
        self.assertEqual(len(output['packagers']), 1)
        self.assertEqual(output['packagers'][0], 'pingou')
    def test_get_critpath_packages(self):
        """ Test the get_critpath_packages method of PackageListing. """
        create_package_acl(self.session)

        pkg_list = model.PackageListing.get_critpath_packages(self.session)
        self.assertEqual(pkg_list, [])

        pkg_list = model.PackageListing.get_critpath_packages(
            self.session, branch='devel')
        self.assertEqual(pkg_list, [])

        create_package_critpath(self.session)

        pkg_list = model.PackageListing.get_critpath_packages(self.session)
        self.assertEqual(len(pkg_list), 2)
        self.assertEqual(
            pkg_list[0].point_of_contact, "kernel-maint")
        self.assertEqual(
            pkg_list[0].collection.branchname, "F-18")
        self.assertEqual(
            pkg_list[1].point_of_contact, "group::kernel-maint")
        self.assertEqual(
            pkg_list[1].collection.branchname, "devel")

        pkg_list = model.PackageListing.get_critpath_packages(
            self.session, branch='devel')
        self.assertEqual(len(pkg_list), 1)
        self.assertEqual(
            pkg_list[0].point_of_contact, "group::kernel-maint")
        self.assertEqual(
            pkg_list[0].collection.branchname, "devel")
    def test_comaintain_package(self, login_func):
        """ Test the comaintain_package function. """
        login_func.return_value=None

        create_package_acl(self.session)

        user = FakeFasUser()
        with user_set(pkgdb.APP, user):
            output = self.app.get(
                '/acl/guake/comaintain/', follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="message">ACLs updated</li>' in output.data)

            output = self.app.get(
                '/acl/random/comaintain/', follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">No package found by this name</li>'
                in output.data)

        user = FakeFasUser()
        user.groups = ['gitr2spec']
        with user_set(pkgdb.APP, user):
            output = self.app.get(
                '/acl/guake/comaintain/', follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="errors">You must be a packager</li>'
                in output.data)
    def test_api_critpath_filled(self):
        """ Test the api_critpath function with a filled database. """
        # Fill the DB
        create_package_acl(self.session)
        create_package_critpath(self.session)

        output = self.app.get('/api/critpath/')
        self.assertEqual(output.status_code, 200)

        expected = """== devel ==
* kernel
== F-18 ==
* kernel
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/critpath/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/critpath/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            u'pkgs': {
                u'F-18': [u"kernel"],
                u'devel': [u"kernel"]
            },
        }

        self.assertEqual(data, expected)
Example #17
0
    def test_api_monitored_filled(self):
        """ Test the api_monitored function with a filled database. """
        create_package_acl(self.session)
        create_package_critpath(self.session)

        output = self.app.get('/api/monitored/')
        self.assertEqual(output.status_code, 200)

        expected = "# Number of packages: 1\nkernel"
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/monitored/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/monitored/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            "total_packages": 1,
            "packages": [
                "kernel",
            ],
        }

        self.assertEqual(data, expected)

        output = self.app.get('/api/monitored/',
                              environ_base={'HTTP_ACCEPT': 'application/json'})
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        self.assertEqual(data, expected)
Example #18
0
    def test_stats(self):
        """ Test the stats function. """
        output = self.app.get('/stats')
        self.assertEqual(output.status_code, 301)
        output = self.app.get('/stats/')
        self.assertEqual(output.status_code, 200)
        expected = """<h1>Fedora Package Database</h1>

<p>
    PkgDB stores currently information about 0
    active Fedora releases.
</p>"""
        self.assertTrue(expected in output.data)

        create_package_acl(self.session)

        output = self.app.get('/stats')
        self.assertEqual(output.status_code, 301)
        output = self.app.get('/stats/')
        self.assertEqual(output.status_code, 200)
        expected = """<h1>Fedora Package Database</h1>

<p>
    PkgDB stores currently information about 3
    active Fedora releases.
</p>"""
        self.assertTrue(expected in output.data)
Example #19
0
    def test_search(self):
        """ Test the search function of Package. """
        create_package_acl(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)

        packages = model.Package.search(session=self.session,
                                        pkg_name='g%',
                                        eol=True,
                                        limit=1)
        self.assertEqual(len(packages), 1)
        self.assertEqual(packages[0].name, 'geany')
    def test_to_json(self):
        """ Test the to_json function of PersonPackageListing. """
        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(0, len(packager))

        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(4, len(packager))
        output = packager[0].to_json()
        self.assertEqual(output,
        {
            'status': u'Approved',
            'acl': 'commit',
            'fas_name': u'pingou',
            'packagelist': {
                'point_of_contact': u'pingou',
                'collection': {
                    'pendingurltemplate': None,
                    'publishurltemplate': None,
                    'branchname': u'F-18',
                    'version': u'18',
                    'name': u'Fedora'
                }, 
                'package': {
                    'upstreamurl': u'http://guake.org',
                    'name': u'guake',
                    'reviewurl': u'https://bugzilla.redhat.com/450189',
                    'summary': u'Top down terminal for GNOME'
                }
            }
        }
        )
    def test_packager_list(self):
        """ Test the api_packager_list function.  """

        output = self.app.get('/api/packagers/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "output": "ok",
                "packagers": [],
            }
        )

        output = self.app.get('/api/packagers/pin*/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "output": "ok",
                "packagers": [],
            }
        )

        create_package_acl(self.session)

        output = self.app.get('/api/packagers/pin*/')
        self.assertEqual(output.status_code, 200)
        output = json.loads(output.data)
        self.assertEqual(sorted(output.keys()),
                         ['output', 'packagers'])
        self.assertEqual(output['output'], 'ok')
        self.assertEqual(len(output['packagers']), 1)
        self.assertEqual(output['packagers'][0], 'pingou')
Example #22
0
    def test_stats(self):
        """ Test the stats function. """
        output = self.app.get('/stats')
        self.assertEqual(output.status_code, 301)
        output = self.app.get('/stats/')
        self.assertEqual(output.status_code, 200)
        expected = """<h1>Fedora Package Database</h1>

<p>
    PkgDB stores currently information about 0
    active Fedora releases.
</p>"""
        self.assertTrue(expected in output.data)

        create_package_acl(self.session)

        output = self.app.get('/stats')
        self.assertEqual(output.status_code, 301)
        output = self.app.get('/stats/')
        self.assertEqual(output.status_code, 200)
        expected = """<h1>Fedora Package Database</h1>

<p>
    PkgDB stores currently information about 3
    active Fedora releases.
</p>"""
        self.assertTrue(expected in output.data)
Example #23
0
    def test_get_critpath_packages(self):
        """ Test the get_critpath_packages method of PackageListing. """
        create_package_acl(self.session)

        pkg_list = model.PackageListing.get_critpath_packages(self.session)
        self.assertEqual(pkg_list, [])

        pkg_list = model.PackageListing.get_critpath_packages(self.session,
                                                              branch='master')
        self.assertEqual(pkg_list, [])

        create_package_critpath(self.session)

        pkg_list = model.PackageListing.get_critpath_packages(self.session)
        self.assertEqual(len(pkg_list), 2)
        self.assertEqual(pkg_list[0].point_of_contact, "kernel-maint")
        self.assertEqual(pkg_list[0].collection.branchname, "f18")
        self.assertEqual(pkg_list[1].point_of_contact, "group::kernel-maint")
        self.assertEqual(pkg_list[1].collection.branchname, "master")

        pkg_list = model.PackageListing.get_critpath_packages(self.session,
                                                              branch='master')
        self.assertEqual(len(pkg_list), 1)
        self.assertEqual(pkg_list[0].point_of_contact, "group::kernel-maint")
        self.assertEqual(pkg_list[0].collection.branchname, "master")
Example #24
0
    def test_search_packagers(self):
        """ Test the search_packagers function of PackageListing. """
        pkg = model.PackageListing.search_packagers(self.session, 'pin%')
        self.assertEqual(pkg, [])

        create_package_acl(self.session)

        pkg = model.PackageListing.search_packagers(self.session, 'pi%')
        self.assertEqual(len(pkg), 1)
        self.assertEqual(pkg[0][0], 'pingou')

        pkg = model.PackageListing.search_packagers(self.session,
                                                    'pi%',
                                                    count=True)
        self.assertEqual(pkg, 1)

        pkg = model.PackageListing.search_packagers(self.session,
                                                    'pi%',
                                                    offset=1)
        self.assertEqual(pkg, [])

        pkg = model.PackageListing.search_packagers(self.session,
                                                    'pi%',
                                                    limit=1)
        self.assertEqual(len(pkg), 1)
    def test_api_package_info(self):
        """ Test the api_package_info function.  """

        output = self.app.get('/api/package/guake/')
        self.assertEqual(output.status_code, 404)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "error": "Package: guake not found",
                "output": "notok"
            }
        )

        create_package_acl(self.session)

        output = self.app.get('/api/package/guake/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data.keys(), ['output', 'packages'])
        self.assertEqual(len(data['packages']), 2)
        self.assertEqual(data['output'], 'ok')
        self.assertEqual(data['packages'][0]['collection']['branchname'],
                         'F-18')
        self.assertEqual(data['packages'][0]['point_of_contact'],
                         'pingou')
        self.assertEqual(data['packages'][0]['package']['name'],
                         'guake')
        self.assertEqual(data['packages'][1]['collection']['branchname'],
                         'devel')
        self.assertEqual(data['packages'][1]['point_of_contact'],
                         'pingou')
        self.assertEqual(data['packages'][1]['package']['name'],
                         'guake')

        output = self.app.get('/api/package/?pkg_name=guake&pkg_clt=devel')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data.keys(), ['output', 'packages'])
        self.assertEqual(len(data['packages']), 1)
        self.assertEqual(data['output'], 'ok')
        self.assertEqual(data['packages'][0]['collection']['branchname'],
                         'devel')
        self.assertEqual(data['packages'][0]['point_of_contact'],
                         'pingou')
        self.assertEqual(data['packages'][0]['package']['name'],
                         'guake')

        output = self.app.get('/api/package/?pkg_name=guake&pkg_clt=F-19')
        self.assertEqual(output.status_code, 500)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "error": "Collection F-19 is not associated with package "
                "guake",
                "output": "notok"
            }
        )
Example #26
0
    def test_api_pendingacls_filled(self):
        """ Test the api_pendingacls function with a filled database. """
        # Fill the DB
        create_package_acl(self.session)
        create_package_critpath(self.session)

        output = self.app.get('/api/pendingacls/')
        self.assertEqual(output.status_code, 200)

        expected = """# Number of requests pending: 2
guake:master has ralph waiting for approveacls
guake:master has toshio waiting for commit"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/pendingacls/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/pendingacls/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            'pending_acls': [
                {
                    'acl': 'approveacls',
                    'collection': 'master',
                    'namespace': 'rpms',
                    'package': 'guake',
                    'status': 'Awaiting Review',
                    'user': '******'
                },
                {
                    'acl': 'commit',
                    'collection': 'master',
                    'namespace': 'rpms',
                    'package': 'guake',
                    'status': 'Awaiting Review',
                    'user': '******'
                }
            ],
            'total_requests_pending': 2
        }

        self.assertEqual(data, expected)

        output = self.app.get('/api/pendingacls/?format=json&username=pingou')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        self.assertEqual(data, expected)

        output = self.app.get('/api/pendingacls/?format=json&username=toshio')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        expected = {'pending_acls': [], 'total_requests_pending': 0}

        self.assertEqual(data, expected)
Example #27
0
    def test_has_acls(self):
        """ Test the has_acls function. """
        self.assertFalse(pkgdblib.has_acls(self.session, 'pingou',
            'guake', 'devel', 'approveacl'))

        create_package_acl(self.session)

        self.assertTrue(pkgdblib.has_acls(self.session, 'pingou',
            'guake', 'devel', 'commit'))
Example #28
0
    def test_search(self):
        """ Test the search function. """
        output = self.app.get('/search')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/search/', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)

        create_package_acl(self.session)

        output = self.app.get('/search/?term=g*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<a href="/package/geany/">' in output.data)
        self.assertTrue('<a href="/package/guake/">' in output.data)

        output = self.app.get('/search/?term=p&type=packager',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="message">Only one packager matching, redirecting '
            'you to his/her page</li>' in output.data)
        self.assertTrue('pingou</h1> (<a class="fas"' in output.data)

        output = self.app.get('/search/?term=g*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<a href="/package/geany/">' in output.data)
        self.assertTrue('<a href="/package/guake/">' in output.data)

        output = self.app.get('/search/?term=gu*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="message">Only one package matching, redirecting you'
            ' to it</li>' in output.data)
        self.assertTrue(
            '<p property="doap:shortdesc">Top down terminal for GNOME</p>'
            in output.data)

        output = self.app.get('/search/?term=g*&type=orphaned',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<p>0 packages found</p>' in output.data)
        expected = '<p>See the list of <a href="/packages/">active</a>\n' \
                   'or <a href="/retired/">retired</a> packages</p>'
        self.assertTrue(expected in output.data)

        output = self.app.get('/search/?term=g*&type=retired',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<p>0 packages found</p>' in output.data)
        expected = '<p>See the list of <a href="/packages/">active</a>\n' \
                   'or <a href="/orphaned/">orphaned</a> packages</p>'
        self.assertTrue(expected in output.data)
Example #29
0
    def test_search(self):
        """ Test the search function. """
        output = self.app.get('/search')
        self.assertEqual(output.status_code, 301)

        output = self.app.get('/search/', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)

        create_package_acl(self.session)

        output = self.app.get('/search/?term=g*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<a href="/package/geany/">' in output.data)
        self.assertTrue('<a href="/package/guake/">' in output.data)

        output = self.app.get('/search/?term=p&type=packager',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="message">Only one packager matching, redirecting '
            'you to his/her page</li>' in output.data)
        self.assertTrue('pingou</h1> (<a class="fas"' in output.data)

        output = self.app.get('/search/?term=g*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<a href="/package/geany/">' in output.data)
        self.assertTrue('<a href="/package/guake/">' in output.data)

        output = self.app.get('/search/?term=gu*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="message">Only one package matching, redirecting you'
            ' to it</li>' in output.data)
        self.assertTrue(
            '<p property="doap:shortdesc">Top down terminal for GNOME</p>' in
            output.data)

        output = self.app.get('/search/?term=g*&type=orphaned',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<p>0 packages found</p>' in output.data)
        expected = '<p>See the list of <a href="/packages/">active</a>\n' \
                   'or <a href="/retired/">retired</a> packages</p>'
        self.assertTrue(expected in output.data)

        output = self.app.get('/search/?term=g*&type=retired',
                              follow_redirects=True)
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Search packages</h1>' in output.data)
        self.assertTrue('<p>0 packages found</p>' in output.data)
        expected = '<p>See the list of <a href="/packages/">active</a>\n' \
                   'or <a href="/orphaned/">orphaned</a> packages</p>'
        self.assertTrue(expected in output.data)
Example #30
0
    def test_get_package_maintained(self):
        """ Test the get_package_maintained function. """
        create_package_acl(self.session)

        pkg = pkgdblib.get_package_maintained(self.session, 'pingou')
        self.assertEqual(len(pkg), 1)
        self.assertEqual(pkg[0].name, 'guake')

        pkg = pkgdblib.get_package_maintained(self.session, 'ralph')
        self.assertEqual(pkg, [])
Example #31
0
    def test_get_package_maintained(self):
        """ Test the get_package_maintained function. """
        create_package_acl(self.session)

        pkg = pkgdblib.get_package_maintained(self.session, 'pingou')
        self.assertEqual(len(pkg), 1)
        self.assertEqual(pkg[0].name, 'guake')

        pkg = pkgdblib.get_package_maintained(self.session, 'ralph')
        self.assertEqual(pkg, [])
    def test_api_notify_filled(self):
        """ Test the api_notify function with a filled database. """
        # Filled DB
        create_package_acl(self.session)

        output = self.app.get('/api/notify/')
        self.assertEqual(output.status_code, 200)

        expected = """geany|group::gtk-sig
guake|pingou
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            u'title':
            u'Fedora Package Database -- Notification List',
            u'packages': [
                {
                    u'geany': [u'group::gtk-sig']
                },
                {
                    u'guake': [u'pingou']
                },
            ],
            u'name':
            None,
            u'version':
            None,
            u'eol':
            False
        }
        self.assertEqual(data, expected)

        output = self.app.get('/api/notify/?name=Fedora')
        self.assertEqual(output.status_code, 200)

        expected = """geany|group::gtk-sig
guake|pingou
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/?name=Fedora&version=18')
        self.assertEqual(output.status_code, 200)

        expected = """guake|pingou
"""
        self.assertEqual(output.data, expected)
    def test_api_package_list(self):
        """ Test the api_package_list function.  """

        output = self.app.get('/api/packages/guake/')
        self.assertEqual(output.status_code, 404)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "error": "No packages found for these parameters",
                "packages": [],
                "output": "notok"
            }
        )

        create_package_acl(self.session)

        output = self.app.get('/api/packages/guake/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(
            data.keys(),
            ['output', 'packages', 'pages_total', 'page'])
        self.assertEqual(len(data['packages']), 1)
        self.assertEqual(data['output'], 'ok')
        self.assertEqual(
            data['packages'][0]['name'], 'guake')
        self.assertEqual(
            data['packages'][0]['status'], 'Approved')
        self.assertEqual(
            data['packages'][0]['summary'], 'Top down terminal for GNOME')

        output = self.app.get('/api/packages/guake/?limit=abc')
        self.assertEqual(output.status_code, 500)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "error": "Wrong limit provided",
                "output": "notok"
            }
        )

        output = self.app.get('/api/packages/g*/?count=True')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(
            data,
            {
                "output": "ok",
                "packages": 2,
                "page": 1,
                "pages_total": 1,
            }
        )
Example #34
0
    def test___repr__(self):
        """ Test the __repr__ function of PackageListingAcl. """
        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(5, len(packager))
        output = packager[0][0].__repr__()
        self.assertEqual(
            output, "PackageListingAcl(id:1, u'pingou', "
            "PackageListing:1, Acl:commit, Approved)")
Example #35
0
    def test_has_acls(self):
        """ Test the has_acls function. """
        self.assertFalse(
            pkgdblib.has_acls(self.session, 'pingou', 'guake', 'devel',
                              'approveacl'))

        create_package_acl(self.session)

        self.assertTrue(
            pkgdblib.has_acls(self.session, 'pingou', 'guake', 'devel',
                              'commit'))
Example #36
0
    def test_api_pendingacls_filled(self):
        """ Test the api_pendingacls function with a filled database. """
        # Fill the DB
        create_package_acl(self.session)
        create_package_critpath(self.session)

        output = self.app.get('/api/pendingacls/')
        self.assertEqual(output.status_code, 200)

        expected = """# Number of requests pending: 2
guake:master has ralph waiting for approveacls
guake:master has toshio waiting for commit"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/pendingacls/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/pendingacls/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            'pending_acls': [{
                'acl': 'approveacls',
                'collection': 'master',
                'package': 'guake',
                'status': 'Awaiting Review',
                'user': '******'
            }, {
                'acl': 'commit',
                'collection': 'master',
                'package': 'guake',
                'status': 'Awaiting Review',
                'user': '******'
            }],
            'total_requests_pending':
            2
        }

        self.assertEqual(data, expected)

        output = self.app.get('/api/pendingacls/?format=json&username=pingou')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        self.assertEqual(data, expected)

        output = self.app.get('/api/pendingacls/?format=json&username=toshio')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        expected = {'pending_acls': [], 'total_requests_pending': 0}

        self.assertEqual(data, expected)
    def test___repr__(self):
        """ Test the __repr__ function of PackageListingAcl. """
        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(5, len(packager))
        output = packager[0][0].__repr__()
        self.assertEqual(
            output,
            "PackageListingAcl(id:1, u'pingou', "
            "PackageListing:1, Acl:commit, Approved)")
Example #38
0
    def test_to_json_acls(self):
        """ Test the to_json function of Package with ACLs data. """

        create_package_acl(self.session)

        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.assertNotEqual(package['acls'], [])
Example #39
0
    def test_to_json(self):
        """ Test the to_json function of PackageListingAcl. """
        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(0, len(packager))

        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(5, len(packager))
        output = packager[0][0].to_json()

        # Because matching times in tests is hard.
        del output['packagelist']['package']['creation_date']
        del output['packagelist']['status_change']
        output['packagelist']['collection']['date_created'] = 'date_created'
        output['packagelist']['collection']['date_updated'] = 'date_updated'

        target = {
            'status': u'Approved',
            'acl': 'commit',
            'fas_name': u'pingou',
            'packagelist': {
                'status': u'Approved',
                'point_of_contact': u'pingou',
                'critpath': False,
                'collection': {
                    'branchname': u'f18',
                    'version': u'18',
                    'name': u'Fedora',
                    'status': u'Active',
                    'koji_name': None,
                    'dist_tag': u'.fc18',
                    'allow_retire': False,
                    'date_created': 'date_created',
                    'date_updated': 'date_updated',
                },
                'package': {
                    'upstream_url': u'http://guake.org',
                    'name': u'guake',
                    'namespace': u'rpms',
                    'status': u'Approved',
                    'review_url': u'https://bugzilla.redhat.com/450189',
                    'acls': [],
                    'summary': u'Top down terminal for GNOME',
                    'description': u'Top down terminal...',
                    'monitor': False,
                    'koschei_monitor': False,
                }
            }
        }
        self.assertEqual(output, target)
Example #40
0
    def test_to_json(self):
        """ Test the to_json function of PackageListingAcl. """
        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(0, len(packager))

        create_package_acl(self.session)

        packager = model.PackageListingAcl.get_acl_packager(
            self.session, 'pingou')
        self.assertEqual(5, len(packager))
        output = packager[0][0].to_json()

        # Because matching times in tests is hard.
        del output['packagelist']['package']['creation_date']
        del output['packagelist']['status_change']
        output['packagelist']['collection']['date_created'] = 'date_created'
        output['packagelist']['collection']['date_updated'] = 'date_updated'

        target = {
            'status': u'Approved',
            'acl': 'commit',
            'fas_name': u'pingou',
            'packagelist': {
                'status': u'Approved',
                'point_of_contact': u'pingou',
                'critpath': False,
                'collection': {
                    'branchname': u'f18',
                    'version': u'18',
                    'name': u'Fedora',
                    'status': u'Active',
                    'koji_name': None,
                    'dist_tag': u'.fc18',
                    'allow_retire': False,
                    'date_created': 'date_created',
                    'date_updated': 'date_updated',
                },
                'package': {
                    'upstream_url': u'http://guake.org',
                    'name': u'guake',
                    'namespace': u'rpms',
                    'status': u'Approved',
                    'review_url': u'https://bugzilla.redhat.com/450189',
                    'acls': [],
                    'summary': u'Top down terminal for GNOME',
                    'description': u'Top down terminal...',
                    'monitor': False,
                    'koschei_monitor': False,
                }
            }
        }
        self.assertEqual(output, target)
    def test_collection_info(self):
        """ Test the collection_info function. """
        create_package_acl(self.session)

        output = self.app.get('/collection/master/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>Fedora devel</h1>' in output.data)

        output = self.app.get('/collection/random/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<li class="errors">No collection of this name '
                        'found.</li>' in output.data)
    def test_api_package_retire3(self, login_func, mock_func):
        """ Test a third time the api_package_retire function.  """
        login_func.return_value = None
        create_package_acl(self.session)
        mock_func.log.return_value = ''

        # Redirect as you are not a packager
        user = FakeFasUser()
        user.groups = []

        # Add the EPEL 7 collection
        collection = model.Collection(
            name='Fedora EPEL',
            version='7',
            status='Active',
            owner='kevin',
            branchname='epel7',
            dist_tag='.el7',
        )
        self.session.add(collection)
        self.session.commit()

        # Add guake to epel7
        guake_pkg = model.Package.by_name(self.session, 'guake')
        el7_collec = model.Collection.by_name(self.session, 'epel7')

        pkgltg = model.PackageListing(
            point_of_contact='orphan',
            status='Orphaned',
            package_id=guake_pkg.id,
            collection_id=el7_collec.id,
        )
        self.session.add(pkgltg)
        self.session.commit()

        # Retire an orphaned package on an EPEL branch
        user = FakeFasUser()
        data = {
            'pkgnames': 'guake',
            'branches': ['epel7'],
        }
        with user_set(pkgdb2.APP, user):
            output = self.app.post('/api/package/retire/', data=data)
            self.assertEqual(output.status_code, 200)
            data = json.loads(output.data)
            self.assertEqual(
                data,
                {
                    "messages": [""],
                    "output": "ok"
                }
            )
Example #43
0
    def test_to_json_acls(self):
        """ Test the to_json function of Package with ACLs data. """

        create_package_acl(self.session)

        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', 'monitor',
                 'koschei_monitor']))
        self.assertNotEqual(package['acls'], [])
Example #44
0
    def test_package_request_new(self, login_func, mock_func):
        """ Test the package_request_new function. """
        login_func.return_value = None
        mock_func.return_value = ['pingou', 'toshio']
        create_package_acl(self.session)

        data = {
            'pkgname': 'gnome-terminal',
            'summary': 'terminal for GNOME',
            'description': 'desc',
            'review_url': 'https://bz.rh.c/123',
            'status': 'Approved',
            'critpath': False,
            'poc': 'pingou',
            'upstream_url': 'http://gnome.org',
            'branches': 'master',
            'namespace': 'rpms',
        }

        user = FakeFasUser()

        user.username = '******'
        data['branches'] = 'epel7'
        with user_set(pkgdb2.APP, user):

            # Branch EPEL7 does not exist
            output = self.app.post(
                '/request/package/', follow_redirects=True,
                data=data)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<td class="errors">&#39;epel7&#39; is not a valid choice'
                in output.data)

            csrf_token = output.data.split(
                'name="csrf_token" type="hidden" value="')[1].split('">')[0]

        data['csrf_token'] = csrf_token
        data['branches'] = 'master'

        # All good
        user = FakeFasUser()
        with user_set(pkgdb2.APP, user):
            output = self.app.post(
                '/request/package/',
                follow_redirects=True, data=data)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="message">user: pingou request package: '
                'gnome-terminal on branch master</li>' in output.data)
Example #45
0
    def test_get_acl_packager(self):
        """ Test the get_acl_packager function. """
        acls = pkgdblib.get_acl_packager(self.session, 'pingou')
        self.assertEqual(acls, [])

        create_package_acl(self.session)

        acls = pkgdblib.get_acl_packager(self.session, 'pingou')
        self.assertEqual(len(acls), 4)
        self.assertEqual(acls[0].packagelist.package.name, 'guake')
        self.assertEqual(acls[0].packagelist.collection.branchname, 'F-18')
        self.assertEqual(acls[1].packagelist.collection.branchname, 'F-18')
        self.assertEqual(acls[2].packagelist.collection.branchname, 'devel')
        self.assertEqual(acls[3].packagelist.collection.branchname, 'devel')
Example #46
0
    def test_get_acl_packager(self):
        """ Test the get_acl_packager function. """
        acls = pkgdblib.get_acl_packager(self.session, 'pingou')
        self.assertEqual(acls, [])

        create_package_acl(self.session)

        acls = pkgdblib.get_acl_packager(self.session, 'pingou')
        self.assertEqual(len(acls), 4)
        self.assertEqual(acls[0].packagelist.package.name, 'guake')
        self.assertEqual(acls[0].packagelist.collection.branchname, 'F-18')
        self.assertEqual(acls[1].packagelist.collection.branchname, 'F-18')
        self.assertEqual(acls[2].packagelist.collection.branchname, 'devel')
        self.assertEqual(acls[3].packagelist.collection.branchname, 'devel')
Example #47
0
    def test_packager_info(self):
        """ Test the packager_info function. """
        create_package_acl(self.session)

        output = self.app.get('/packager/pingou/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('pingou</h1>' in output.data)
        self.assertTrue('<a href="/package/rpms/guake/">' in output.data)

        output = self.app.get('/packager/random/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="errors">No packager of this name found.</li>'
            in output.data)
Example #48
0
    def test_api_notify_all_filled(self):
        """ Test the api_notify_all function with a filled database. """
        # Filled DB
        create_package_acl(self.session)

        output = self.app.get('/api/notify/all')
        self.assertEqual(output.status_code, 200)

        expected = """core|josef
geany|group::gtk-sig,josef
guake|pingou
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/all?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/all?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            u'title': u'Fedora Package Database -- Notification List',
            u'packages': {
                'core': [u'josef'],
                'geany': [u'group::gtk-sig', 'josef'],
                'guake': [u'pingou'],
            },
            u'name': None,
            u'version': None,
            u'eol': False
        }
        self.assertEqual(data, expected)

        output = self.app.get('/api/notify/all?name=Fedora')
        self.assertEqual(output.status_code, 200)

        expected = """core|josef
geany|group::gtk-sig,josef
guake|pingou
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/notify/all?name=Fedora&version=18')
        self.assertEqual(output.status_code, 200)

        expected = """guake|pingou
"""
        self.assertEqual(output.data, expected)
    def test_packager_info(self):
        """ Test the packager_info function. """
        create_package_acl(self.session)

        output = self.app.get('/packager/pingou/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1>pingou</h1>' in output.data)
        self.assertTrue('<a href="/package/guake/">' in output.data)

        output = self.app.get('/packager/random/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="errors">No packager of this name found.</li>'
            in output.data)
Example #50
0
    def test_pending_acl(self, login_func):
        """ Test the pending_acl function. """
        login_func.return_value = None

        create_package_acl(self.session)

        user = FakeFasUser()
        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/pending/')
            self.assertTrue('<table id="pending">' in output.data)
            self.assertTrue(
                '<a href="/package/rpms/guake/acl/commit/">' in output.data)
            self.assertTrue(
                '<input type="submit" value="Update"/>' in output.data)
Example #51
0
    def test_api_critpath_filled(self):
        """ Test the api_critpath function with a filled database. """
        # Fill the DB
        create_package_acl(self.session)
        create_package_critpath(self.session)

        output = self.app.get('/api/critpath/')
        self.assertEqual(output.status_code, 200)

        expected = """== master ==
* kernel
== f18 ==
* kernel
"""
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/critpath/?format=random')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data, expected)

        output = self.app.get('/api/critpath/?format=json')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            u'pkgs': {
                u'f18': [
                    u"kernel"
                ],
                u'master': [
                    u"kernel"
                ]
            },
        }

        self.assertEqual(data, expected)

        output = self.app.get('/api/critpath/?format=json&branches=master')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)

        expected = {
            u'pkgs': {
                u'master': [
                    u"kernel"
                ]
            },
        }

        self.assertEqual(data, expected)
Example #52
0
    def test_pending_acl(self, login_func):
        """ Test the pending_acl function. """
        login_func.return_value = None

        create_package_acl(self.session)

        user = FakeFasUser()
        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/pending/')
            self.assertTrue('<table id="pending">' in output.data)
            self.assertTrue(
                '<a href="/package/guake/acl/commit/">' in output.data)
            self.assertTrue(
                '<input type="submit" value="Update"/>' in output.data)
Example #53
0
    def test_get_pending_acl_user(self):
        """ Test the get_pending_acl_user function. """
        pending_acls = pkgdblib.get_pending_acl_user(
            self.session, 'pingou')
        self.assertEqual(pending_acls, [])

        create_package_acl(self.session)

        pending_acls = pkgdblib.get_pending_acl_user(
            self.session, 'pingou')
        self.assertEqual(len(pending_acls), 1)
        self.assertEqual(pending_acls[0]['package'], 'guake')
        self.assertEqual(pending_acls[0]['collection'], 'devel')
        self.assertEqual(pending_acls[0]['acl'], 'commit')
        self.assertEqual(pending_acls[0]['status'], 'Awaiting Review')
Example #54
0
    def test_api_package_info(self):
        """ Test the api_package_info function.  """

        output = self.app.get('/api/package/guake/')
        self.assertEqual(output.status_code, 404)
        data = json.loads(output.data)
        self.assertEqual(data, {
            "error": "Package: guake not found",
            "output": "notok"
        })

        create_package_acl(self.session)

        output = self.app.get('/api/package/guake/')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data.keys(), ['output', 'packages'])
        self.assertEqual(len(data['packages']), 2)
        self.assertEqual(data['output'], 'ok')
        self.assertEqual(data['packages'][0]['collection']['branchname'],
                         'F-18')
        self.assertEqual(data['packages'][0]['point_of_contact'], 'pingou')
        self.assertEqual(data['packages'][0]['package']['name'], 'guake')
        self.assertEqual(data['packages'][1]['collection']['branchname'],
                         'devel')
        self.assertEqual(data['packages'][1]['point_of_contact'], 'pingou')
        self.assertEqual(data['packages'][1]['package']['name'], 'guake')

        output = self.app.get('/api/package/?pkg_name=guake&pkg_clt=devel')
        self.assertEqual(output.status_code, 200)
        data = json.loads(output.data)
        self.assertEqual(data.keys(), ['output', 'packages'])
        self.assertEqual(len(data['packages']), 1)
        self.assertEqual(data['output'], 'ok')
        self.assertEqual(data['packages'][0]['collection']['branchname'],
                         'devel')
        self.assertEqual(data['packages'][0]['point_of_contact'], 'pingou')
        self.assertEqual(data['packages'][0]['package']['name'], 'guake')

        output = self.app.get('/api/package/?pkg_name=guake&pkg_clt=F-19')
        self.assertEqual(output.status_code, 500)
        data = json.loads(output.data)
        self.assertEqual(
            data, {
                "error": "Collection F-19 is not associated with package "
                "guake",
                "output": "notok"
            })
Example #55
0
    def test_comaintain_package(self, login_func):
        """ Test the comaintain_package function. """
        login_func.return_value = None

        create_package_acl(self.session)

        user = FakeFasUser()
        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/guake/comaintain/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">You are already a co-maintainer on '
                'F-18</li>' in output.data)
            self.assertFalse(
                '<li class="message">ACLs updated</li>' in output.data)

            output = self.app.get('/acl/random/comaintain/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">No package found by this name</li>' in
                output.data)

        user = FakeFasUser()
        user.username = '******'
        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/guake/comaintain/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="message">ACLs updated</li>' in output.data)

            output = self.app.get('/acl/random/comaintain/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue(
                '<li class="error">No package found by this name</li>' in
                output.data)

        user = FakeFasUser()
        user.groups = ['gitr2spec']
        with user_set(pkgdb2.APP, user):
            output = self.app.get('/acl/guake/comaintain/',
                                  follow_redirects=True)
            self.assertEqual(output.status_code, 200)
            self.assertTrue('<li class="errors">You must be a packager</li>' in
                            output.data)
    def test_package_info(self):
        """ Test the package_info function. """
        create_package_acl(self.session)

        output = self.app.get('/package/geany/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1 property="doap:name">geany</h1>' in output.data)
        self.assertTrue('<h3>Fedora 18</h3>' in output.data)
        self.assertTrue('<a href="/packager/pingou/">' in output.data)
        self.assertTrue('<a href="/packager/group::gtk-sig/">' in output.data)

        output = self.app.get('/package/random/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="errors">No package of this name found.</li>'
            in output.data)
    def test_package_info(self):
        """ Test the package_info function. """
        create_package_acl(self.session)

        output = self.app.get('/package/geany/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue('<h1 property="doap:name">geany</h1>' in output.data)
        self.assertTrue('<h3>Fedora 18</h3>' in output.data)
        self.assertTrue('<a href="/packager/pingou/">' in output.data)
        self.assertTrue('<a href="/packager/group::gtk-sig/">' in output.data)

        output = self.app.get('/package/random/')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(
            '<li class="errors">No package of this name found.</li>' in
            output.data)
    def test_by_collectionid(self):
        """ Test the by_collectionid method of PackageListing. """
        create_package_acl(self.session)

        # Collection 2 == F-18
        pkg_list = model.PackageListing.by_collectionid(self.session, 2)
        self.assertEqual(len(pkg_list), 3)
        self.assertEqual(pkg_list[0].collection.branchname, 'F-18')
        self.assertEqual(pkg_list[1].collection.branchname, 'F-18')
        self.assertEqual(pkg_list[2].collection.branchname, 'F-18')

        # Collection 3 == devel
        pkg_list = model.PackageListing.by_collectionid(self.session, 3)
        self.assertEqual(len(pkg_list), 3)
        self.assertEqual(pkg_list[0].collection.branchname, 'devel')
        self.assertEqual(pkg_list[1].collection.branchname, 'devel')