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="*****@*****.**",
        )
Exemple #2
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')
Exemple #3
0
    def test_distro(self):
        """ Test the distro function. """
        create_distro(self.session)
        create_project(self.session)

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

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

        output = self.app.get('/distro/Fedora/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertTrue(
            b'form action="/distro/Fedora/search/" role="form" '
            b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)
    def test_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")
Exemple #5
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_pattern=None,
            version_url=None,
            version_prefix=None,
            regex=None,
            insecure=False,
            user_id="*****@*****.**",
            releases_only=True,
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org")
        self.assertEqual(project_objs[0].backend, "PyPI")
Exemple #6
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='*****@*****.**',
        )
    def test_api_projects_names(self):
        """ Test the api_projects_names function of the API. """
        create_distro(self.session)
        output = self.app.get('/api/projects/names')
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

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

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

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

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

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

        exp = {"projects": ["geany"], "total": 1}
        self.assertEqual(data, exp)
    def test_create_project(self):
        """ Test the create_project function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, models.Distro.all(self.session, count=True))

        utilities.create_project(
            self.session,
            name="geany",
            homepage="https://www.geany.org/",
            version_url="https://www.geany.org/Download/Releases",
            regex="DEFAULT",
            user_id="*****@*****.**",
        )

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

        self.assertRaises(
            ProjectExists,
            utilities.create_project,
            self.session,
            name="geany",
            homepage="https://www.geany.org/",
            version_url="https://www.geany.org/Download/Releases",
            regex="DEFAULT",
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 1)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
Exemple #9
0
    def test_create_project(self):
        """ Test the create_project function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, model.Distro.all(self.session, count=True))

        anitya.lib.create_project(
            self.session,
            name='geany',
            homepage='http://www.geany.org/',
            version_url='http://www.geany.org/Download/Releases',
            regex='DEFAULT',
            user_id='*****@*****.**',
        )

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

        self.assertRaises(
            AnityaException,
            anitya.lib.create_project,
            self.session,
            name='geany',
            homepage='http://www.geany.org/',
            version_url='http://www.geany.org/Download/Releases',
            regex='DEFAULT',
            user_id='*****@*****.**',
        )

        project_objs = anitya.lib.model.Project.all(self.session)
        self.assertEqual(len(project_objs), 1)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
Exemple #10
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)
Exemple #11
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='*****@*****.**',
        )
