You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.5 KiB
126 lines
4.5 KiB
7 years ago
|
''' functional tests for ordr2.views.account.py '''
|
||
|
|
||
|
from pyramid_mailer import get_mailer
|
||
|
|
||
7 years ago
|
from .. import testappsetup, testapp, get_token_url # noqa: F401
|
||
7 years ago
|
|
||
|
|
||
|
def test_account_change_settings(testapp): # noqa: F811
|
||
|
testapp.login('TerryGilliam', 'Terry')
|
||
7 years ago
|
|
||
7 years ago
|
response = testapp.get('/account/settings')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Settings' in response
|
||
|
assert 'value="gilliam@example.com"' in response
|
||
|
assert 'Wrong Password' not in response
|
||
7 years ago
|
|
||
7 years ago
|
# fill out the form without confirmation password
|
||
|
form = response.form
|
||
|
form['first_name'] = 'Amy'
|
||
|
form['last_name'] = 'McDonald'
|
||
|
response = form.submit(name='change')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Settings' in response
|
||
|
assert 'required' in response
|
||
|
|
||
|
# fill out the form with invalid data but correct password
|
||
|
response = testapp.get('/account/settings')
|
||
|
form = response.form
|
||
|
form['first_name'] = 'Amy'
|
||
|
form['last_name'] = 'McDonald'
|
||
|
form['email'] = 'this is not an email address'
|
||
|
form['confirmation'] = 'Terry'
|
||
|
response = form.submit(name='change')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Settings' in response
|
||
|
assert 'Invalid email address' in response
|
||
7 years ago
|
|
||
7 years ago
|
# fill out the form with valid data and correct password
|
||
|
response = testapp.get('/account/settings')
|
||
|
form = response.form
|
||
|
form['first_name'] = 'Amy'
|
||
|
form['last_name'] = 'McDonald'
|
||
|
form['confirmation'] = 'Terry'
|
||
|
response = form.submit(name='change')
|
||
|
assert response.location == 'http://localhost/'
|
||
7 years ago
|
|
||
7 years ago
|
response = testapp.get('/account/settings')
|
||
|
assert 'value="Amy"' in response
|
||
|
|
||
|
|
||
|
def test_account_change_email(testapp): # noqa: F811
|
||
|
testapp.login('TerryGilliam', 'Terry')
|
||
|
response = testapp.get('/account/settings')
|
||
7 years ago
|
|
||
7 years ago
|
# fill out the form with valid data and correct password
|
||
|
form = response.form
|
||
|
form['email'] = 'amy@example.com'
|
||
|
form['confirmation'] = 'Terry'
|
||
|
response = form.submit(name='change')
|
||
|
assert response.location == 'http://localhost/account/verify'
|
||
|
|
||
|
# click the email verification token
|
||
|
mailer = get_mailer(testapp.app.registry)
|
||
|
email = mailer.outbox[-1]
|
||
|
assert email.subject == '[ordr] Verify New Email Address'
|
||
|
assert email.recipients == ['amy@example.com']
|
||
7 years ago
|
|
||
7 years ago
|
token_link = get_token_url(email, prefix='/account/')
|
||
|
response = testapp.get(token_link)
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Settings' in response
|
||
|
assert 'changed sucessfully' not in response
|
||
|
|
||
|
|
||
|
def test_account_change_password(testapp): # noqa: F811
|
||
|
testapp.login('TerryGilliam', 'Terry')
|
||
7 years ago
|
|
||
7 years ago
|
response = testapp.get('/account/password')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Password' in response
|
||
|
assert 'Wrong Password' not in response
|
||
7 years ago
|
|
||
7 years ago
|
# fill out the form with incorrect confirmation password
|
||
|
form = response.form
|
||
|
form['password'] = 'Lost in La Mancha'
|
||
|
form['password-confirm'] = 'Lost in La Mancha'
|
||
|
form['confirmation'] = 'Unknown Password'
|
||
|
response = form.submit(name='change')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Password' in response
|
||
|
assert 'Wrong password' in response
|
||
|
|
||
|
# fill out the form with invalid data but correct password
|
||
|
response = testapp.get('/account/password')
|
||
|
form = response.form
|
||
|
form['password'] = 'Lost in La Mancha'
|
||
|
form['password-confirm'] = 'confirmation does not match'
|
||
|
form['confirmation'] = 'Terry'
|
||
|
response = form.submit(name='change')
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Change Password' in response
|
||
|
assert 'Password did not match confirm' in response
|
||
7 years ago
|
|
||
7 years ago
|
# fill out the form with valid data and correct password
|
||
|
response = testapp.get('/account/password')
|
||
|
form = response.form
|
||
|
form['password'] = 'Lost in La Mancha'
|
||
|
form['password-confirm'] = 'Lost in La Mancha'
|
||
|
form['confirmation'] = 'Terry'
|
||
|
response = form.submit(name='change')
|
||
|
assert response.location == 'http://localhost/account/changed'
|
||
7 years ago
|
|
||
7 years ago
|
response = response.follow()
|
||
|
active_nav = response.html.find('li', class_='active')
|
||
|
assert active_nav is None
|
||
|
assert 'Your password was changed successfully' in response
|
||
7 years ago
|
|
||
7 years ago
|
assert testapp.login('TerryGilliam', 'Lost in La Mancha')
|