Beispiel #1
0
 def test_as_dict(self):
     expected_dict = {
         "items_per_page": 1,
         "page": 1,
         "total_items": 3,
         "items": [
             {
                 "id": 3,
                 "backend": "custom",
                 "name": "R2spec",
                 "homepage": "https://fedorahosted.org/r2spec/",
                 "ecosystem": "https://fedorahosted.org/r2spec/",
                 "regex": None,
                 "version": None,
                 "version_url": None,
                 "versions": [],
             }
         ],
     }
     create_project(self.session)
     page = self.query.paginate(order_by=models.Project.name, items_per_page=1)
     actual_dict = page.as_dict()
     actual_dict["items"][0].pop("updated_on")
     actual_dict["items"][0].pop("created_on")
     self.assertEqual(expected_dict, actual_dict)
Beispiel #2
0
    def test_edit_project_insecure(self):
        """
        Assert change of project insecure flag
        """
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertFalse(project_objs[0].insecure)

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name="geany",
            homepage="https://www.geany.org/",
            backend=project_objs[0].backend,
            version_scheme="RPM",
            version_url=project_objs[0].version_url,
            version_prefix=None,
            regex=project_objs[0].regex,
            insecure=True,
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertTrue(project_objs[0].insecure)
    def test_api_projects_names(self):
        """ Test the api_projects_names function of the API. """
        create_distro(self.session)
        output = self.app.get('/api/projects/names')
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        exp = {"projects": [], "total": 0}
        self.assertEqual(data, exp)

        create_project(self.session)
        create_package(self.session)

        output = self.app.get('/api/projects/names/')
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        exp = {"projects": ["geany", "R2spec", "subsurface"], "total": 3}
        self.assertEqual(data, exp)

        output = self.app.get('/api/projects/names/?pattern=ge')
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        exp = {"projects": ["geany"], "total": 1}
        self.assertEqual(data, exp)
Beispiel #4
0
    def test_edit_project_insecure(self):
        """
        Assert change of project insecure flag
        """
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertFalse(project_objs[0].insecure)

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name='geany',
            homepage='https://www.geany.org/',
            backend=project_objs[0].backend,
            version_scheme='RPM',
            version_url=project_objs[0].version_url,
            version_prefix=None,
            regex=project_objs[0].regex,
            insecure=True,
            user_id='*****@*****.**',
        )

        project_objs = models.Project.all(self.session)
        self.assertTrue(project_objs[0].insecure)
Beispiel #5
0
    def test_log_search(self):
        """ Test the Log.search function. """
        create_project(self.session)

        logs = models.Log.search(self.session)
        self.assertEqual(len(logs), 3)
        self.assertEqual(
            logs[0].description,
            '[email protected] added project: R2spec')
        self.assertEqual(
            logs[1].description,
            '[email protected] added project: subsurface')
        self.assertEqual(
            logs[2].description,
            '[email protected] added project: geany')

        logs = models.Log.search(self.session, count=True)
        self.assertEqual(logs, 3)

        from_date = datetime.datetime.utcnow().date() - datetime.timedelta(days=1)
        logs = models.Log.search(
            self.session, from_date=from_date, offset=1, limit=1)
        self.assertEqual(len(logs), 1)
        self.assertEqual(
            logs[0].description,
            '[email protected] added project: subsurface')

        logs = models.Log.search(self.session, project_name='subsurface')
        self.assertEqual(len(logs), 1)
        self.assertEqual(
            logs[0].description,
            '[email protected] added project: subsurface')
Beispiel #6
0
    def test_distro_repr(self):
        """ Test the __repr__ function of Project. """
        create_project(self.session)

        obs = "<Project(geany, https://www.geany.org/)>"
        project = models.Project.by_id(self.session, 1)
        self.assertEqual(str(project), obs)
Beispiel #7
0
    def test_edit_project_creating_duplicate(self):
        """
        Assert that attempting to edit a project and creating a duplicate fails
        """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'https://www.geany.org/')
        self.assertEqual(project_objs[1].name, 'R2spec')
        self.assertEqual(project_objs[2].name, 'subsurface')

        self.assertRaises(
            AnityaException,
            utilities.edit_project,
            self.session,
            project=project_objs[2],
            name='geany',
            homepage='https://www.geany.org/',
            backend=project_objs[2].backend,
            version_scheme=project_objs[2].version_scheme,
            version_url=project_objs[2].version_url,
            version_prefix=None,
            regex=project_objs[2].regex,
            insecure=False,
            user_id='*****@*****.**',
        )