Exemple #12
0
    def test_create_project_dry_run(self):
        """ Test the create_project dry_run parameter. """
        create_distro(self.session)
        self.assertEqual(2, models.Distro.all(self.session, count=True))

        with fml_testing.mock_sends():
            utilities.create_project(
                self.session,
                name="geany",
                homepage="https://www.geany.org/",
                version_url="https://www.geany.org/Download/Releases",
                regex="DEFAULT",
                user_id="*****@*****.**",
                dry_run=True,
            )

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

        # This should be still a running transaction
        self.session.rollback()
        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 0)
    def test_distro(self):
        """ Test the distro function. """
        create_distro(self.session)
        create_project(self.session)

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

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

        output = self.app.get('/distro/Fedora/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
        self.assertTrue(b'form action="/distro/Fedora/search/" role="form" '
                        b'class="form-inline">' in output.data)
        self.assertTrue(
            b'<h1>Projects of Fedora monitored</h1>' in output.data)
Exemple #14
0
    def test_create_project(self):
        """ Test the create_project function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, model.Distro.all(self.session, count=True))

        anitya.lib.create_project(
            self.session,
            name='geany',
            homepage='http://www.geany.org/',
            version_url='http://www.geany.org/Download/Releases',
            regex='DEFAULT',
            user_id='*****@*****.**',
        )

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

        self.assertRaises(
            ProjectExists,
            anitya.lib.create_project,
            self.session,
            name='geany',
            homepage='http://www.geany.org/',
            version_url='http://www.geany.org/Download/Releases',
            regex='DEFAULT',
            user_id='*****@*****.**',
        )

        project_objs = anitya.lib.model.Project.all(self.session)
        self.assertEqual(len(project_objs), 1)
        self.assertEqual(project_objs[0].name, 'geany')
        self.assertEqual(project_objs[0].homepage, 'http://www.geany.org/')
Exemple #15
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")
    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)
Exemple #17
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_pattern=None,
            version_url=project_objs[2].version_url,
            version_prefix=None,
            regex=project_objs[2].regex,
            insecure=False,
            user_id="*****@*****.**",
            releases_only=False,
        )
Exemple #18
0
    def test_create_project(self):
        """ Test the create_project function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, models.Distro.all(self.session, count=True))

        utilities.create_project(
            self.session,
            name="geany",
            homepage="https://www.geany.org/",
            version_url="https://www.geany.org/Download/Releases",
            regex="DEFAULT",
            user_id="*****@*****.**",
        )

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

        self.assertRaises(
            ProjectExists,
            utilities.create_project,
            self.session,
            name="geany",
            homepage="https://www.geany.org/",
            version_url="https://www.geany.org/Download/Releases",
            regex="DEFAULT",
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 1)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
Exemple #19
0
    def test_create_project_duplicate(self):
        """ Assert that duplicate can't be created. """
        create_distro(self.session)
        self.assertEqual(2, models.Distro.all(self.session, count=True))

        with fml_testing.mock_sends(anitya_schema.ProjectCreated):
            utilities.create_project(
                self.session,
                name="geany",
                homepage="https://www.geany.org/",
                version_url="https://www.geany.org/Download/Releases",
                regex="DEFAULT",
                user_id="*****@*****.**",
            )

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

        self.assertRaises(
            ProjectExists,
            utilities.create_project,
            self.session,
            name="geany",
            homepage="https://www.geany.org/",
            version_url="https://www.geany.org/Download/Releases",
            regex="DEFAULT",
            user_id="*****@*****.**",
        )

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 1)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org/")
Exemple #20
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")
Exemple #21
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)
Exemple #22
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)
Exemple #23
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')
    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)
Exemple #25
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)>")
Exemple #26
0
    def test_init_distro(self):
        """ Test the __init__ function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, models.Distro.all(self.session, count=True))

        distros = models.Distro.all(self.session)
        self.assertEqual(distros[0].name, "Debian")
        self.assertEqual(distros[1].name, "Fedora")
Exemple #27
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)>")
Exemple #28
0
    def test_init_distro(self):
        """ Test the __init__ function of Distro. """
        create_distro(self.session)
        self.assertEqual(2, model.Distro.all(self.session, count=True))

        distros = model.Distro.all(self.session)
        self.assertEqual(distros[0].name, 'Debian')
        self.assertEqual(distros[1].name, 'Fedora')
 def setUp(self):
     super(MapProjectTests, self).setUp()
     create_distro(self.session)
     create_project(self.session)
     self.client = self.flask_app.test_client()
     session = Session()
     self.user = models.User(email='*****@*****.**', username='******')
     session.add(self.user)
     session.commit()
Exemple #30
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")
Exemple #31
0
    def test_distro_search_page(self):
        """
        Assert that pagination is working in `Distro.search`.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*", page=1)
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
Exemple #32
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")
Exemple #33
0
    def test_distro_search_page(self):
        """
        Assert that pagination is working in `Distro.search`.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*", page=1)
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
Exemple #34
0
    def test_distro_all(self):
        """ Test the all function of Distro. """
        create_distro(self.session)

        distro = model.Distro.all(self.session, page=2)
        self.assertEqual(distro, [])

        distro = model.Distro.all(self.session, page='b')
        distro2 = model.Distro.all(self.session)
        self.assertEqual(distro, distro2)
Exemple #35
0
    def test_distro_all(self):
        """ Test the all function of Distro. """
        create_distro(self.session)

        distro = model.Distro.all(self.session, page=2)
        self.assertEqual(distro, [])

        distro = model.Distro.all(self.session, page='b')
        distro2 = model.Distro.all(self.session)
        self.assertEqual(distro, distro2)
Exemple #36
0
    def test_distro_search_pattern(self):
        """
        Assert that `Distro.search` returns correct distribution,
        when pattern is used.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*")
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
Exemple #37
0
    def test_distro_search_incorrect_page(self):
        """
        Assert that pagination is automatically adjusted if incorrect value is used
        in `Distro.search`.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*", page="as")
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
Exemple #38
0
    def test_distro_search_pattern(self):
        """
        Assert that `Distro.search` returns correct distribution,
        when pattern is used.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*")
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
Exemple #39
0
    def test_distro_search_incorrect_page(self):
        """
        Assert that pagination is automatically adjusted if incorrect value is used
        in `Distro.search`.
        """
        create_distro(self.session)

        logs = models.Distro.search(self.session, "Fed*", page="as")
        self.assertEqual(len(logs), 1)
        self.assertEqual(logs[0].name, "Fedora")
 def setUp(self):
     """Set up the Flask testing environnment"""
     super(EditProjectTests, self).setUp()
     self.app = self.flask_app.test_client()
     # Make a user to login with
     session = Session()
     self.user = models.User(email='*****@*****.**', username='******')
     session.add(self.user)
     session.commit()
     create_distro(self.session)
     create_project(self.session)
