Beispiel #1
0
class GithubTests(unittest.TestCase):
    def setUp(self):
        self.token = os.environ.get("GITHUB_TOKEN")
        self.user = os.environ.get("GITHUB_USER")
        test_name = self.id() or "all"

        persistent_data_file = os.path.join(
            PERSISTENT_DATA_PREFIX, f"test_github_data_{test_name}.yaml")
        PersistentObjectStorage().storage_file = persistent_data_file

        if PersistentObjectStorage().is_write_mode and (not self.user
                                                        or not self.token):
            raise EnvironmentError(
                "please set GITHUB_TOKEN GITHUB_USER env variables")

        self.service = GithubService(token=self.token)

        self.ogr_project = self.service.get_project(namespace="packit-service",
                                                    repo="ogr")

        self.ogr_fork = self.service.get_project(namespace="packit-service",
                                                 repo="ogr",
                                                 is_fork=True)

        self.hello_world_project = self.service.get_project(
            namespace="packit-service", repo="hello-world")

        self.not_forked_project = self.service.get_project(
            namespace="fedora-modularity", repo="fed-to-brew")

    def tearDown(self):
        PersistentObjectStorage().dump()
Beispiel #2
0
class GithubTests(unittest.TestCase):
    def setUp(self):
        self.token = os.environ.get("GITHUB_TOKEN")
        test_name = self.id() or "all"

        persistent_data_file = os.path.join(
            PERSISTENT_DATA_PREFIX, f"test_github_data_{test_name}.yaml")
        PersistentObjectStorage().mode = StorageMode.default
        PersistentObjectStorage().storage_file = persistent_data_file

        if PersistentObjectStorage().mode == StorageMode.write and (
                not self.token):
            raise EnvironmentError("please set GITHUB_TOKEN env variables")

        self.service = GithubService(token=self.token)
        self._ogr_project = None
        self._ogr_fork = None
        self._hello_world_project = None
        self._not_forked_project = None

    @property
    def ogr_project(self):
        if not self._ogr_project:
            self._ogr_project = self.service.get_project(
                namespace="packit-service", repo="ogr")
        return self._ogr_project

    @property
    def ogr_fork(self):
        if not self._ogr_fork:
            self._ogr_fork = self.service.get_project(
                namespace="packit-service", repo="ogr", is_fork=True)
        return self._ogr_fork

    @property
    def hello_world_project(self):
        if not self._hello_world_project:
            self._hello_world_project = self.service.get_project(
                namespace="packit-service", repo="hello-world")
        return self._hello_world_project

    @property
    def not_forked_project(self):
        if not self._not_forked_project:
            self._not_forked_project = self.service.get_project(
                namespace="fedora-modularity", repo="fed-to-brew")
        return self._not_forked_project

    def tearDown(self):
        PersistentObjectStorage().dump()
Beispiel #3
0
class ReadOnly(unittest.TestCase):
    def setUp(self):
        self.token = os.environ.get("GITHUB_TOKEN")
        test_name = self.id() or "all"
        persistent_data_file = os.path.join(
            PERSISTENT_DATA_PREFIX, f"test_github_data_{test_name}.yaml")
        PersistentObjectStorage().storage_file = persistent_data_file
        if PersistentObjectStorage(
        ).mode == StorageMode.write and not self.token:
            raise EnvironmentError("please set GITHUB_TOKEN env variables")

        self.service = GithubService(token=self.token, read_only=True)
        self.ogr_project = self.service.get_project(namespace="packit-service",
                                                    repo="ogr")

    def tearDown(self):
        PersistentObjectStorage().dump()

    def test_pr_comments(self):
        pr_comments = self.ogr_project.get_pr_comments(9)
        assert pr_comments
        assert len(pr_comments) == 2

        assert pr_comments[0].body.endswith("fixed")
        assert pr_comments[1].body.startswith("LGTM")

    def test_create_pr(self):
        pr = self.ogr_project.pr_create("title", "text", "master",
                                        "lbarcziova:testing_branch")
        assert pr.title == "title"

    def test_create_fork(self):
        fork = self.ogr_project.fork_create()
        assert not fork.is_fork
class ReadOnly(RequreTestCase):
    def setUp(self):
        super().setUp()
        self.token = os.environ.get("GITHUB_TOKEN")
        if PersistentObjectStorage().mode == StorageMode.write and not self.token:
            raise EnvironmentError(
                "You are in Requre write mode, please set GITHUB_TOKEN env variables"
            )

        self.service = GithubService(token=self.token, read_only=True)
        self.ogr_project = self.service.get_project(
            namespace="packit-service", repo="ogr"
        )

    def test_pr_comments(self):
        pr_comments = self.ogr_project.get_pr_comments(9)
        assert pr_comments
        assert len(pr_comments) == 2

        assert pr_comments[0].body.endswith("fixed")
        assert pr_comments[1].body.startswith("LGTM")

    def test_create_pr(self):
        pr = self.ogr_project.pr_create(
            "title", "text", "master", "lbarcziova:testing_branch"
        )
        assert pr.title == "title"

    def test_create_fork(self):
        fork = self.ogr_project.fork_create()
        assert not fork.is_fork