Beispiel #8
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)
Beispiel #9
0
 def test_as_dict(self):
     expected_dict = {
         u"items_per_page": 1,
         u"page": 1,
         u"total_items": 3,
         u"items": [
             {
                 "id": 3,
                 "backend": u"custom",
                 "name": u"R2spec",
                 "homepage": u"https://fedorahosted.org/r2spec/",
                 "ecosystem": u"https://fedorahosted.org/r2spec/",
                 "regex": None,
                 "version": None,
                 "version_url": None,
                 "versions": [],
             }
         ],
     }
     create_project(self.session)
     page = self.query.paginate(order_by=models.Project.name, items_per_page=1)
     actual_dict = page.as_dict()
     actual_dict["items"][0].pop("updated_on")
     actual_dict["items"][0].pop("created_on")
     self.assertEqual(expected_dict, actual_dict)
Beispiel #10
0
 def test_project_updated_incorrect_status(self):
     """
     Assert that all projects are returned when incorrect status is used.
     """
     create_project(self.session)
     projects = models.Project.updated(self.session, status="incorrect")
     self.assertEqual(len(projects), 3)
Beispiel #11
0
    def test_edit_project_check_release(self, mock_check):
        """
        Assert that check_release is working as it should
        """
        create_project(self.session)

        project_objs = models.Project.all(self.session)

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name="geany",
            homepage="https://www.geany.org/",
            backend=project_objs[0].backend,
            version_scheme="RPM",
            version_pattern=None,
            version_url=project_objs[0].version_url,
            version_prefix=None,
            pre_release_filter=None,
            version_filter=None,
            regex=project_objs[0].regex,
            insecure=False,
            user_id="*****@*****.**",
            releases_only=False,
            check_release=True,
        )

        project_objs = models.Project.all(self.session)

        mock_check.assert_called_with(project_objs[0], mock.ANY)
Beispiel #12
0
    def test_map_project_no_project_for_package(self):
        """ Test package duplicity when package is not associated to project """
        create_distro(self.session)
        create_project(self.session)

        pkg = models.Packages(
            distro_name="Fedora", project_id=None, package_name="geany"
        )
        self.session.add(pkg)
        self.session.commit()

        distro_objs = self.session.query(models.Distro).all()
        project_obj = models.Project.get(self.session, 1)
        self.assertEqual(project_obj.name, "geany")
        self.assertEqual(len(project_obj.packages), 0)
        self.assertEqual(distro_objs[0].name, "Fedora")

        with fml_testing.mock_sends(anitya_schema.ProjectMapCreated):
            utilities.map_project(
                self.session,
                project=project_obj,
                package_name="geany",
                distribution="Fedora",
                user_id="*****@*****.**",
                old_package_name=None,
            )
        self.session.commit()

        project_obj = models.Project.get(self.session, 1)
        packages = self.session.query(models.Packages).all()
        self.assertEqual(project_obj.name, "geany")
        self.assertEqual(len(project_obj.packages), 1)
        self.assertEqual(len(packages), 1)
        self.assertEqual(project_obj.packages[0].package_name, "geany")
        self.assertEqual(project_obj.packages[0].distro_name, "Fedora")
Beispiel #13
0
    def test_map_project_no_project_for_package(self):
        """ Test package duplicity when package is not associated to project """
        create_distro(self.session)
        create_project(self.session)

        pkg = models.Packages(distro_name='Fedora',
                              project_id=None,
                              package_name='geany')
        self.session.add(pkg)
        self.session.commit()

        distro_objs = self.session.query(models.Distro).all()
        project_obj = models.Project.get(self.session, 1)
        self.assertEqual(project_obj.name, 'geany')
        self.assertEqual(len(project_obj.packages), 0)
        self.assertEqual(distro_objs[0].name, 'Fedora')

        utilities.map_project(
            self.session,
            project=project_obj,
            package_name='geany',
            distribution='Fedora',
            user_id='*****@*****.**',
            old_package_name=None,
        )
        self.session.commit()

        project_obj = models.Project.get(self.session, 1)
        packages = self.session.query(models.Packages).all()
        self.assertEqual(project_obj.name, 'geany')
        self.assertEqual(len(project_obj.packages), 1)
        self.assertEqual(len(packages), 1)
        self.assertEqual(project_obj.packages[0].package_name, 'geany')
        self.assertEqual(project_obj.packages[0].distro_name, 'Fedora')
