Esempio n. 1
0
 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,
         )
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)