def test_create_duplicate(self): u1 = User() u1.name = 'Testy McDuplicate' u1.username = '******' u1.password = '******' self.session.add(u1) self.session.flush() u2 = User() u2.name = 'Testy McDuplicate' u2.username = '******' u2.password = '******' self.session.add(u2) self.session.flush()
def create(username, password, name=None, **kwargs): """Create and return a new instance of :class:`pooldlib.postgresql.models.User`. Any unspecified kwargs will be assumed to be metadata to be associated with the new user. All errors are bubbled up. :param username: The username of the new user. :type username: string :param password: The password for the new user. :type password: string :param name: The full name of the new user (optional). :type password: string :param kwargs: Metadata to associate with the new user. :type kwargs: kwarg dictionary :raises: :class:`pooldlib.exceptions.InvalidPasswordError` :class:`pooldlib.exceptions.UsernameUnavailableError` :class:`pooldlib.exceptions.EmailUnavailableError` :returns: :class:`pooldlib.postgresql.models.User` """ validate_password(password, exception_on_invalid=True) if 'email' in kwargs: if email_exists(kwargs['email']): msg = 'The email address %s is already assigned to another user.' msg %= kwargs['email'] raise EmailUnavailableError(msg) # Only store lower-case emails in the system kwargs['email'] = kwargs['email'].lower() u = UserModel() u.username = username u.password = password if name: u.name = name with transaction_session() as session: try: session.add(u) session.commit() except SQLAlchemyIntegrityError: msg = "Username %s already in use." % username raise UsernameUnavailableError(msg) meta = list() for (k, v) in kwargs.items(): um = UserMetaModel() um.key = k um.value = v um.user = u meta.append(um) with transaction_session(auto_commit=True) as session: for um in meta: session.add(um) return u
def test_create(self): u = User() u.name = 'Testy McTesterson' u.username = '******' u.password = '******' self.commit_model(u) qs = User.query.filter_by(username='******').all() assert_equal(1, len(qs)) assert_true(u.password.startswith('sha1')) assert_true(len(u.password.split('$', 2)) == 3)
def create_user(self, username, name, email=None): u = User() u.name = name u.username = username # Passwords must contain at least one number, so we force it... u.password = username + '1' u.verified = True u.enabled = True self.commit_model(u) if email is not None: um = UserMeta() um.key = 'email' um.value = email um.user = u self.commit_model(um) return u
def factory(name, description, percentage, flat): u = User() u.username = name u.password = name db.session.add(u) db.session.flush() b = Balance() b.type = 'user' b.user_id = u.id b.amount = 0 b.currency_id = 1 db.session.add(b) f = Fee() f.name = name f.description = description f.fractional_pct = percentage f.flat = flat f.user_id = u.id db.session.add(f)