Beispiel #14
0
    def test_projects_search(self):
        """ Test the projects_search function. """
        create_distro(self.session)
        create_project(self.session)

        output = self.app.get('/projects/search/g')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data.count(b'<a href="/project/'), 1)

        output = self.app.get('/projects/search/g*')
        self.assertEqual(output.status_code, 200)
        expected = b"""
                  <a href="https://www.geany.org/" target="_blank" rel="noopener noreferrer">
                    https://www.geany.org/
                  </a>"""
        self.assertTrue(expected in output.data)

        self.assertEqual(output.data.count(b'<a href="/project/'), 1)

        output = self.app.get('/projects/search/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertEqual(output.data.count(b'<a href="/project/'), 3)

        output = self.app.get('/projects/search/geany*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)

        expected = b'<li class="list-group-item list-group-item-default">' \
            b'Only one result matching with an ' \
            b'exact match, redirecting</li>'
        self.assertTrue(expected in output.data)
Beispiel #15
0
 def test_as_dict(self):
     expected_dict = {
         u'items_per_page':
         1,
         u'page':
         1,
         u'total_items':
         3,
         u'items': [{
             'id': 3,
             'backend': u'custom',
             'name': u'R2spec',
             'homepage': u'https://fedorahosted.org/r2spec/',
             'regex': None,
             'version': None,
             'version_url': None,
             'versions': [],
         }],
     }
     create_project(self.session)
     page = self.query.paginate(order_by=models.Project.name,
                                items_per_page=1)
     actual_dict = page.as_dict()
     actual_dict['items'][0].pop('updated_on')
     actual_dict['items'][0].pop('created_on')
     self.assertEqual(expected_dict, actual_dict)
Beispiel #16
0
    def test_edit_project_creating_duplicate(self):
        """
        Assert that attempting to edit a project and creating a duplicate fails
        """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
        self.assertEqual(project_objs[1].name, "R2spec")
        self.assertEqual(project_objs[2].name, "subsurface")

        with fml_testing.mock_sends(anitya_schema.ProjectEdited):
            self.assertRaises(
                AnityaException,
                utilities.edit_project,
                self.session,
                project=project_objs[2],
                name="geany",
                homepage="https://www.geany.org/",
                backend=project_objs[2].backend,
                version_scheme=project_objs[2].version_scheme,
                version_pattern=None,
                version_url=project_objs[2].version_url,
                version_prefix=None,
                pre_release_filter=None,
                version_filter=None,
                regex=project_objs[2].regex,
                insecure=False,
                user_id="*****@*****.**",
                releases_only=False,
            )
Beispiel #17
0
    def test_distro(self):
        """ Test the distro function. """
        create_distro(self.session)
        create_project(self.session)

        output = self.app.get('/distro/Fedora/')
        self.assertEqual(output.status_code, 200)

        expected = b"""
  <blockquote>
      Oups this is embarrassing, it seems that no projects are being
      monitored currently.
  </blockquote>"""
        self.assertTrue(expected in output.data)
        self.assertTrue(
            b'form action="/distro/Fedora/search/" role="form" '
            b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)

        output = self.app.get('/distro/Fedora/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertTrue(
            b'form action="/distro/Fedora/search/" role="form" '
            b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)
Beispiel #18
0
    def test_projects_search(self):
        """ Test the projects_search function. """
        create_distro(self.session)
        create_project(self.session)

        output = self.app.get('/projects/search/g')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data.count(b'<a href="/project/'), 1)

        output = self.app.get('/projects/search/g*')
        self.assertEqual(output.status_code, 200)
        expected = b"""
                  <a href="http://www.geany.org/" target="_blank" rel="noopener noreferrer">
                    http://www.geany.org/
                  </a>"""
        self.assertTrue(expected in output.data)

        self.assertEqual(output.data.count(b'<a href="/project/'), 1)

        output = self.app.get('/projects/search/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertEqual(output.data.count(b'<a href="/project/'), 3)

        output = self.app.get(
            '/projects/search/geany*', follow_redirects=True)
        self.assertEqual(output.status_code, 200)

        expected = b'<li class="list-group-item list-group-item-default">' \
            b'Only one result matching with an ' \
            b'exact match, redirecting</li>'
        self.assertTrue(expected in output.data)
Beispiel #19
0
    def test_projects(self):
        """ Test the projects function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"""
                <a href="http://www.geany.org/" target="_blank" rel="noopener noreferrer">
                  http://www.geany.org/
                </a>"""
        self.assertTrue(expected in output.data)

        expected = b"""
                <a href="https://fedorahosted.org/r2spec/" target="_blank" rel="noopener noreferrer">
                  https://fedorahosted.org/r2spec/
                </a>"""
        self.assertTrue(expected in output.data)

        expected = b"""
                <a href="http://subsurface.hohndel.org/" target="_blank" rel="noopener noreferrer">
                  http://subsurface.hohndel.org/
                </a>"""
        self.assertTrue(expected in output.data)

        self.assertEqual(output.data.count(b'<a href="/project/'), 3)

        output = self.app.get('/projects/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data.count(b'<a href="/project/'), 3)
Beispiel #20
0
    def test_edit_project_regex(self):
        """
        Assert that change of project regex to same value doesn't trigger log
        """
        create_project(self.session)

        logs = self.session.query(models.Log).all()
        project_objs = models.Project.all(self.session)
        self.assertEqual(len(logs), 3)
        self.assertEqual(project_objs[0].regex, 'DEFAULT')

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name='geany',
            homepage='https://www.geany.org/',
            backend=project_objs[0].backend,
            version_scheme='RPM',
            version_url=project_objs[0].version_url,
            version_prefix=None,
            regex='DEFAULT  ',
            insecure=False,
            user_id='*****@*****.**',
        )

        logs = self.session.query(models.Log).all()
        project_objs = models.Project.all(self.session)
        self.assertEqual(len(logs), 3)
        self.assertEqual(project_objs[0].regex, 'DEFAULT')
Beispiel #21
0
    def test_edit_project_version_prefix(self):
        """
        Assert that when version prefix is changed log message is generated
        """
        create_project(self.session)

        logs = self.session.query(models.Log).all()
        project_objs = models.Project.all(self.session)
        self.assertEqual(len(logs), 3)
        self.assertEqual(project_objs[0].version_prefix, None)

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name='geany',
            homepage='https://www.geany.org/',
            backend=project_objs[0].backend,
            version_scheme='RPM',
            version_url=project_objs[0].version_url,
            version_prefix='v',
            regex=project_objs[0].regex,
            insecure=False,
            user_id='*****@*****.**',
        )

        logs = self.session.query(models.Log).all()
        project_objs = models.Project.all(self.session)
        self.assertEqual(len(logs), 4)
        self.assertEqual(project_objs[0].version_prefix, 'v')
Beispiel #22
0
 def test_project_updated_incorrect_status(self):
     """
     Assert that all projects are returned when incorrect status is used.
     """
     create_project(self.session)
     projects = models.Project.updated(self.session, status="incorrect")
     self.assertEqual(len(projects), 3)
Beispiel #23
0
    def test_distro_repr(self):
        """ Test the __repr__ function of Project. """
        create_project(self.session)

        obs = '<Project(geany, http://www.geany.org/)>'
        project = models.Project.by_id(self.session, 1)
        self.assertEqual(str(project), obs)
Beispiel #24
0
    def test_edit_project(self):
        """ Test the edit_project function of Distro. """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'https://www.geany.org/')
        self.assertEqual(project_objs[1].name, 'R2spec')
        self.assertEqual(project_objs[2].name, 'subsurface')

        utilities.edit_project(self.session,
                               project=project_objs[0],
                               name=project_objs[0].name,
                               homepage='https://www.geany.org',
                               backend='PyPI',
                               version_scheme='Date',
                               version_url=None,
                               version_prefix=None,
                               regex=None,
                               insecure=False,
                               user_id='*****@*****.**')

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'https://www.geany.org')
        self.assertEqual(project_objs[0].backend, 'PyPI')
Beispiel #25
0
    def test_projects(self):
        """ Test the projects function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"""
                <a href="https://www.geany.org/" target="_blank" rel="noopener noreferrer">
                  https://www.geany.org/
                </a>"""
        self.assertTrue(expected in output.data)

        expected = (
            b'\n                <a href="https://fedorahosted.org/r2spec/" target="_blank"'
            b' rel="noopener noreferrer">\n                  '
            b'https://fedorahosted.org/r2spec/\n                </a>')
        self.assertTrue(expected in output.data)

        expected = b"""
                <a href="https://subsurface-divelog.org/" target="_blank" rel="noopener noreferrer">
                  https://subsurface-divelog.org/
                </a>"""
        self.assertTrue(expected in output.data)

        self.assertEqual(output.data.count(b'<a href="/project/'), 3)

        output = self.app.get('/projects/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertEqual(output.data.count(b'<a href="/project/'), 3)
Beispiel #26
0
    def test_distro(self):
        """ Test the distro function. """
        create_distro(self.session)
        create_project(self.session)

        output = self.app.get('/distro/Fedora/')
        self.assertEqual(output.status_code, 200)

        expected = b"""
  <blockquote>
      Oups this is embarrassing, it seems that no projects are being
      monitored currently.
  </blockquote>"""
        self.assertTrue(expected in output.data)
        self.assertTrue(b'form action="/distro/Fedora/search/" role="form" '
                        b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)

        output = self.app.get('/distro/Fedora/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertTrue(b'form action="/distro/Fedora/search/" role="form" '
                        b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)
Beispiel #27
0
    def test_map_project_no_project_for_package(self):
        """ Test package duplicity when package is not associated to project """
        create_distro(self.session)
        create_project(self.session)

        pkg = models.Packages(
            distro_name="Fedora", project_id=None, package_name="geany"
        )
        self.session.add(pkg)
        self.session.commit()

        distro_objs = self.session.query(models.Distro).all()
        project_obj = models.Project.get(self.session, 1)
        self.assertEqual(project_obj.name, "geany")
        self.assertEqual(len(project_obj.packages), 0)
        self.assertEqual(distro_objs[0].name, "Fedora")

        utilities.map_project(
            self.session,
            project=project_obj,
            package_name="geany",
            distribution="Fedora",
            user_id="*****@*****.**",
            old_package_name=None,
        )
        self.session.commit()

        project_obj = models.Project.get(self.session, 1)
        packages = self.session.query(models.Packages).all()
        self.assertEqual(project_obj.name, "geany")
        self.assertEqual(len(project_obj.packages), 1)
        self.assertEqual(len(packages), 1)
        self.assertEqual(project_obj.packages[0].package_name, "geany")
        self.assertEqual(project_obj.packages[0].distro_name, "Fedora")
Beispiel #28
0
    def test_edit_project(self):
        """ Test the edit_project function of Distro. """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
        self.assertEqual(project_objs[1].name, "R2spec")
        self.assertEqual(project_objs[2].name, "subsurface")

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name=project_objs[0].name,
            homepage="https://www.geany.org",
            backend="PyPI",
            version_scheme="RPM",
            version_url=None,
            version_prefix=None,
            regex=None,
            insecure=False,
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org")
        self.assertEqual(project_objs[0].backend, "PyPI")
Beispiel #29
0
    def test_edit_project_creating_duplicate(self):
        """
        Assert that attempting to edit a project and creating a duplicate fails
        """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
        self.assertEqual(project_objs[1].name, "R2spec")
        self.assertEqual(project_objs[2].name, "subsurface")

        self.assertRaises(
            AnityaException,
            utilities.edit_project,
            self.session,
            project=project_objs[2],
            name="geany",
            homepage="https://www.geany.org/",
            backend=project_objs[2].backend,
            version_scheme=project_objs[2].version_scheme,
            version_url=project_objs[2].version_url,
            version_prefix=None,
            regex=project_objs[2].regex,
            insecure=False,
            user_id="*****@*****.**",
        )
Beispiel #30
0
    def test_edit_project(self):
        """ Test the edit_project function of Distro. """
        create_distro(self.session)
        create_project(self.session)

        project_objs = anitya.lib.model.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
        self.assertEqual(project_objs[1].name, 'R2spec')
        self.assertEqual(project_objs[2].name, 'subsurface')

        anitya.lib.edit_project(
            self.session,
            project=project_objs[0],
            name=project_objs[0].name,
            homepage='http://www.geany.org',
            backend='PyPI',
            version_url=None,
            version_prefix=None,
            regex=None,
            insecure=False,
            user_id='*****@*****.**')

        project_objs = anitya.lib.model.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'http://www.geany.org')
        self.assertEqual(project_objs[0].backend, 'PyPI')
Beispiel #31
0
    def test_edit_project_creating_duplicate(self):
        """
        Assert that attempting to edit a project and creating a duplicate fails
        """
        create_distro(self.session)
        create_project(self.session)

        project_objs = anitya.lib.model.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
        self.assertEqual(project_objs[1].name, 'R2spec')
        self.assertEqual(project_objs[2].name, 'subsurface')

        self.assertRaises(
            AnityaException,
            anitya.lib.edit_project,
            self.session,
            project=project_objs[2],
            name='geany',
            homepage='http://www.geany.org/',
            backend=project_objs[2].backend,
            version_url=project_objs[2].version_url,
            version_prefix=None,
            regex=project_objs[2].regex,
            insecure=False,
            user_id='*****@*****.**',
        )
Beispiel #32
0
    def test_edit_project_insecure(self):
        """
        Assert change of project insecure flag
        """
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertFalse(project_objs[0].insecure)

        with fml_testing.mock_sends(anitya_schema.ProjectEdited):
            utilities.edit_project(
                self.session,
                project=project_objs[0],
                name="geany",
                homepage="https://www.geany.org/",
                backend=project_objs[0].backend,
                version_scheme="RPM",
                version_pattern=None,
                version_url=project_objs[0].version_url,
                version_prefix=None,
                pre_release_filter=None,
                version_filter=None,
                regex=project_objs[0].regex,
                insecure=True,
                user_id="*****@*****.**",
                releases_only=False,
            )

        project_objs = models.Project.all(self.session)
        self.assertTrue(project_objs[0].insecure)
Beispiel #33
0
    def test_edit_project(self):
        """ Test the edit_project function of Distro. """
        create_distro(self.session)
        create_project(self.session)

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
        self.assertEqual(project_objs[1].name, "R2spec")
        self.assertEqual(project_objs[2].name, "subsurface")

        utilities.edit_project(
            self.session,
            project=project_objs[0],
            name=project_objs[0].name,
            homepage="https://www.geany.org",
            backend="PyPI",
            version_scheme="RPM",
            version_url=None,
            version_prefix=None,
            regex=None,
            insecure=False,
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org")
        self.assertEqual(project_objs[0].backend, "PyPI")
Beispiel #34
0
 def test_no_results(self):
     """Assert an empty page is returned when page * items_per_page > total_items."""
     create_project(self.session)
     page = self.query.paginate(page=1000)
     self.assertEqual(1000, page.page)
     self.assertEqual(3, page.total_items)
     self.assertEqual(25, page.items_per_page)
     self.assertEqual(0, len(page.items))
Beispiel #35
0
 def test_no_results(self):
     """Assert an empty page is returned when page * items_per_page > total_items."""
     create_project(self.session)
     page = self.query.paginate(page=1000)
     self.assertEqual(1000, page.page)
     self.assertEqual(3, page.total_items)
     self.assertEqual(25, page.items_per_page)
     self.assertEqual(0, len(page.items))
Beispiel #36
0
    def test_packages__repr__(self):
        """ Test the Packages.__repr__ function. """
        create_project(self.session)
        create_distro(self.session)
        create_package(self.session)

        pkg = models.Packages.by_id(self.session, 1)
        self.assertEqual(str(pkg), "<Packages(1, Fedora: geany)>")
Beispiel #37
0
    def test_packages__repr__(self):
        """ Test the Packages.__repr__ function. """
        create_project(self.session)
        create_distro(self.session)
        create_package(self.session)

        pkg = models.Packages.by_id(self.session, 1)
        self.assertEqual(str(pkg), "<Packages(1, Fedora: geany)>")
Beispiel #38
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 = models.Packages.by_id(self.session, 1)
        self.assertEqual(pkg.package_name, "geany")
        self.assertEqual(pkg.distro_name, "Fedora")
Beispiel #39
0
    def test_project_init(self):
        """ Test the __init__ function of Project. """
        create_project(self.session)
        self.assertEqual(3, models.Project.all(self.session, count=True))

        projects = models.Project.all(self.session)
        self.assertEqual(projects[0].name, 'geany')
        self.assertEqual(projects[1].name, 'R2spec')
        self.assertEqual(projects[2].name, 'subsurface')
 def setUp(self):
     super(MapProjectTests, self).setUp()
     create_distro(self.session)
     create_project(self.session)
     self.client = self.flask_app.test_client()
     session = Session()
     self.user = models.User(email='*****@*****.**', username='******')
     session.add(self.user)
     session.commit()
Beispiel #41
0
    def test_project_search_no_pattern(self):
        """
        Assert that all projects are returned when
        no pattern is provided.
        """
        create_project(self.session)

        projects = models.Project.search(self.session, "")
        self.assertEqual(len(projects), 3)
Beispiel #42
0
    def test_project_init(self):
        """ Test the __init__ function of Project. """
        create_project(self.session)
        self.assertEqual(3, models.Project.all(self.session, count=True))

        projects = models.Project.all(self.session)
        self.assertEqual(projects[0].name, "geany")
        self.assertEqual(projects[1].name, "R2spec")
        self.assertEqual(projects[2].name, "subsurface")
Beispiel #43
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 = models.Packages.by_id(self.session, 1)
        self.assertEqual(pkg.package_name, "geany")
        self.assertEqual(pkg.distro_name, "Fedora")
Beispiel #44
0
    def test_project_search_no_pattern(self):
        """
        Assert that all projects are returned when
        no pattern is provided.
        """
        create_project(self.session)

        projects = models.Project.search(self.session, "")
        self.assertEqual(len(projects), 3)
Beispiel #45
0
    def test_project_search(self):
        """ Test the search function of Project. """
        create_project(self.session)

        projects = models.Project.search(self.session, 'gea')
        self.assertEqual(projects, [])

        projects = models.Project.search(self.session, 'gea*')
        self.assertEqual(projects[0].name, 'geany')
        self.assertEqual(projects[0].homepage, 'http://www.geany.org/')
Beispiel #46
0
    def test_project_search_by_distro(self):
        """
        Assert that only projects with mappings to specific distro
        are returned when distro is provided.
        """
        create_project(self.session)
        create_package(self.session)

        projects = models.Project.search(self.session, "*", distro="Fedora")
        self.assertEqual(len(projects), 2)
Beispiel #47
0
    def test_project_updated_new(self):
        """
        Assert that only new projects are returned when status is
        set to 'new'.
        """
        create_project(self.session)

        projects = models.Project.updated(self.session, status="new")
        self.assertEqual(len(projects), 3)
        self.assertEqual(projects[0].logs, None)
Beispiel #48
0
 def test_order_by(self):
     """Assert you can alter the order of page results."""
     create_project(self.session)
     page = self.query.paginate(order_by=models.Project.name)
     self.assertEqual(1, page.page)
     self.assertEqual(3, page.total_items)
     self.assertEqual(25, page.items_per_page)
     self.assertEqual(page.items[0].name, "R2spec")
     self.assertEqual(page.items[1].name, "geany")
     self.assertEqual(page.items[2].name, "subsurface")
Beispiel #49
0
    def test_project_updated_new(self):
        """
        Assert that only new projects are returned when status is
        set to 'new'.
        """
        create_project(self.session)

        projects = models.Project.updated(self.session, status="new")
        self.assertEqual(len(projects), 3)
        self.assertEqual(projects[0].logs, None)
Beispiel #50
0
    def test_project_search_by_distro(self):
        """
        Assert that only projects with mappings to specific distro
        are returned when distro is provided.
        """
        create_project(self.session)
        create_package(self.session)

        projects = models.Project.search(self.session, "*", distro="Fedora")
        self.assertEqual(len(projects), 2)
Beispiel #51
0
    def test_project_by_name(self):
        """ Test the by_name function of Project. """
        create_project(self.session)

        project = model.Project.by_name(self.session, 'geany')
        self.assertEqual(project[0].name, 'geany')
        self.assertEqual(project[0].homepage, 'http://www.geany.org/')

        project = model.Project.by_name(self.session, 'terminal')
        self.assertEqual(project, [])
Beispiel #52
0
    def test_project_search(self):
        """ Test the search function of Project. """
        create_project(self.session)

        projects = model.Project.search(self.session, 'gea')
        self.assertEqual(projects, [])

        projects = model.Project.search(self.session, 'gea*')
        self.assertEqual(projects[0].name, 'geany')
        self.assertEqual(projects[0].homepage, 'http://www.geany.org/')
Beispiel #53
0
    def test_project_search(self):
        """ Test the search function of Project. """
        create_project(self.session)

        projects = models.Project.search(self.session, "gea")
        self.assertEqual(projects, [])

        projects = models.Project.search(self.session, "gea*")
        self.assertEqual(projects[0].name, "geany")
        self.assertEqual(projects[0].homepage, "https://www.geany.org/")
Beispiel #54
0
    def test_project_by_name(self):
        """ Test the by_name function of Project. """
        create_project(self.session)

        project = models.Project.by_name(self.session, "geany")
        self.assertEqual(project[0].name, "geany")
        self.assertEqual(project[0].homepage, "https://www.geany.org/")

        project = models.Project.by_name(self.session, "terminal")
        self.assertEqual(project, [])
Beispiel #55
0
    def test_project_by_name(self):
        """ Test the by_name function of Project. """
        create_project(self.session)

        project = models.Project.by_name(self.session, 'geany')
        self.assertEqual(project[0].name, 'geany')
        self.assertEqual(project[0].homepage, 'http://www.geany.org/')

        project = models.Project.by_name(self.session, 'terminal')
        self.assertEqual(project, [])
Beispiel #56
0
 def test_defaults(self):
     """Assert paginate defaults to the first page and 25 items."""
     create_project(self.session)
     page = self.query.paginate()
     self.assertEqual(1, page.page)
     self.assertEqual(3, page.total_items)
     self.assertEqual(25, page.items_per_page)
     # Default ordering is just by id
     self.assertEqual(page.items[0].name, "geany")
     self.assertEqual(page.items[1].name, "subsurface")
     self.assertEqual(page.items[2].name, "R2spec")
Beispiel #57
0
    def test_project_all(self):
        """ Test the all function of Project. """
        create_project(self.session)

        projects = models.Project.all(self.session)
        self.assertEqual(projects[0].name, "geany")
        self.assertEqual(projects[0].homepage, "https://www.geany.org/")
        self.assertEqual(projects[1].name, "R2spec")
        self.assertEqual(projects[1].homepage, "https://fedorahosted.org/r2spec/")

        projects = models.Project.all(self.session, page=3)
        self.assertEqual(projects, [])
Beispiel #58
0
    def test_project_all(self):
        """ Test the Project.all function. """
        create_project(self.session)

        projects = models.Project.all(self.session, count=True)
        self.assertEqual(projects, 3)

        projects = models.Project.all(self.session, page=2)
        self.assertEqual(len(projects), 0)

        projects = models.Project.all(self.session, page="asd")
        self.assertEqual(len(projects), 3)
Beispiel #59
0
 def test_project_updated_count(self):
     """
     Assert that correct count is returned.
     """
     create_project(self.session)
     for project in self.session.query(models.Project).filter(
         models.Project.id == 1
     ):
         project.logs = "Version retrieved correctly"
     self.session.commit()
     projects = models.Project.updated(self.session, count=True)
     self.assertEqual(projects, 1)
Beispiel #60
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)