def test_getset_host_credentials_update_transifexrc( self, m_parser, m_input): p = Project(init=False) dummy_token = 'salala' p.txrc = m_parser p.save = Mock() p.txrc_file = '/tmp' p.validate_credentials = Mock(return_value=True) p.txrc.get.side_effect = [ 'foo', 'bar' ] # transifexrc does not get updated if credentials are the same username, password = p.getset_host_credentials( 'test', username='******', password='******' ) self.assertEqual(username, 'foo') self.assertEqual(password, 'bar') self.assertEqual(p.txrc.set.call_count, 0) self.assertEqual(m_input.call_count, 0) self.assertEqual(p.save.call_count, 0) # transifexrc is not updated if confirm is no p.txrc.get.side_effect = [ 'foo', 'bar' ] m_input.return_value = False username, password = p.getset_host_credentials('test', token=dummy_token) self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) self.assertEqual(p.txrc.set.call_count, 0) self.assertEqual(m_input.call_count, 1) self.assertEqual(p.save.call_count, 0) # transifexrc is not updated if confirm is yes p.txrc.get.side_effect = [ 'foo', 'bar' ] m_input.return_value = True m_input.reset_mock() username, password = p.getset_host_credentials('test', token=dummy_token) self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) self.assertEqual(p.txrc.set.call_count, 2) self.assertEqual(m_input.call_count, 1) p.save.assert_called()
def __init__(self, path_to_tx): p = Project(path_to_tx) self.host = p.config.get('main', 'host') username, token_or_password = p.getset_host_credentials( self.host, only_token=True) self.api = Api(username=username, password=token_or_password, host=self.host, path_to_tx=p.txrc_file)
def test_getset_host_credentials(self, m_parser): p = Project(init=False) # let suppose a token has been set at the config dummy_token = 'salala' p.txrc = m_parser p.txrc.add_section = Mock() p.txrc.set = Mock() p.txrc.get = Mock() p.txrc.get.side_effect = ['api', dummy_token, None, None] p.txrc_file = '/tmp' username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) # let's try to get credentials for someone without # a token p.txrc.get.side_effect = ['username', 'passw0rdz'] username, password = p.getset_host_credentials('test') self.assertEqual(username, 'username') self.assertEqual(password, 'passw0rdz')
def test_getset_host_credentials_env_variable(self, m_parser, m_input): p = Project(init=False) p.txrc = m_parser p.save = Mock() p.txrc_file = '/tmp' p.txrc.has_section.side_effect = [False] username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, 'environment_value') self.assertEqual(p.txrc.set.call_count, 2) # no input will be asked, password will be used by environment variable self.assertEqual(m_input.call_count, 0) p.save.assert_called()
def test_getset_host_credentials(self, m_parser): p = Project(init=False) # let suppose a token has been set at the config dummy_token = 'salala' p.txrc = m_parser p.txrc.add_section = Mock() p.txrc.set = Mock() p.txrc.get = Mock() p.txrc.get.side_effect = ['api', dummy_token, None, None] p.txrc_file = '/tmp' username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) # let's try to get credentials for someone without # a token p.txrc.get.side_effect = [ 'username', 'passw0rdz' ] username, password = p.getset_host_credentials('test') self.assertEqual(username, 'username') self.assertEqual(password, 'passw0rdz')
def test_getset_host_credentials_env_variable_first_time( self, m_parser, m_input): p = Project(init=False) p.txrc = m_parser p.save = Mock() p.txrc_file = '/tmp' p.txrc.has_section.side_effect = [False] username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, 'environment_value') # ensure that we have set host in the txrc_file, even though TX_TOKEN # exists self.assertEqual(p.txrc.set.call_count, 2) p.save.assert_called()
def test_getset_host_credentials_env_variable( self, m_parser, m_input): p = Project(init=False) p.txrc = m_parser p.save = Mock() p.txrc_file = '/tmp' p.txrc.has_section.side_effect = [False] username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, 'environment_value') self.assertEqual(p.txrc.set.call_count, 2) # no input will be asked, password will be used by environment variable self.assertEqual(m_input.call_count, 0) p.save.assert_called()
def test_getset_host_credentials_both_token_and_env( self, m_logger, m_parser): p = Project(init=False) p.txrc = m_parser p.save = Mock() p.txrc_file = '/tmp' p.txrc.has_section.side_effect = [False] username, password = p.getset_host_credentials('test', token='demo') self.assertEqual(username, 'api') self.assertEqual(password, 'environment_value') # ensure that we did not make additional calls to set the token in the # txrc file self.assertEqual(p.txrc.set.call_count, 2) p.save.assert_called() self.assertEqual(m_logger.warning.call_count, 1)
def test_getset_host_credentials_no_transifexrc(self, m_parser, m_input): p = Project(init=False) # let suppose a token has been set at the config dummy_token = 'salala' p.txrc = m_parser p.save = Mock() p.validate_credentials = Mock(return_value=True) p.txrc_file = '/tmp' p.txrc.get.side_effect = configparser.NoSectionError('test') m_input.return_value = dummy_token username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) self.assertEqual(p.txrc.set.call_count, 4) self.assertEqual(m_input.call_count, 1) p.save.assert_called()
def test_getset_host_credentials_no_transifexrc( self, m_parser, m_input): p = Project(init=False) # let suppose a token has been set at the config dummy_token = 'salala' p.txrc = m_parser p.save = Mock() p.validate_credentials = Mock(return_value=True) p.txrc_file = '/tmp' p.txrc.get.side_effect = configparser.NoSectionError('test') m_input.return_value = dummy_token username, password = p.getset_host_credentials('test') self.assertEqual(username, 'api') self.assertEqual(password, dummy_token) self.assertEqual(p.txrc.set.call_count, 2) self.assertEqual(m_input.call_count, 1) p.save.assert_called()
import requests from txclib.parsers import status_parser from txclib.project import Project from txclib.utils import find_dot_tx project_slug = 'documentation-5' organization_slug = 'opendatasoft' prj = Project(find_dot_tx()) api_auth = prj.getset_host_credentials('https://api.transifex.com') offset = 0 remote_resources = [] while True: r = requests.get('https://api.transifex.com/organizations/{}/projects/{}/resources/?offset={}'.format(organization_slug, project_slug, offset), auth=api_auth) results = r.json() if len(results) == 0: break remote_resources.extend(results) offset += 100 remote_resources_set = set([res['slug'] for res in remote_resources]) local_resources_set = set([res.split('.')[1] for res in prj.get_chosen_resources([])]) print "remote resources count: {}".format(len(remote_resources_set)) print "local resources count: {}".format(len(local_resources_set)) outdated_resources = remote_resources_set - local_resources_set
import requests from txclib.parsers import status_parser from txclib.project import Project from txclib.utils import find_dot_tx project_slug = 'documentation-5' organization_slug = 'opendatasoft' prj = Project(find_dot_tx()) api_auth = prj.getset_host_credentials('https://api.transifex.com') offset = 0 remote_resources = [] while True: r = requests.get( 'https://api.transifex.com/organizations/{}/projects/{}/resources/?offset={}' .format(organization_slug, project_slug, offset), auth=api_auth) results = r.json() if len(results) == 0: break remote_resources.extend(results) offset += 100 remote_resources_set = set([res['slug'] for res in remote_resources]) local_resources_set = set( [res.split('.')[1] for res in prj.get_chosen_resources([])]) print "remote resources count: {}".format(len(remote_resources_set))