def test_refresh_request_with_token_format_opaque(self): requests = FakeRequests() session = MockSession() with patch('oauth2_client.credentials_manager.requests', new=requests), \ patch('cloudfoundry_client.client.requests', new=requests): requests.Session.return_value = session requests.get.return_value = MockResponse( '%s/v2/info' % TARGET_ENDPOINT, status_code=OK, text=json.dumps( dict(api_version='2.1', authorization_endpoint=TARGET_ENDPOINT))) requests.post.return_value = MockResponse( '%s/oauth/token' % TARGET_ENDPOINT, status_code=OK, text=json.dumps( dict(access_token='access-token', refresh_token='refresh-token'))) client = CloudFoundryClient(TARGET_ENDPOINT, token_format='opaque') client.init_with_token('refresh-token') self.assertEqual('Bearer access-token', session.headers.get('Authorization')) requests.post.assert_called_with( requests.post.return_value.url, data=dict(grant_type='refresh_token', scope='', refresh_token='refresh-token', token_format='opaque'), headers=dict(Accept='application/json', Authorization='Basic Y2Y6'), proxies=dict(http='', https=''), verify=True)
def test_refresh_request_with_token_format_opaque(self): requests = FakeRequests() session = MockSession() with patch("oauth2_client.credentials_manager.requests", new=requests), patch("cloudfoundry_client.client.requests", new=requests): requests.Session.return_value = session self._mock_info_calls(requests) requests.post.return_value = MockResponse( "%s/oauth/token" % self.AUTHORIZATION_ENDPOINT, status_code=HTTPStatus.OK.value, text=json.dumps( dict(access_token="access-token", refresh_token="refresh-token")), ) client = CloudFoundryClient(self.TARGET_ENDPOINT, token_format="opaque") client.init_with_token("refresh-token") self.assertEqual("Bearer access-token", session.headers.get("Authorization")) requests.post.assert_called_with( requests.post.return_value.url, data=dict(grant_type="refresh_token", scope="", refresh_token="refresh-token", token_format="opaque"), headers=dict(Accept="application/json", Authorization="Basic Y2Y6"), proxies=dict(http="", https=""), verify=True, )
def build_client_from_configuration(previous_configuration=None): dir_conf = os.path.join(os.path.expanduser("~")) if not os.path.isdir(dir_conf): if os.path.exists(dir_conf): raise IOError("%s exists but is not a directory") os.mkdir(dir_conf) config_file = os.path.join(dir_conf, ".cf_client_python.json") if not os.path.isfile(config_file): target_endpoint = _read_value_from_user( "Please enter a target endpoint", "Url must starts with http:// or https://", lambda s: s.startswith("http://") or s.startswith("https://"), default="" if previous_configuration is None else previous_configuration.get("target_endpoint", ""), ) skip_ssl_verification = _read_value_from_user( "Skip ssl verification (true/false)", "Enter either true or false", lambda s: s == "true" or s == "false", default="false" if previous_configuration is None else json.dumps(previous_configuration.get("skip_ssl_verification", False)), ) login = _read_value_from_user("Please enter your login") password = _read_value_from_user("Please enter your password") client = CloudFoundryClient(target_endpoint, skip_verification=(skip_ssl_verification == "true")) client.init_with_user_credentials(login, password) with open(config_file, "w") as f: f.write( json.dumps( dict( target_endpoint=target_endpoint, skip_ssl_verification=(skip_ssl_verification == "true"), refresh_token=client.refresh_token, ), indent=2, ) ) return client else: try: configuration = None with open(config_file, "r") as f: configuration = json.load(f) client = CloudFoundryClient( configuration["target_endpoint"], skip_verification=configuration["skip_ssl_verification"] ) client.init_with_token(configuration["refresh_token"]) return client except Exception as ex: if type(ex) == ConnectionError: raise else: _logger.exception("Could not restore configuration. Cleaning and recreating") os.remove(config_file) return build_client_from_configuration(configuration)
def build_client_from_configuration(previous_configuration=None): dir_conf = os.path.join(os.path.expanduser('~')) if not os.path.isdir(dir_conf): if os.path.exists(dir_conf): raise IOError('%s exists but is not a directory') os.mkdir(dir_conf) config_file = os.path.join(dir_conf, '.cf_client_python.json') if not os.path.isfile(config_file): target_endpoint = _read_value_from_user( 'Please enter a target endpoint', 'Url must starts with http:// or https://', lambda s: s.startswith('http://') or s.startswith('https://'), default='' if previous_configuration is None else previous_configuration.get('target_endpoint', '')) skip_ssl_verification = _read_value_from_user( 'Skip ssl verification (true/false)', 'Enter either true or false', lambda s: s == 'true' or s == 'false', default='false' if previous_configuration is None else json.dumps( previous_configuration.get('skip_ssl_verification', False))) login = _read_value_from_user('Please enter your login') password = _read_value_from_user('Please enter your password') client = CloudFoundryClient( target_endpoint, skip_verification=(skip_ssl_verification == 'true')) client.init_with_user_credentials(login, password) with open(config_file, 'w') as f: f.write( json.dumps(dict( target_endpoint=target_endpoint, skip_ssl_verification=(skip_ssl_verification == 'true'), refresh_token=client.refresh_token), indent=2)) return client else: try: configuration = None with open(config_file, 'r') as f: configuration = json.load(f) client = CloudFoundryClient( configuration['target_endpoint'], skip_verification=configuration['skip_ssl_verification']) client.init_with_token(configuration['refresh_token']) return client except Exception as ex: if type(ex) == ConnectionError: raise else: _logger.exception( "Could not restore configuration. Cleaning and recreating") os.remove(config_file) return build_client_from_configuration(configuration)
def build_client_from_configuration( previous_configuration: dict = None) -> CloudFoundryClient: config_file = get_config_file() if not os.path.isfile(config_file): target_endpoint = _read_value_from_user( "Please enter a target endpoint", "Url must starts with http:// or https://", lambda s: s.startswith("http://") or s.startswith("https://"), default="" if previous_configuration is None else previous_configuration.get("target_endpoint", ""), ) verify = _read_value_from_user( "Verify ssl (true/false)", "Enter either true or false", lambda s: s == "true" or s == "false", default="true" if previous_configuration is None else json.dumps( previous_configuration.get("verify", True)), ) login = _read_value_from_user("Please enter your login") password = _read_value_from_user("Please enter your password") client = CloudFoundryClient(target_endpoint, verify=(verify == "true")) client.init_with_user_credentials(login, password) with open(config_file, "w") as f: f.write( json.dumps(dict(target_endpoint=target_endpoint, verify=(verify == "true"), refresh_token=client.refresh_token), indent=2)) return client else: try: configuration = None with open(config_file, "r") as f: configuration = json.load(f) client = CloudFoundryClient(configuration["target_endpoint"], verify=configuration["verify"]) client.init_with_token(configuration["refresh_token"]) return client except Exception as ex: if type(ex) == ConnectionError: raise else: _logger.exception( "Could not restore configuration. Cleaning and recreating") os.remove(config_file) return build_client_from_configuration(configuration)
def build_client_from_configuration( previous_configuration: dict = None) -> CloudFoundryClient: config_file = get_config_file() if not os.path.isfile(config_file): target_endpoint = _read_value_from_user( 'Please enter a target endpoint', 'Url must starts with http:// or https://', lambda s: s.startswith('http://') or s.startswith('https://'), default='' if previous_configuration is None else previous_configuration.get('target_endpoint', '')) verify = _read_value_from_user( 'Verify ssl (true/false)', 'Enter either true or false', lambda s: s == 'true' or s == 'false', default='true' if previous_configuration is None else json.dumps( previous_configuration.get('verify', True))) login = _read_value_from_user('Please enter your login') password = _read_value_from_user('Please enter your password') client = CloudFoundryClient(target_endpoint, verify=(verify == 'true')) client.init_with_user_credentials(login, password) with open(config_file, 'w') as f: f.write( json.dumps(dict(target_endpoint=target_endpoint, verify=(verify == 'true'), refresh_token=client.refresh_token), indent=2)) return client else: try: configuration = None with open(config_file, 'r') as f: configuration = json.load(f) client = CloudFoundryClient(configuration['target_endpoint'], verify=configuration['verify']) client.init_with_token(configuration['refresh_token']) return client except Exception as ex: if type(ex) == ConnectionError: raise else: _logger.exception( "Could not restore configuration. Cleaning and recreating") os.remove(config_file) return build_client_from_configuration(configuration)
def build_client_from_configuration(previous_configuration=None): dir_conf = os.path.join(os.path.expanduser('~')) if not os.path.isdir(dir_conf): if os.path.exists(dir_conf): raise IOError('%s exists but is not a directory') os.mkdir(dir_conf) config_file = os.path.join(dir_conf, '.cf_client_python.json') if not os.path.isfile(config_file): target_endpoint = _read_value_from_user('Please enter a target endpoint', 'Url must starts with http:// or https://', lambda s: s.startswith('http://') or s.startswith('https://'), default='' if previous_configuration is None else previous_configuration.get('target_endpoint', '')) skip_ssl_verification = _read_value_from_user('Skip ssl verification (true/false)', 'Enter either true or false', lambda s: s == 'true' or s == 'false', default='false' if previous_configuration is None else json.dumps( previous_configuration.get('skip_ssl_verification', False))) login = _read_value_from_user('Please enter your login') password = _read_value_from_user('Please enter your password') client = CloudFoundryClient(target_endpoint, skip_verification=(skip_ssl_verification == 'true')) client.init_with_user_credentials(login, password) with open(config_file, 'w') as f: f.write(json.dumps(dict(target_endpoint=target_endpoint, skip_ssl_verification=(skip_ssl_verification == 'true'), refresh_token=client.refresh_token), indent=2)) return client else: try: configuration = None with open(config_file, 'r') as f: configuration = json.load(f) client = CloudFoundryClient(configuration['target_endpoint'], skip_verification=configuration['skip_ssl_verification']) client.init_with_token(configuration['refresh_token']) return client except Exception, ex: if type(ex) == ConnectionError: raise else: _logger.exception("Could not restore configuration. Cleaning and recreating") os.remove(config_file) return build_client_from_configuration(configuration)