예제 #1
0
 def test_drupal_check(self):
     load_username_validators(('Users.validators.DrupalValidator', ))
     self.assertRaises(UsernameInvalid, validate_username, ' foobar')
     self.assertRaises(UsernameInvalid, validate_username, 'foobar ')
     self.assertRaises(UsernameInvalid, validate_username, 'foo  bar')
     self.assertRaises(UsernameInvalid, validate_username, 'foo&bar')
     validate_username('foobar')
예제 #2
0
    def test_linux_check(self):
        load_username_validators(('Users.validators.LinuxValidator', ))
        validate_username('foobar')

        self.assertRaises(UsernameInvalid, validate_username, 'x' * 33)
        self.assertRaises(UsernameInvalid, validate_username, '-foobar')

        with self.settings(RELAXED_LINUX_CHECKS=False):
            self.assertRaises(UsernameInvalid, validate_username, 'foo%bar')
예제 #3
0
파일: tests.py 프로젝트: RestAuth/server
 def test_drupal_check(self):
     load_username_validators(('Users.validators.DrupalValidator', ))
     with self.assertRaises(UsernameInvalid):
         validate_username(' foobar')
     with self.assertRaises(UsernameInvalid):
         validate_username('foobar ')
     with self.assertRaises(UsernameInvalid):
         validate_username('foo  bar')
     with self.assertRaises(UsernameInvalid):
         validate_username('foo&bar')
     validate_username('foobar')
예제 #4
0
파일: tests.py 프로젝트: RestAuth/server
    def test_linux_check(self):
        load_username_validators(('Users.validators.LinuxValidator', ))
        validate_username('foobar')

        with self.assertRaises(UsernameInvalid):
            validate_username('x' * 33)
        with self.assertRaises(UsernameInvalid):
            validate_username('-foobar')

        with self.settings(RELAXED_LINUX_CHECKS=False), self.assertRaises(UsernameInvalid):
            validate_username('foo%bar')
예제 #5
0
    def __call__(self, parser, namespace, value, option_string):
        if not six.PY3:  # pragma: no branch, pragma: py2
            value = value.decode('utf-8')
        user = stringprep(value)

        if namespace.create_user:
            try:
                user = stringcheck(user)
            except PreconditionFailed:
                raise ArgumentError(self, "Username contains invalid characters")

            try:
                validate_username(user)
                backend.create_user(user=user)
            except UserExists:
                raise ArgumentError(self, 'User already exists.')
            except PreconditionFailed as e:
                raise ArgumentError(self, e)

        setattr(namespace, self.dest, user)
