def factory(names):
     for name in names:
         if isinstance(name, list):
             name, email = name
         else:
             email = '*****@*****.**' % name
         User.create_normal(
             name, faker.password(), email=email,
             is_active=True)
Exemple #2
0
def test_get_all_normal(db, user_foo):
    assert User.get_all_normal() == [user_foo]

    user_bar = User.create_application('base.bar')
    user_baz = User.create_normal('baz', '-', '*****@*****.**', is_active=True)
    user_too = User.create_normal('too', '-', '*****@*****.**', is_active=False)

    assert User.get_all_normal() == [user_foo, user_baz]
    assert user_bar not in User.get_all_normal()
    assert user_too not in User.get_all_normal()
Exemple #3
0
def test_get_team_application_token_with_malformed_user(
        client, db, test_team, test_application, admin_user, admin_token,
        faker):
    """The username and email prefix are not inconsistent."""
    User.create_normal('foobar',
                       faker.uuid4()[:8], '*****@*****.**', True)
    r = client.post('/api/team/%s/application/%s/token' %
                    (test_team.team_name, test_application.application_name),
                    data={'owner_email': '*****@*****.**'},
                    headers={'Authorization': admin_token})
    assert_response_ok(r)
Exemple #4
0
def test_create_normal(db):
    user = User.create_normal('water', 'foobar', '*****@*****.**')
    assert user.username == 'water'
    assert user.check_password('foobar')
    assert not user.check_password('foobaz')
    assert not user.is_active
    assert user.is_admin is False
    assert user.is_application is False

    with raises(NameOccupiedError):
        User.create_normal('water', 'foobaz', '*****@*****.**')
    assert db.query(
        User.email).filter_by(username='******').scalar() == '*****@*****.**'
Exemple #5
0
def test_get_multi_by_index(faker, action):
    assert AuditLog.get_multi_by_index(AuditLog.TYPE_SITE, 0)[:] == []
    assert AuditLog.get_multi_by_index(AuditLog.TYPE_TEAM, 0)[:] == []
    user = User.create_normal(faker.uuid4(), '-', faker.email())
    log = AuditLog.create(user.id, faker.ipv4(), action)
    assert AuditLog.get_multi_by_index(AuditLog.TYPE_SITE, 0)[:] == [log]
    assert AuditLog.get_multi_by_index(AuditLog.TYPE_TEAM, 0)[:] == []
Exemple #6
0
 def ensure(self):
     user = (User.get_by_name(self.name) or User.get_by_email(self.email))
     if user is None:
         password = gen_salt(30)
         user = User.create_normal(self.name,
                                   password,
                                   self.email,
                                   is_active=True)
         deliver_email(EmailTemplate.SIGNUP, user.email, {
             'username': user.username,
             'password': password,
         })
     return user
Exemple #7
0
def test_get_application_token_with_malformed_application(
        client, faker, capsys, db, test_team, admin_token):
    _application = Application.create(faker.uuid4()[:8], test_team.id)
    _user = User.get_by_name(_application.application_name)
    with DBSession() as session:
        session.delete(_user)
        session.commit()
    _user = User.create_normal(_application.application_name,
                               '-',
                               is_active=True)

    r = client.post('/api/application/%s/token' %
                    _application.application_name,
                    headers={'Authorization': admin_token})
    assert r.status_code == 400
    assert r.json['status'] == 'BadRequest'
    assert r.json['message'] == ('malformed application: %s' %
                                 _application.application_name)
    assert r.json['data'] is None
Exemple #8
0
    def post(self):
        """Creates a new user with your site admin authority.

        We will send you an email of random password if don't specify password
        explicitly.

        :form username: The username of new user.
        :form password: The optional password of new user.
        :form email: The email of new user.
        :<header Authorization: Huskar Token (See :ref:`token`)
        :status 400: The username is used or the format is invalid.
        :status 200: The new user is created successfully.
        """
        g.auth.require_admin('only admin can add users')

        username = request.form['username'].strip()
        password = request.form.get('password', gen_salt(30))
        is_generated_password = '******' not in request.form
        email = request.form['email'].strip()
        validate_fields(user_schema, {'username': username, 'email': email})

        user = User.get_by_name(username)
        if user:
            abort(400, u'{0} is used username'.format(username))

        try:
            user = User.create_normal(username,
                                      password,
                                      email,
                                      is_active=True)
        except NameOccupiedError:
            abort(400, u'User %s has been archived' % username)
        audit_log.emit(audit_log.types.CREATE_USER, user=user)

        if is_generated_password:
            deliver_email(EmailTemplate.SIGNUP, user.email, {
                'username': user.username,
                'password': password,
            })

        return api_response()
Exemple #9
0
def test_prefetch_audit_log(faker, action):
    users = [
        User.create_normal(faker.uuid4()[:8], '-', faker.email())
        for _ in xrange(10)]
    audit_logs = [
        AuditLog.create(user.id, faker.ipv4(), action) for user in users]
    rollback_logs = [
        AuditLog.create(
            audit.user_id, faker.ipv4(), action, rollback_to=audit.id)
        for audit in audit_logs]
    ids = [audit.id for audit in audit_logs + rollback_logs]
    fetched_logs = AuditLog.get_multi_and_prefetch(ids)

    for index, audit in enumerate(fetched_logs[:len(audit_logs)]):
        assert audit.__dict__['user'] is users[index]
        assert 'rollback_to' not in audit.__dict__
        assert audit.user is users[index]
        assert audit.rollback_to is None

    for index, audit in enumerate(fetched_logs[len(audit_logs):]):
        assert audit.__dict__['user'] is users[index]
        assert audit.__dict__['rollback_to'] is audit_logs[index]
        assert audit.user is users[index]
        assert audit.rollback_to is audit_logs[index]
Exemple #10
0
def admin_user(db):
    admin_user = User.create_normal('admin', password='******', is_active=True)
    admin_user.grant_admin()
    return admin_user
Exemple #11
0
def user():
    return User.create_normal('foo', '-', '*****@*****.**')
Exemple #12
0
def test_user(faker):
    email = faker.safe_email()
    username = email.split('@', 1)[0]
    password = faker.password()
    return User.create_normal(username, password, email, is_active=True)