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')
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')
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')
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')
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)
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()
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)
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)
def test_force_ascii(self): with self.assertRaises(UsernameInvalid): validate_username(username1)
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')
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')
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')
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')
def test_non_ascii_whitespace(self): load_username_validators(('Users.validators.XMPPValidator', )) with self.assertRaises(UsernameInvalid): validate_username('foo bar') validate_username('foobar')
def test_no_whitespace(self): with self.assertRaises(UsernameInvalid): validate_username('foo bar')
def test_non_ascii_whitespace(self): load_username_validators(('Users.validators.XMPPValidator', )) self.assertRaises(UsernameInvalid, validate_username, 'foo bar') validate_username('foobar')
def test_reserved_username(self): with self.assertRaises(UsernameInvalid): validate_username('mediawiki default')
def test_illegal_chars(self): with self.assertRaises(UsernameInvalid): validate_username('foo>bar')