def test_failed_create_gist(self, mock_token, mock_post, mock_get): mock_token.return_value = GETGIST_TOKEN mock_post.return_value = request_mock('gist/id_gist_1', case=False, status_code=404) mock_get.return_value = request_mock('user') yeah = GitHubTools(GETGIST_USER, '.gist.sample') self.assertFalse(yeah.create('42', public=False))
def test_create_gist(self, mock_token, mock_post, mock_get): mock_token.return_value = GETGIST_TOKEN mock_post.return_value = request_mock('gist/id_gist_1', status_code=201) mock_get.return_value = request_mock('user') yeah = GitHubTools(GETGIST_USER, '.gist.sample') self.assertTrue(yeah.create('42', public=False))
def __init__(self, **kwargs): """ Instantiate GitHubTools & LocalTools, and set the variables required to get, create or update gists (filename and public/private flag) :param user: (str) GitHub username :param filename: (str) name of file from any Gist or local file system :param allow_none: (bool) flag to use GitHubTools.select_gist differently with `getgist` and `putgist` commands (if no gist/filename is found it raises an error for `getgist`, or sets `putgist` to create a new gist). :param create_private: (bool) create a new gist as private :param assume_yes: (bool) assume yes (or first option) for all prompts :return: (None) """ # get arguments user = kwargs.get('user') allow_none = kwargs.get('allow_none', False) assume_yes = kwargs.get('assume_yes', False) filename = kwargs.get('filename') self.public = not kwargs.get('create_private', False) # instantiate local tools & check for user self.local = LocalTools(filename, assume_yes) if not user: message = """ No default user set yet. To avoid this prompt set an environmental variable called `GETGIST_USER`.' """ self.local.oops(message) # instantiate filename, guthub tools and fetch gist self.github = GitHubTools(user, filename, assume_yes) self.gist = self.github.select_gist(allow_none)
def test_update_gist(self, mock_token, mock_patch, mock_get): mock_token.return_value = GETGIST_TOKEN mock_patch.return_value = request_mock('gist/id_gist_1') mock_get.return_value = request_mock('user') gist = parse_mock(id=1, user=GETGIST_USER, filename='.gist', url='') yeah = GitHubTools(GETGIST_USER, '.gist') self.assertTrue(yeah.update(gist, '42'))
def test_create_gist_with_no_file(mocker, response): get = mocker.patch("getgist.request.GetGistRequests.get") token = mocker.patch("getgist.github.GitHubTools._get_token") get.return_value = response("user") token.return_value = GETGIST_TOKEN github = GitHubTools(GETGIST_USER, ".gist") assert not github.create(False)
def __init__(self, **kwargs): """ Instantiate GitHubTools & LocalTools (if needed), and set the variables required to get, create or update gists (filename and public/private flag) :param user: (str) GitHub username :param filename: (str) name of file from any Gist or local file system :param allow_none: (bool) flag to use GitHubTools.select_gist differently with `getgist` and `putgist` commands (if no gist/filename is found it raises an error for `getgist`, or sets `putgist` to create a new gist). :param create_private: (bool) create a new gist as private :param assume_yes: (bool) assume yes (or first option) for all prompts :return: (None) """ user = kwargs.get("user") allow_none = kwargs.get("allow_none", False) assume_yes = kwargs.get("assume_yes", False) filename = kwargs.get("filename") self.public = not kwargs.get("create_private", False) if not user: message = """ No default user set yet. To avoid this prompt set an environmental variable called `GETGIST_USER`.' """ GetGistCommons().oops(message) exit(1) self.github = GitHubTools(user, filename, assume_yes) self.local = LocalTools(filename, assume_yes) if filename else None self.gist = self.github.select_gist(allow_none) if filename else None
def test_authenticated_get_gists(self, mock_token, mock_get): mock_token.return_value = GETGIST_TOKEN mock_get.side_effect = [request_mock('user'), request_mock('gists')] yeah = GitHubTools(GETGIST_USER, '.gist') gists = list(yeah.get_gists()) with self.subTest(): self.assertIn(self.gist3, gists) self.assertIn(self.gist4, gists)
def test_update_gist_with_no_file(mocker, response, parse): get = mocker.patch("getgist.request.GetGistRequests.get") token = mocker.patch("getgist.github.GitHubTools._get_token") get.return_value = response("user") token.return_value = GETGIST_TOKEN gist = parse(id=1, user=GETGIST_USER, filename=".gist", url="") github = GitHubTools(GETGIST_USER, ".gist") assert not github.update(gist, False)
def test_failed_create_gist(mocker, response): get = mocker.patch("getgist.request.GetGistRequests.get") post = mocker.patch("getgist.request.GetGistRequests.post") token = mocker.patch("getgist.github.GitHubTools._get_token") get.return_value = response("user") post.return_value = response("gist/id_gist_1", case=False, status_code=404) token.return_value = GETGIST_TOKEN github = GitHubTools(GETGIST_USER, ".gist.sample") assert not github.create("42", public=False)
def test_authenticated_get_gists(mocker, response, gists): get = mocker.patch("getgist.request.GetGistRequests.get") token = mocker.patch("getgist.github.GitHubTools._get_token") token.return_value = GETGIST_TOKEN get.side_effect = (response("user"), response("gists")) github = GitHubTools(GETGIST_USER, ".gist") gists = tuple(github.get_gists()) assert gists[2] in gists assert gists[3] in gists
def test_failed_update_gist(mocker, response, parse): get = mocker.patch("getgist.request.GetGistRequests.get") token = mocker.patch("getgist.github.GitHubTools._get_token") patch = mocker.patch("getgist.request.GetGistRequests.patch") get.return_value = response("user") token.return_value = GETGIST_TOKEN patch.return_value = response("gist/id_gist_1", case=False, status_code=404) gist = parse(id=1, user=GETGIST_USER, filename=".gist", url="") github = GitHubTools(GETGIST_USER, ".gist") assert not github.update(gist, "42")
def test_invalid_token(self, mock_token, mock_get): mock_token.return_value = GETGIST_TOKEN mock_get.return_value = request_mock('user', case=False) oops = GitHubTools(GETGIST_USER, '.gist') with self.subTest(): self.assertNotIn('Authorization', oops.headers) self.assertFalse(oops.is_authenticated)
def test_no_token_results_in_no_authentication(mocker): token = mocker.patch("getgist.github.GitHubTools._get_token") token.return_value = False github = GitHubTools(GETGIST_USER, ".gist") assert "Authorization" not in github.headers assert not github.is_authenticated
def test_valid_token(self, mock_token, mock_get): mock_token.return_value = GETGIST_TOKEN mock_get.return_value = request_mock('user') yeah = GitHubTools(GETGIST_USER, '.gist') with self.subTest(): self.assertIn('Authorization', yeah.headers) self.assertTrue(yeah.is_authenticated)
class GetGist(object): """ Main GetGist objects linking inputs from the CLI to the helpers from GitHubTools (to deal with the API) and LocalTools (to deal with the local file system. """ def __init__(self, **kwargs): """ Instantiate GitHubTools & LocalTools (if needed), and set the variables required to get, create or update gists (filename and public/private flag) :param user: (str) GitHub username :param filename: (str) name of file from any Gist or local file system :param allow_none: (bool) flag to use GitHubTools.select_gist differently with `getgist` and `putgist` commands (if no gist/filename is found it raises an error for `getgist`, or sets `putgist` to create a new gist). :param create_private: (bool) create a new gist as private :param assume_yes: (bool) assume yes (or first option) for all prompts :return: (None) """ user = kwargs.get("user") allow_none = kwargs.get("allow_none", False) assume_yes = kwargs.get("assume_yes", False) filename = kwargs.get("filename") self.public = not kwargs.get("create_private", False) if not user: message = """ No default user set yet. To avoid this prompt set an environmental variable called `GETGIST_USER`.' """ GetGistCommons().oops(message) exit(1) self.github = GitHubTools(user, filename, assume_yes) self.local = LocalTools(filename, assume_yes) if filename else None self.gist = self.github.select_gist(allow_none) if filename else None def get(self): """Reads the remote file from Gist and save it locally""" if self.gist: content = self.github.read_gist_file(self.gist) self.local.save(content) def put(self): """ Reads local file & update the remote gist (or create a new one)""" content = self.local.read() if self.gist: self.github.update(self.gist, content) else: self.github.create(content, public=self.public) def ls(self): """ Lists all gists from a github user """ self.github.list_gists()
def test_valid_token(mocker, response): get = mocker.patch("getgist.request.GetGistRequests.get") token = mocker.patch("getgist.github.GitHubTools._get_token") get.return_value = response("user") token.return_value = GETGIST_TOKEN github = GitHubTools(GETGIST_USER, ".gist") assert "Authorization" in github.headers assert github.is_authenticated
class GetGist(object): """ Main GetGist objects linking inputs from the CLI to the helpers from GitHubTools (to deal with the API) and LocalTools (to deal with the local file system. """ def __init__(self, **kwargs): """ Instantiate GitHubTools & LocalTools, and set the variables required to get, create or update gists (filename and public/private flag) :param user: (str) GitHub username :param filename: (str) name of file from any Gist or local file system :param allow_none: (bool) flag to use GitHubTools.select_gist differently with `getgist` and `putgist` commands (if no gist/filename is found it raises an error for `getgist`, or sets `putgist` to create a new gist). :param create_private: (bool) create a new gist as private :param assume_yes: (bool) assume yes (or first option) for all prompts :return: (None) """ # get arguments user = kwargs.get('user') allow_none = kwargs.get('allow_none', False) assume_yes = kwargs.get('assume_yes', False) filename = kwargs.get('filename') self.public = not kwargs.get('create_private', False) # instantiate local tools & check for user self.local = LocalTools(filename, assume_yes) if not user: message = """ No default user set yet. To avoid this prompt set an environmental variable called `GETGIST_USER`.' """ self.local.oops(message) # instantiate filename, guthub tools and fetch gist self.github = GitHubTools(user, filename, assume_yes) self.gist = self.github.select_gist(allow_none) def get(self): """Reads the remote file from Gist and save it locally""" if self.gist: content = self.github.read_gist_file(self.gist) self.local.save(content) def put(self): """ Reads local file & update the remote gist (or create a new one)""" content = self.local.read(self.github.filename) if self.gist: self.github.update(self.gist, content) else: self.github.create(content, public=self.public)
def setUp(self, mock_oauth): mock_oauth.return_value = None self.github = GitHubTools(GETGIST_USER, '.gist') self.gist1 = parse_mock(id=1, user=GETGIST_USER, filename='.gist', url='https://gist.github.com/id_gist_1') self.gist2 = parse_mock(id=2, user=GETGIST_USER, filename='.gist', description='Description of Gist 2', url='https://gist.github.com/id_gist_2') self.gist3 = parse_mock(id=3, user=GETGIST_USER, filename=['.gist.sample', '.gist.dev'], url='https://gist.github.com/id_gist_3') self.gist4 = parse_mock(id=4, user=GETGIST_USER, filename='.gist.prod', url='https://gist.github.com/id_gist_4')
def test_get_token(mocker): getenv = mocker.patch("getgist.github.os.getenv") GitHubTools._get_token() getenv.assert_called_once_with("GETGIST_TOKEN")
def test_update_gist_without_authorization(self, mock_token): mock_token.return_value = None gist = parse_mock(id=1, user=GETGIST_USER, filename='.gist', url='') oops = GitHubTools(GETGIST_USER, '.gist.sample') self.assertFalse(oops.update(gist, '42'))
def test_create_gist_without_authorization(mocker): token = mocker.patch("getgist.github.GitHubTools._get_token") token.return_value = None github = GitHubTools(GETGIST_USER, ".gist.sample") assert not github.create("42")
def test_create_gist_without_authorization(self, mock_token): mock_token.return_value = None oops = GitHubTools(GETGIST_USER, '.gist.sample') self.assertFalse(oops.create('42'))
def test_update_gist_without_authorization(mocker, parse): token = mocker.patch("getgist.github.GitHubTools._get_token") token.return_value = None gist = parse(id=1, user=GETGIST_USER, filename=".gist", url="") github = GitHubTools(GETGIST_USER, ".gist.sample") assert not github.update(gist, "42")
def test_create_gist_with_no_file(self, mock_token, mock_get): mock_token.return_value = GETGIST_TOKEN mock_get.return_value = request_mock('user') gist = parse_mock(id=1, user=GETGIST_USER, filename='.gist', url='') yeah = GitHubTools(GETGIST_USER, '.gist') self.assertFalse(yeah.update(gist, False))
def test_no_token_results_in_no_authentication(self, mock_token): mock_token.return_value = False oops = GitHubTools(GETGIST_USER, '.gist') with self.subTest(): self.assertNotIn('Authorization', oops.headers) self.assertFalse(oops.is_authenticated)
def authenticated_github(mocker): oauth = mocker.patch("getgist.github.GitHubTools.add_oauth_header") oauth.return_value = None return GitHubTools("janedoe", ".gist")
def test_create_gist_with_no_file(self, mock_token, mock_get): mock_token.return_value = GETGIST_TOKEN mock_get.return_value = request_mock('user') yeah = GitHubTools(GETGIST_USER, '.gist') self.assertFalse(yeah.create(False))