コード例 #1
0
 def test_validate_userinfo(self):
     self.assertRaises(InvalidURI, parse_userinfo, "foo@")
     self.assertRaises(InvalidURI, parse_userinfo, ":password")
     self.assertRaises(InvalidURI, parse_userinfo, "user:"******"fo::o:p@ssword")
     self.assertRaises(InvalidURI, parse_userinfo, ":")
     self.assert_(parse_userinfo("user:password"))
     self.assertEqual(("us:r", "p@ssword"), parse_userinfo("us%3Ar:p%40ssword"))
コード例 #2
0
 def test_validate_userinfo(self):
     self.assertRaises(InvalidURI, parse_userinfo, 'foo@')
     self.assertRaises(InvalidURI, parse_userinfo, ':password')
     self.assertRaises(InvalidURI, parse_userinfo, 'user:'******'fo::o:p@ssword')
     self.assertRaises(InvalidURI, parse_userinfo, ':')
     self.assert_(parse_userinfo('user:password'))
     self.assertEqual(('us:r', 'p@ssword'),
                      parse_userinfo('us%3Ar:p%40ssword'))
コード例 #3
0
 def test_validate_userinfo(self):
     self.assertRaises(InvalidURI, parse_userinfo,
                       'foo@')
     self.assertRaises(InvalidURI, parse_userinfo,
                       ':password')
     self.assertRaises(InvalidURI, parse_userinfo,
                       'user:'******'fo::o:p@ssword')
     self.assertRaises(InvalidURI, parse_userinfo, ':')
     self.assert_(parse_userinfo('user:password'))
     self.assertEqual(('us:r', 'p@ssword'),
                      parse_userinfo('us%3Ar:p%40ssword'))
コード例 #4
0
ファイル: utils.py プロジェクト: sushantpatade/kairon
    def extract_user_password(uri: str):
        """
        extract username, password and host with port from mongo uri

        :param uri: mongo uri
        :return: username, password, scheme, hosts
        """
        if uri.startswith(SCHEME):
            scheme_free = uri[SCHEME_LEN:]
            scheme = uri[:SCHEME_LEN]
        elif uri.startswith(SRV_SCHEME):
            scheme_free = uri[SRV_SCHEME_LEN:]
            scheme = uri[:SRV_SCHEME_LEN]
        else:
            raise InvalidURI("Invalid URI scheme: URI must "
                             "begin with '%s' or '%s'" % (SCHEME, SRV_SCHEME))

        if not scheme_free:
            raise InvalidURI("Must provide at least one hostname or IP.")

        host_part, _, _ = scheme_free.partition("/")
        if "@" in host_part:
            userinfo, _, hosts = host_part.rpartition("@")
            user, passwd = parse_userinfo(userinfo)
            return user, passwd, scheme + hosts
        else:
            return None, None, scheme + host_part
コード例 #5
0
 def test_validate_userinfo(self):
     self.assertRaises(InvalidURI, parse_userinfo, 'foo@')
     self.assertRaises(InvalidURI, parse_userinfo, ':password')
     self.assertRaises(InvalidURI, parse_userinfo, 'fo::o:p@ssword')
     self.assertRaises(InvalidURI, parse_userinfo, ':')
     self.assertTrue(parse_userinfo('user:password'))
     self.assertEqual(('us:r', 'p@ssword'),
                      parse_userinfo('us%3Ar:p%40ssword'))
     self.assertEqual(('us er', 'p ssword'),
                      parse_userinfo('us+er:p+ssword'))
     self.assertEqual(('us er', 'p ssword'),
                      parse_userinfo('us%20er:p%20ssword'))
     self.assertEqual(('us+er', 'p+ssword'),
                      parse_userinfo('us%2Ber:p%2Bssword'))
     self.assertEqual(('*****@*****.**', ''),
                      parse_userinfo('dev1%40FOO.COM'))
     self.assertEqual(('*****@*****.**', ''),
                      parse_userinfo('dev1%40FOO.COM:'))
コード例 #6
0
 def test_validate_userinfo(self):
     self.assertRaises(InvalidURI, parse_userinfo,
                       'foo@')
     self.assertRaises(InvalidURI, parse_userinfo,
                       ':password')
     self.assertRaises(InvalidURI, parse_userinfo,
                       'fo::o:p@ssword')
     self.assertRaises(InvalidURI, parse_userinfo, ':')
     self.assertTrue(parse_userinfo('user:password'))
     self.assertEqual(('us:r', 'p@ssword'),
                      parse_userinfo('us%3Ar:p%40ssword'))
     self.assertEqual(('us er', 'p ssword'),
                      parse_userinfo('us+er:p+ssword'))
     self.assertEqual(('us er', 'p ssword'),
                      parse_userinfo('us%20er:p%20ssword'))
     self.assertEqual(('us+er', 'p+ssword'),
                      parse_userinfo('us%2Ber:p%2Bssword'))
     self.assertEqual(('*****@*****.**', ''),
                      parse_userinfo('dev1%40FOO.COM'))
     self.assertEqual(('*****@*****.**', ''),
                      parse_userinfo('dev1%40FOO.COM:'))
コード例 #7
0
ファイル: utils.py プロジェクト: udit-pandey/kairon
    def extract_db_config(uri: str):
        """
        extract username, password and host with port from mongo uri

        :param uri: mongo uri
        :return: username, password, scheme, hosts
        """
        user = None
        passwd = None
        dbase = None
        collection = None
        options = _CaseInsensitiveDictionary()
        is_mock = False
        if uri.startswith("mongomock://"):
            uri = uri.replace("mongomock://", "mongodb://", 1)
            is_mock = True

        if uri.startswith(SCHEME):
            scheme_free = uri[SCHEME_LEN:]
            scheme = uri[:SCHEME_LEN]
        elif uri.startswith(SRV_SCHEME):
            scheme_free = uri[SRV_SCHEME_LEN:]
            scheme = uri[:SRV_SCHEME_LEN]
        else:
            raise InvalidURI("Invalid URI scheme: URI must "
                             "begin with '%s' or '%s'" % (SCHEME, SRV_SCHEME))

        if not scheme_free:
            raise InvalidURI("Must provide at least one hostname or IP.")

        host_part, _, _ = scheme_free.partition("/")
        host_part, _, path_part = scheme_free.partition("/")
        if not host_part:
            host_part = path_part
            path_part = ""

        if not path_part and '?' in host_part:
            raise InvalidURI("A '/' is required between "
                             "the host list and any options.")

        if path_part:
            dbase, _, opts = path_part.partition('?')
            if dbase:
                dbase = unquote_plus(dbase)
                if '.' in dbase:
                    dbase, collection = dbase.split('.', 1)
                if _BAD_DB_CHARS.search(dbase):
                    raise InvalidURI('Bad database name "%s"' % dbase)
            else:
                dbase = None

            if opts:
                options.update(split_options(opts, True, False, True))

        if "@" in host_part:
            userinfo, _, hosts = host_part.rpartition("@")
            user, passwd = parse_userinfo(userinfo)
            hosts = scheme + hosts
        else:
            hosts = scheme + host_part

        settings = {
            "username": user,
            "password": passwd,
            "host": hosts,
            "db": dbase,
            "options": options,
            "collection": collection
        }

        if is_mock:
            settings['is_mock'] = is_mock
        return settings