Esempio n. 1
0
def test_create_new_user_succeeds(app, client):
    test_login_succeeds_for_admin(client)
    company_ids = app.data.insert('companies', [{
        'phone': '2132132134',
        'sd_subscriber_id': '12345',
        'name': 'Press Co.',
        'is_enabled': True,
        'contact_name': 'Tom'
    }])
    with app.mail.record_messages() as outbox:
        # Insert a new user
        response = client.post('/users/new',
                               data={
                                   'email': '*****@*****.**',
                                   'first_name': 'John',
                                   'last_name': 'Doe',
                                   'password': '******',
                                   'country': 'Australia',
                                   'phone': '1234567',
                                   'company': company_ids[0],
                                   'user_type': 'public',
                                   'is_enabled': True,
                                   'is_approved': True
                               })
        assert response.status_code == 201
        assert len(outbox) == 1
        assert outbox[0].recipients == ['*****@*****.**']
        assert 'account created' in outbox[0].subject

    # get reset password token
    user = get_user_by_email('*****@*****.**')
    client.get(url_for('auth.reset_password', token=user['token']))

    # change the password
    response = client.post(url_for('auth.reset_password', token=user['token']),
                           data={
                               'new_password': '******',
                               'new_password2': 'abc123def',
                           })
    assert response.status_code == 302

    # Login with the new account succeeds
    response = client.post(url_for('auth.login'),
                           data={
                               'email': '*****@*****.**',
                               'password': '******'
                           },
                           follow_redirects=True)
    assert response.status_code == 200
    assert 'John' in response.get_data(as_text=True)

    # Logout
    response = client.get(url_for('auth.logout'), follow_redirects=True)
    txt = response.get_data(as_text=True)
    assert 'John' not in txt
    assert 'Login' in txt
Esempio n. 2
0
def token(token_type):
    app_name = app.config['SITE_NAME']
    contact_address = app.config['CONTACT_ADDRESS']
    form = TokenForm()
    if form.validate_on_submit():
        user = get_user_by_email(form.email.data)
        token_sent = send_token(user, token_type)
        if token_sent:
            flask.flash(
                gettext(
                    'A reset password token has been sent to your email address.'
                ), 'success')
        else:
            message = '''Your email is not registered to {},
            please <a href="{}" target="_blank"
            rel="noopener noreferrer">contact us</a> for more details.'''.format(
                app_name, contact_address)
            flask.flash(gettext(message), 'danger')
        return flask.redirect(flask.url_for('auth.login'))
    return flask.render_template('request_token.html',
                                 form=form,
                                 token_type=token_type)
Esempio n. 3
0
def create_user(email, password, first_name, last_name, is_admin):
    new_user = {
        'email': email,
        'password': password,
        'first_name': first_name,
        'last_name': last_name,
        'user_type': 'administrator' if is_admin else 'public',
        'is_enabled': True,
        'is_approved': True
    }

    with app.test_request_context('/users', method='POST'):

        user = get_user_by_email(email)

        if user:
            print('user already exists %s' % str(new_user))
        else:
            print('creating user %s' % str(new_user))
            get_resource_service('users').post([new_user])
            print('user saved %s' % (new_user))

        return new_user
Esempio n. 4
0
def _is_email_address_valid(email):
    existing_user = get_user_by_email(email)
    return not existing_user