예제 #6
0
    def post(self, request, largs, dry=False):
        """Create a new user."""

        if not request.user.has_perm('Users.user_create'):
            return HttpResponseForbidden()

        name, password, properties, groups = self._parse_post(request)
        name = stringcheck(name)

        # If UsernameInvalid: 412 Precondition Failed
        validate_username(name)

        # check password:
        if password:
            if len(password) < settings.MIN_PASSWORD_LENGTH:
                # If PasswordInvalid: 412 Precondition Failed
                raise PasswordInvalid("Password too short")
        else:
            password = None

        # normalize properties, add date-joined if not present
        if properties is None:
            properties = {
                'date joined': datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            }
        else:
            properties = {stringcheck(k): v for k, v in six.iteritems(properties)}
            if 'date joined' not in properties:
                properties['date joined'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        # normalize groups
        if groups:
            groups = [(stringcheck(g), request.user) for g in groups]

        # If UserExists: 409 Conflict
        backend.create_user(user=name, password=password, properties=properties, groups=groups,
                            dry=dry)
        self.log.info('%s: Created user', name, extra=largs)

        return HttpResponseCreated()
예제 #7
0
    def __call__(self, parser, namespace, value, option_string):
        username = value.lower()
        if not six.PY3:  # pragma: no branch, pragma: py2
            username = username.decode('utf-8')

        if namespace.create_user:
            if not resource_validator(username):
                raise ArgumentError(self, "Username contains invalid characters")

            try:
                validate_username(username)
                user = user_backend.create(username=username, property_backend=property_backend)
            except UserExists:
                raise ArgumentError(self, 'User already exists.')
            except PreconditionFailed as e:
                raise ArgumentError(self, e)
        else:
            try:
                user = user_backend.get(username=username)
            except UserNotFound:
                raise ArgumentError(self, 'User does not exist.')
        setattr(namespace, self.dest, user)
예제 #8
0
    def post(self, request, largs, dry=False):
        """Create a new user."""

        if not request.user.has_perm('Users.user_create'):
            return HttpResponseForbidden()

        name, password, properties = self._parse_post(request)
        name = name.lower()

        # check username:
        if not resource_validator(name):
            raise PreconditionFailed("Username contains invalid characters")
        # If UsernameInvalid: 412 Precondition Failed
        validate_username(name)

        # check password:
        if password is not None and password != '':
            if len(password) < settings.MIN_PASSWORD_LENGTH:
                raise PasswordInvalid("Password too short")

        # check properties:
        if properties is not None:
            for key in six.iterkeys(properties):
                if not resource_validator(key):
                    raise PreconditionFailed(
                        "Property contains invalid characters")

        # If ResourceExists: 409 Conflict
        # If PasswordInvalid: 412 Precondition Failed
        user = user_backend.create(username=name,
                                   password=password,
                                   properties=properties,
                                   property_backend=property_backend,
                                   dry=dry)

        self.log.info('%s: Created user', user.username, extra=largs)
        return HttpResponseCreated(request, 'users.user', name=user.username)
예제 #9
0
파일: tests.py 프로젝트: RestAuth/server
 def test_force_ascii(self):
     with self.assertRaises(UsernameInvalid):
         validate_username(username1)
예제 #10
0
 def test_mediawiki_check(self):
     load_username_validators(('Users.validators.MediaWikiValidator', ))
     with self.settings(MAX_USERNAME_LENGTH=500):
         self.assertRaises(UsernameInvalid, validate_username, 'x' * 256)
     validate_username('foobar')
예제 #11
0
 def test_email_check(self):
     load_username_validators(('Users.validators.EmailValidator', ))
     self.assertRaises(UsernameInvalid, validate_username, 'x' * 65)  # more then 64 chars
     validate_username('foobar')
예제 #12
0
파일: tests.py 프로젝트: RestAuth/server
 def test_email_check(self):
     load_username_validators(('Users.validators.EmailValidator', ))
     with self.assertRaises(UsernameInvalid):
         validate_username('x' * 65)  # more then 64 chars
     validate_username('foobar')
예제 #13
0
파일: tests.py 프로젝트: RestAuth/server
 def test_mediawiki_check(self):
     load_username_validators(('Users.validators.MediaWikiValidator', ))
     with self.settings(MAX_USERNAME_LENGTH=500), self.assertRaises(UsernameInvalid):
         validate_username('x' * 256)
     validate_username('foobar')
예제 #14
0
파일: tests.py 프로젝트: RestAuth/server
 def test_non_ascii_whitespace(self):
     load_username_validators(('Users.validators.XMPPValidator', ))
     with self.assertRaises(UsernameInvalid):
         validate_username('foo bar')
     validate_username('foobar')
예제 #15
0
파일: tests.py 프로젝트: RestAuth/server
 def test_no_whitespace(self):
     with self.assertRaises(UsernameInvalid):
         validate_username('foo bar')
예제 #16
0
 def test_non_ascii_whitespace(self):
     load_username_validators(('Users.validators.XMPPValidator', ))
     self.assertRaises(UsernameInvalid, validate_username, 'foo bar')
     validate_username('foobar')
예제 #17
0
파일: tests.py 프로젝트: RestAuth/server
 def test_reserved_username(self):
     with self.assertRaises(UsernameInvalid):
         validate_username('mediawiki default')
예제 #18
0
파일: tests.py 프로젝트: RestAuth/server
 def test_illegal_chars(self):
     with self.assertRaises(UsernameInvalid):
         validate_username('foo>bar')