Beispiel #5
0
 def test_get_project_having_key_as_path(self):
     service = GithubService(
         github_app_id=self.github_app_id,
         github_app_private_key_path=self.github_app_private_key_path,
     )
     project = service.get_project(namespace="packit", repo="ogr")
     assert project
     assert project.github_repo
Beispiel #6
0
class GithubTests(RequreTestCase):
    def setUp(self):
        super().setUp()
        self.token = os.environ.get("GITHUB_TOKEN")
        if PersistentObjectStorage().mode == StorageMode.write and (not self.token):
            raise EnvironmentError(
                "You are in Requre write mode, please set proper GITHUB_TOKEN env variables"
            )

        self.service = GithubService(token=self.token)
        self._ogr_project = None
        self._ogr_fork = None
        self._hello_world_project = None
        self._not_forked_project = None

    @property
    def ogr_project(self):
        if not self._ogr_project:
            self._ogr_project = self.service.get_project(namespace="packit", repo="ogr")
        return self._ogr_project

    @property
    def ogr_fork(self):
        if not self._ogr_fork:
            self._ogr_fork = self.service.get_project(
                namespace="packit", repo="ogr", is_fork=True
            )
        return self._ogr_fork

    @property
    def hello_world_project(self):
        if not self._hello_world_project:
            self._hello_world_project = self.service.get_project(
                namespace="packit", repo="hello-world"
            )
        return self._hello_world_project

    @property
    def not_forked_project(self):
        if not self._not_forked_project:
            self._not_forked_project = self.service.get_project(
                namespace="fedora-modularity", repo="fed-to-brew"
            )
        return self._not_forked_project
Beispiel #7
0
def test_bad_credentials(max_retries):

    flexmock(HTTPSConnectionPool).should_call("urlopen").times(max_retries + 1)

    flexmock(Github).should_call("get_repo").and_raise(
        BadCredentialsException,
        401,
        {
            "message": "Bad credentials",
            "documentation_url": "https://docs.github.com/rest",
        },
    )

    service = GithubService(token="invalid_token", max_retries=max_retries)
    project = service.get_project(namespace="mmuzila", repo="playground")
    project.github_repo
Beispiel #8
0
class ReadOnly(unittest.TestCase):
    def setUp(self):
        self.token = os.environ.get("GITHUB_TOKEN")
        self.user = os.environ.get("GITHUB_USER")
        test_name = self.id() or "all"
        persistent_data_file = os.path.join(
            PERSISTENT_DATA_PREFIX, f"test_github_data_{test_name}.yaml")
        PersistentObjectStorage().storage_file = persistent_data_file
        if PersistentObjectStorage().is_write_mode and (not self.user
                                                        or not self.token):
            raise EnvironmentError(
                "please set GITHUB_TOKEN GITHUB_USER env variables")

        self.service = GithubService(token=self.token, read_only=True)

        self.colin_project = self.service.get_project(namespace="user-cont",
                                                      repo="colin")

    def tearDown(self):
        PersistentObjectStorage().dump()

    def test_pr_comments(self):
        pr_comments = self.colin_project.get_pr_comments(7)
        assert pr_comments
        assert len(pr_comments) == 2
        assert pr_comments[0].comment.endswith(
            "I've just integrated your thoughts.")
        assert pr_comments[1].comment.startswith("Thank you!")

    def test_create_pr(self):
        pr = self.colin_project.pr_create("title", "text", "master",
                                          "souce_branch")
        assert pr.title == "title"

    def test_create_fork(self):
        fork = self.colin_project.fork_create()
        assert not fork.is_fork
Beispiel #9
0
    def _pr_comments_test(self):
        token = os.environ.get("GITHUB_TOKEN")
        cassette = Cassette()
        if cassette.mode == StorageMode.write and (not token):
            raise EnvironmentError(
                f"You are in Requre write mode, please set proper GITHUB_TOKEN"
                f" env variables {cassette.storage_file}")
        # possible to check before reading values because in other case values are removed
        # and in write mode is does have sense at the end
        if cassette.mode == StorageMode.read:
            self.assertIn(self.id(), cassette.storage_file)
            self.assertIn("LGTM", str(cassette.storage_object))
            self.assertTrue(
                cassette.storage_object["requests.sessions"]["send"]["GET"]
                ["https://api.github.com:443/repos/packit-service/ogr"])
        service = GithubService(token=token)
        ogr_project = service.get_project(namespace="packit-service",
                                          repo="ogr")
        pr_comments = ogr_project.get_pr_comments(9)
        assert pr_comments
        assert len(pr_comments) == 2

        assert pr_comments[0].body.endswith("fixed")
        assert pr_comments[1].body.startswith("LGTM")