Exemple #41
0
    def test_distro_search(self):
        """ Test the search function of Distro. """
        create_distro(self.session)

        distro = model.Distro.search(self.session, 'fed')
        self.assertEqual(distro, [])

        distro = model.Distro.search(self.session, 'fed*')
        self.assertNotEqual(distro, [])
        self.assertEqual(distro[0].name, 'Fedora')
        self.assertEqual(len(distro), 1)
Exemple #42
0
    def test_distro_get_or_create(self):
        """ Test the get_or_create function of Distro. """
        create_distro(self.session)

        distro = model.Distro.get_or_create(self.session, 'fedora')
        self.assertEqual(distro.name, 'Fedora')
        self.assertEqual(2, model.Distro.all(self.session, count=True))

        distro = model.Distro.get_or_create(self.session, 'CentOS')
        self.assertEqual(distro.name, 'CentOS')
        self.assertEqual(3, model.Distro.all(self.session, count=True))
Exemple #43
0
    def test_distro_get_or_create(self):
        """ Test the get_or_create function of Distro. """
        create_distro(self.session)

        distro = model.Distro.get_or_create(self.session, 'fedora')
        self.assertEqual(distro.name, 'Fedora')
        self.assertEqual(2, model.Distro.all(self.session, count=True))

        distro = model.Distro.get_or_create(self.session, 'CentOS')
        self.assertEqual(distro.name, 'CentOS')
        self.assertEqual(3, model.Distro.all(self.session, count=True))
Exemple #44
0
    def test_distro_search(self):
        """ Test the search function of Distro. """
        create_distro(self.session)

        distro = model.Distro.search(self.session, 'fed')
        self.assertEqual(distro, [])

        distro = model.Distro.search(self.session, 'fed*')
        self.assertNotEqual(distro, [])
        self.assertEqual(distro[0].name, 'Fedora')
        self.assertEqual(len(distro), 1)
Exemple #45
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)
Exemple #46
0
    def test_api_get_project_distro(self):
        """ Test the api_get_project_distro function of the API. """
        create_distro(self.session)
        output = self.app.get('/api/project/Fedora/geany')
        self.assertEqual(output.status_code, 404)
        data = _read_json(output)

        exp = {
            "error": "No package \"geany\" found in distro \"Fedora\"",
            "output": "notok"
        }
        self.assertEqual(data, exp)

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

        output = self.app.get('/api/project/Fedora/gnome-terminal/')
        self.assertEqual(output.status_code, 404)
        data = _read_json(output)

        exp = {
            "error": "No package \"gnome-terminal\" found in distro "
                     "\"Fedora\"",
            "output": "notok"
        }
        self.assertEqual(data, exp)

        output = self.app.get('/api/project/Fedora/geany/')
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        del(data['created_on'])
        del(data['updated_on'])

        exp = {
            "id": 1,
            "backend": "custom",
            "homepage": "http://www.geany.org/",
            "name": "geany",
            "regex": 'DEFAULT',
            "version": None,
            "version_url": 'http://www.geany.org/Download/Releases',
            "versions": [],
            "packages": [
                {
                  "distro": "Fedora",
                  "package_name": "geany"
                }
            ],
        }

        self.assertEqual(data, exp)
