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()
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()
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
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
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
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
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
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")
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()
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