Beispiel #10
0
class GithubTests(unittest.TestCase):
    def setUp(self):
        self.github_app_id = os.environ.get("GITHUB_APP_ID")
        self.github_app_private_key_path = os.environ.get(
            "GITHUB_APP_PRIVATE_KEY_PATH")

        test_name = self.id() or "all"

        persistent_data_file = os.path.join(
            PERSISTENT_DATA_PREFIX, f"test_github-app_data_{test_name}.yaml")
        PersistentObjectStorage().storage_file = persistent_data_file

        if PersistentObjectStorage().mode == StorageMode.write and (
                not self.github_app_id
                or not self.github_app_private_key_path):
            raise EnvironmentError(
                "please set GITHUB_APP_ID GITHUB_APP_PRIVATE_KEY_PATH env variables"
            )

    def tearDown(self):
        PersistentObjectStorage().dump()

    def test_private_key(self):
        service = GithubService(github_app_id="123",
                                github_app_private_key=TESTING_PRIVATE_KEY)
        assert service.github_app_private_key == TESTING_PRIVATE_KEY

    def test_private_key_path(self):
        with tempfile.NamedTemporaryFile() as pr_key:
            Path(pr_key.name).write_text(TESTING_PRIVATE_KEY)
            service = GithubService(github_app_id="123",
                                    github_app_private_key_path=pr_key.name)
            assert service.github_app_private_key == TESTING_PRIVATE_KEY

    def test_get_project(self):
        github_app_private_key = (
            Path(self.github_app_private_key_path).read_text()
            if self.github_app_private_key_path else TESTING_PRIVATE_KEY)

        self.service = GithubService(
            github_app_id=self.github_app_id or "123",
            github_app_private_key=github_app_private_key,
        )
        project = self.service.get_project(namespace="packit-service",
                                           repo="ogr")
        assert project
        assert project.github_repo

    def test_get_project_having_key_as_path(self):
        github_app_private_key_path = self.github_app_private_key_path
        try:
            if not self.github_app_private_key_path:
                github_app_private_key_path = tempfile.mkstemp()[1]

            self.service = GithubService(
                github_app_id=self.github_app_id or "123",
                github_app_private_key_path=github_app_private_key_path,
            )
            project = self.service.get_project(namespace="packit-service",
                                               repo="ogr")
            assert project
            assert project.github_repo
        finally:
            if not self.github_app_private_key_path:
                Path(github_app_private_key_path).unlink()
Beispiel #11
0
class GithubTests(unittest.TestCase):
    def setUp(self):
        self.github_app_id = os.environ.get("GITHUB_APP_ID")
        self.github_app_private_key_path = os.environ.get(
            "GITHUB_APP_PRIVATE_KEY_PATH")

        if not get_datafile_filename(obj=self) and (
                not self.github_app_id
                or not self.github_app_private_key_path):
            raise EnvironmentError(
                "You are in Requre write mode, please set "
                "GITHUB_APP_ID GITHUB_APP_PRIVATE_KEY_PATH env variables")

    def test_private_key(self):
        service = GithubService(github_app_id="123",
                                github_app_private_key=TESTING_PRIVATE_KEY)
        assert service.authentication.private_key == TESTING_PRIVATE_KEY

    def test_private_key_path(self):
        with tempfile.NamedTemporaryFile() as pr_key:
            Path(pr_key.name).write_text(TESTING_PRIVATE_KEY)
            service = GithubService(github_app_id="123",
                                    github_app_private_key_path=pr_key.name)
            assert service.authentication.private_key == TESTING_PRIVATE_KEY

    def test_get_project(self):
        github_app_private_key = (
            Path(self.github_app_private_key_path).read_text()
            if self.github_app_private_key_path else TESTING_PRIVATE_KEY)

        self.service = GithubService(
            github_app_id=self.github_app_id or "123",
            github_app_private_key=github_app_private_key,
        )
        project = self.service.get_project(namespace="packit", repo="ogr")
        assert project
        assert project.github_repo

    def test_get_project_having_key_as_path(self):
        github_app_private_key_path = self.github_app_private_key_path
        try:
            if not self.github_app_private_key_path:
                github_app_private_key_path = tempfile.mkstemp()[1]

            self.service = GithubService(
                github_app_id=self.github_app_id or "123",
                github_app_private_key_path=github_app_private_key_path,
            )
            project = self.service.get_project(namespace="packit", repo="ogr")
            assert project
            assert project.github_repo
        finally:
            if not self.github_app_private_key_path:
                Path(github_app_private_key_path).unlink()

    def test_github_proj_no_app_creds(self):
        service = GithubService(github_app_id="123",
                                github_app_private_key=TESTING_PRIVATE_KEY)
        project = GithubProject(repo="packit",
                                service=service,
                                namespace="packit")
        with pytest.raises(OgrException) as exc:
            assert project.github_instance
        mes = str(exc.value)
        assert "No installation ID provided for packit/packit" in mes
        assert "make sure that you provided correct credentials" in mes