Exemple #47
0
    def test_edit_dry_run(self):
        """ Test the edit_project function dry_run parameter. """
        create_distro(self.session)
        create_project(self.session)

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

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

        project_objs = models.Project.all(self.session)
        self.assertEqual(len(project_objs), 3)
        self.assertEqual(project_objs[0].name, "geany")
        self.assertEqual(project_objs[0].homepage, "https://www.geany.org")
        self.assertEqual(project_objs[0].backend, "PyPI")
        self.assertEqual(project_objs[0].pre_release_filter, "a;v")
        self.assertEqual(project_objs[0].version_filter, "foo")
        self.assertTrue(project_objs[0].releases_only)
        self.assertTrue(project_objs[0].archived)

        # This should be still a running transaction
        self.session.rollback()
        self.assertEqual(project_objs[0].backend, "custom")
        self.assertEqual(project_objs[0].pre_release_filter, None)
        self.assertEqual(project_objs[0].version_filter, None)
        self.assertFalse(project_objs[0].releases_only)
        self.assertFalse(project_objs[0].archived)
Exemple #48
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": "https://www.geany.org/",
            "ecosystem": "https://www.geany.org/",
            "name": "geany",
            "regex": "DEFAULT",
            "version": None,
            "version_url": "https://www.geany.org/Download/Releases",
            "versions": [],
            "packages": [{
                "distro": "Fedora",
                "package_name": "geany"
            }],
        }

        self.assertEqual(data, exp)
Exemple #49
0
    def test_distros(self):
        """ Test the distros function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"Here is the list of all the distributions"
        self.assertTrue(expected in output.data)

        output = self.app.get('/distros/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
Exemple #50
0
    def test_api_get_version_exists(self):
        """ Test the api_get_version when returning a version. """
        create_distro(self.session)
        create_project(self.session)

        data = {"id": 1, "test": True}
        output = self.app.post("/api/version/get", data=data)

        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        exp = {"versions": ["1.36"]}

        self.assertEqual(data, exp)
    def test_distros(self):
        """ Test the distros function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"Here is the list of all the distributions"
        self.assertTrue(expected in output.data)

        output = self.app.get('/distros/?page=ab')
        self.assertEqual(output.status_code, 200)
        self.assertTrue(expected in output.data)
Exemple #52
0
    def test_distro_by_name(self):
        """ Test the by_name function of Distro. """
        create_distro(self.session)

        distro = models.Distro.by_name(self.session, "fedora")
        self.assertEqual(distro.name, "Fedora")

        distro = models.Distro.get(self.session, "fedora")
        self.assertEqual(distro.name, "Fedora")

        distro = models.Distro.by_name(self.session, "DEBIAN")
        self.assertEqual(distro.name, "Debian")

        distro = models.Distro.get(self.session, "DEBIAN")
        self.assertEqual(distro.name, "Debian")
Exemple #53
0
    def setUp(self):
        super(MapProjectTests, self).setUp()
        create_distro(self.session)
        create_project(self.session)
        self.client = self.flask_app.test_client()
        self.user = models.User(
            email='*****@*****.**',
            username='******',
        )
        user_social_auth = social_models.UserSocialAuth(user_id=self.user.id,
                                                        user=self.user)

        self.session.add(self.user)
        self.session.add(user_social_auth)
        self.session.commit()
Exemple #54
0
    def test_distro_by_name(self):
        """ Test the by_name function of Distro. """
        create_distro(self.session)

        distro = model.Distro.by_name(self.session, 'fedora')
        self.assertEqual(distro.name, 'Fedora')

        distro = model.Distro.get(self.session, 'fedora')
        self.assertEqual(distro.name, 'Fedora')

        distro = model.Distro.by_name(self.session, 'DEBIAN')
        self.assertEqual(distro.name, 'Debian')

        distro = model.Distro.get(self.session, 'DEBIAN')
        self.assertEqual(distro.name, 'Debian')
