def test_get_config(self): self.assertIsInstance(client.get_config(), client.Config) try: base_dir = tempfile.mkdtemp() base_dir_basename = os.path.basename(base_dir) svn_cfg_dir = os.path.join(base_dir, '.subversion') os.mkdir(svn_cfg_dir) with open(os.path.join(svn_cfg_dir, 'config'), 'w') as svn_cfg: svn_cfg.write('[miscellany]\n') svn_cfg.write('global-ignores = %s' % base_dir_basename) config = client.get_config(svn_cfg_dir) self.assertIsInstance(config, client.Config) ignores = config.get_default_ignores() self.assertTrue(base_dir_basename in ignores) finally: shutil.rmtree(base_dir)
def __init__(self, config_dir, repopath, username=None, password=None): super(Client, self).__init__(config_dir, repopath, username, password) self.repopath = B(self.repopath) self.config_dir = B(config_dir) self._ssl_trust_prompt_cb = None auth_providers = [ ra.get_simple_provider(), ra.get_username_provider(), ] if repopath.startswith('https:'): auth_providers += [ ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(self.ssl_trust_prompt), ] self.auth = ra.Auth(auth_providers) if username: self.auth.set_parameter(B('svn:auth:username'), B(username)) if password: self.auth.set_parameter(B('svn:auth:password'), B(password)) cfg = get_config(self.config_dir) self.client = SVNClient(cfg, auth=self.auth)
def accept_ssl_certificate(self, path, on_failure=None): """If the repository uses SSL, this method is used to determine whether the SSL certificate can be automatically accepted. If the cert cannot be accepted, the ``on_failure`` callback is executed. ``on_failure`` signature:: void on_failure(e:Exception, path:str, cert:dict) """ self._accept_cert = {} self._accept_on_failure = on_failure auth = ra.Auth([ ra.get_simple_provider(), ra.get_username_provider(), ra.get_ssl_server_trust_prompt_provider(self._accept_trust_prompt), ]) cfg = get_config(self.config_dir) client = SVNClient(cfg, auth) try: info = client.info(path) logging.debug('SVN: Got repository information for %s: %s' % (path, info)) except SubversionException as e: if on_failure: on_failure(e, path, self._accept_cert)
def accept_ssl_certificate(self, path, on_failure=None): """If the repository uses SSL, this method is used to determine whether the SSL certificate can be automatically accepted. If the cert cannot be accepted, the ``on_failure`` callback is executed. ``on_failure`` signature:: void on_failure(e:Exception, path:str, cert:dict) """ cert = {} def _accept_trust_prompt(realm, failures, certinfo, may_save): cert.update({ 'realm': realm, 'failures': failures, 'hostname': certinfo[0], 'finger_print': certinfo[1], 'valid_from': certinfo[2], 'valid_until': certinfo[3], 'issuer_dname': certinfo[4], }) if on_failure: return 0, False else: del cert['failures'] return failures, True auth = ra.Auth([ ra.get_simple_provider(), ra.get_username_provider(), ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(_accept_trust_prompt), ]) if self.username: auth.set_parameter(AUTH_PARAM_DEFAULT_USERNAME, self.username) if self.password: auth.set_parameter(AUTH_PARAM_DEFAULT_PASSWORD, self.password) cfg = get_config(self.config_dir) client = SVNClient(cfg, auth) try: info = client.info(path) logging.debug('SVN: Got repository information for %s: %s' % (path, info)) except SubversionException as e: if on_failure: on_failure(e, path, cert) return cert
def accept_ssl_certificate(self, path, on_failure=None): """If the repository uses SSL, this method is used to determine whether the SSL certificate can be automatically accepted. If the cert cannot be accepted, the ``on_failure`` callback is executed. ``on_failure`` signature:: void on_failure(e:Exception, path:str, cert:dict) """ cert = {} def _accept_trust_prompt(realm, failures, certinfo, may_save): cert.update({ 'realm': realm, 'failures': failures, 'hostname': certinfo[0], 'finger_print': certinfo[1], 'valid_from': certinfo[2], 'valid_until': certinfo[3], 'issuer_dname': certinfo[4], }) if on_failure: return 0, False else: del cert['failures'] return failures, True auth = ra.Auth([ ra.get_simple_provider(), ra.get_username_provider(), ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(_accept_trust_prompt), ]) if self.username: auth.set_parameter(AUTH_PARAM_DEFAULT_USERNAME, B(self.username)) if self.password: auth.set_parameter(AUTH_PARAM_DEFAULT_PASSWORD, B(self.password)) cfg = get_config(self.config_dir) client = SVNClient(cfg, auth) try: info = client.info(path) logging.debug('SVN: Got repository information for %s: %s' % (path, info)) except SubversionException as e: if on_failure: on_failure(e, path, cert) return cert
def accept_ssl_certificate(self, path, on_failure=None): """If the repository uses SSL, this method is used to determine whether the SSL certificate can be automatically accepted. If the cert cannot be accepted, the ``on_failure`` callback is executed. ``on_failure`` signature:: void on_failure(e:Exception, path:str, cert:dict) """ cert = {} def _accept_trust_prompt(realm, failures, certinfo, may_save): cert.update( { "realm": realm, "failures": failures, "hostname": certinfo[0], "finger_print": certinfo[1], "valid_from": certinfo[2], "valid_until": certinfo[3], "issuer_dname": certinfo[4], } ) if on_failure: return 0, False else: del cert["failures"] return failures, True auth = ra.Auth( [ ra.get_simple_provider(), ra.get_username_provider(), ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(_accept_trust_prompt), ] ) cfg = get_config(self.config_dir) client = SVNClient(cfg, auth) try: info = client.info(path) logging.debug("SVN: Got repository information for %s: %s" % (path, info)) except SubversionException as e: if on_failure: on_failure(e, path, cert) return cert
def __init__(self, config_dir, repopath, username=None, password=None): """Initialize the client. Args: config_dir (unicode): The Subversion configuration directory. repopath (unicode): The path to the Subversion repository. username (unicode, optional): The username used to authenticate with the repository. password (unicode, optional): The password used to authenticate with the repository. """ super(Client, self).__init__(config_dir, repopath, username, password) self.repopath = self.repopath self.config_dir = config_dir self._ssl_trust_prompt_cb = None auth_providers = [ ra.get_simple_provider(), ra.get_username_provider(), ] if repopath.startswith('https:'): auth_providers += [ ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(self.ssl_trust_prompt), ] self.auth = ra.Auth(auth_providers) self.username = None self.password = None if username: self.username = username self.auth.set_parameter(AUTH_PARAM_DEFAULT_USERNAME, self.username) if password: self.password = password self.auth.set_parameter(AUTH_PARAM_DEFAULT_PASSWORD, self.password) cfg = get_config(self.config_dir) self.client = SVNClient(cfg, auth=self.auth)
def __init__(self, config_dir, repopath, username=None, password=None): super(Client, self).__init__(config_dir, repopath, username, password) self.repopath = B(self.repopath) self.config_dir = B(config_dir) auth_providers = [ra.get_simple_provider(), ra.get_username_provider()] if repopath.startswith("https:"): auth_providers.append(ra.get_ssl_server_trust_prompt_provider(self.ssl_trust_prompt)) self.auth = ra.Auth(auth_providers) if username: self.auth.set_parameter(B("svn:auth:username"), B(username)) if password: self.auth.set_parameter(B("svn:auth:password"), B(password)) cfg = get_config(self.config_dir) self.client = SVNClient(cfg, auth=self.auth)
def __init__(self, config_dir, repopath, username=None, password=None): super(Client, self).__init__(config_dir, repopath, username, password) self.repopath = B(self.repopath) self.config_dir = B(config_dir) self._ssl_trust_prompt_cb = None auth_providers = [ ra.get_simple_provider(), ra.get_username_provider(), ] if repopath.startswith('https:'): auth_providers += [ ra.get_ssl_client_cert_file_provider(), ra.get_ssl_client_cert_pw_file_provider(), ra.get_ssl_server_trust_file_provider(), ra.get_ssl_server_trust_prompt_provider(self.ssl_trust_prompt), ] self.auth = ra.Auth(auth_providers) self.username = None self.password = None if username: self.username = username self.auth.set_parameter(AUTH_PARAM_DEFAULT_USERNAME, B(self.username)) if password: self.password = password self.auth.set_parameter(AUTH_PARAM_DEFAULT_PASSWORD, B(self.password)) cfg = get_config(self.config_dir) self.client = SVNClient(cfg, auth=self.auth)
register_urlparse_netloc_protocol('svn+http') register_urlparse_netloc_protocol('svn+https') import breezy.plugins.svn from .auth import ( create_auth_baton, ) from .changes import ( common_prefix, ) from .errors import ( convert_svn_error, DavRequestFailed, NoSvnRepositoryPresent, convert_error, ) try: svn_config = get_config() except subvertpy.SubversionException as e: msg, num = e.args if num == subvertpy.ERR_MALFORMED_FILE: raise BzrError(msg) raise # This variable is here to allow tests to temporarily disable features # to see how bzr-svn copes with that disabled_capabilities = set() # Don't run any tests on SvnTransport as it is not intended to be # a full implementation of Transport def get_test_permutations(): return []