''' tests for the common layout and simple (static)'''
import pytest
from . import testapp
from .. import get_user
def test_account_register_unauthenticated(testapp):
''' test the registration page for a unauthenticated user '''
testapp.reset()
response = testapp.get('/account/register')
# basic content test
assert 'Ordr | Account Registration' in response
# test the main nav section links and highlighting
li_one, li_two = response.html.find_all('li', class_='nav-item')
assert 'active' not in li_one['class']
assert li_one.find('a').text == 'FAQs'
assert 'active' in li_two['class']
assert li_two.find('a').text == 'Register'
@pytest.mark.parametrize('role_name', ['user', 'purchaser', 'admin', ])
def test_account_login_for_active_users(testapp, role_name):
''' check if user login works '''
testapp.reset()
user = get_user(role_name)
root = testapp.get('/')
login_form = root.forms['login-form']
login_form.set('username', user.username)
login_form.set('password', user.first_name)
response = login_form.submit()
# a login leads to a redirect
assert response.status == '302 Found'
assert response.location.endswith('/orders')
# the layout should reflect the login
response = testapp.get('/faq')
assert '' in response
assert 'id="login-form"' not in response
assert 'Logged in as {}'.format(user.username) in response
@pytest.mark.parametrize('role_name', ['unvalidated', 'new', 'inactive'])
def test_account_login_for_inactive_users(testapp, role_name):
''' check if user login works '''
testapp.reset()
user = get_user(role_name)
root = testapp.get('/')
login_form = root.forms['login-form']
login_form.set('username', user.username)
login_form.set('password', user.first_name)
response = login_form.submit()
assert '' in response
assert 'id="login-form' in response
assert 'Logged in as {}'.format(user.username) not in response
assert 'You entered the wrong username or password' in response
@pytest.mark.parametrize(
'username, password', [
('EricIdle', 'wrong password'),
('unknown user', 'Eric'),
('unknown user', 'unknown password')
]
)
def test_account_login_fails(testapp, username, password):
''' check if user login works '''
testapp.reset()
root = testapp.get('/')
login_form = root.forms['login-form']
login_form.set('username', username)
login_form.set('password', password)
response = login_form.submit()
assert '' in response
assert 'id="login-form' in response
assert 'Logged in as {}'.format(username) not in response
assert 'You entered the wrong username or password' in response
def test_account_login_only_by_post(testapp):
testapp.reset()
def test_account_logout_works(testapp):
''' check if a user can log out '''
testapp.reset()
testapp.login('user')
response = testapp.get('/account/logout').follow()
assert '' in response
assert 'id="login-form' in response