Exemple #55
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": "https://www.geany.org/",
            "ecosystem": "https://www.geany.org/",
            "name": "geany",
            "regex": "DEFAULT",
            "version": None,
            "version_url": "https://www.geany.org/Download/Releases",
            "versions": [],
            "packages": [{"distro": "Fedora", "package_name": "geany"}],
        }

        self.assertEqual(data, exp)
Exemple #56
0
    def test_api_packages_wiki_list(self):
        """ Test the api_packages_wiki_list function of the API. """
        create_distro(self.session)
        output = self.app.get('/api/packages/wiki/')
        self.assertEqual(output.status_code, 200)

        self.assertEqual(output.data, b'')

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

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

        exp = b"* geany DEFAULT http://www.geany.org/Download/Releases\n"\
            b"* subsurface DEFAULT http://subsurface.hohndel.org/downloads/"
        self.assertEqual(output.data, exp)
Exemple #57
0
    def test_api_get_project_by_ecosystem(self):
        """ Test the api_get_project_ecosystem function of the API. """
        create_distro(self.session)
        output = self.app.get("/api/by_ecosystem/pypi/pypi_and_npm")
        self.assertEqual(output.status_code, 404)
        data = _read_json(output)

        exp = {
            "error": 'No project "pypi_and_npm" found in ecosystem "pypi"',
            "output": "notok",
        }
        self.assertEqual(data, exp)

        create_ecosystem_projects(self.session)

        output = self.app.get("/api/by_ecosystem/pypi/not-a-project")
        self.assertEqual(output.status_code, 404)
        data = _read_json(output)

        exp = {
            "error": 'No project "not-a-project" found in ecosystem "pypi"',
            "output": "notok",
        }
        self.assertEqual(data, exp)

        output = self.app.get("/api/by_ecosystem/pypi/pypi_and_npm")
        self.assertEqual(output.status_code, 200)
        data = _read_json(output)

        del data["created_on"]
        del data["updated_on"]

        exp = {
            "id": 1,
            "backend": "PyPI",
            "homepage": "https://example.com/not-a-real-pypi-project",
            "ecosystem": "pypi",
            "name": "pypi_and_npm",
            "regex": None,
            "version": None,
            "version_url": None,
            "versions": [],
            "packages": [],
        }

        self.assertEqual(data, exp)
Exemple #58
0
    def test_project(self):
        """ Test the project function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"""
            <p><a property="doap:homepage" href="http://www.geany.org/"
               target="_blank" rel="noopener noreferrer">http://www.geany.org/
             </a><p>"""

        self.assertTrue(expected in output.data)

        output = self.app.get('/project/10/')
        self.assertEqual(output.status_code, 404)
Exemple #59
0
    def test_distro_projects_search(self):
        """ Test the distro_projects_search function. """
        create_distro(self.session)
        create_project(self.session)

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

        expected = b"""
    <blockquote>
        Oups this is embarrassing, it seems that no projects are being
        monitored currently.
        <p><a href="/project/new?name=gua">Click Here</a> to add this project instead. </p>
    </blockquote>"""
        self.assertTrue(expected in output.data)
        self.assertTrue(
            b'form action="/distro/Fedora/search/" role="form">'
            in output.data)
        self.assertTrue(
            b'<h1>Search projects in Fedora</h1>' in output.data)
Exemple #60
0
    def test_map_project_session_error(self):
        """ Test SQLAlchemy session error """
        create_project(self.session)
        create_distro(self.session)

        project_obj = models.Project.get(self.session, 1)
        self.assertEqual(project_obj.name, "geany")
        self.assertEqual(len(project_obj.packages), 0)

        with mock.patch.object(
            self.session, "flush", mock.Mock(side_effect=[SQLAlchemyError(), None])
        ):
            # With Distro object
            self.assertRaises(
                exceptions.AnityaException,
                utilities.map_project,
                self.session,
                project=project_obj,
                package_name="geany",
                distribution="Fedora",
                user_id="*****@*****.**",
                old_package_name=None,
            )