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
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)
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
def _is_email_address_valid(email): existing_user = get_user_by_email(email) return not existing_user