# -*- coding: utf8 -*-
import waraamo
from waraamo.tests import *
from waraamo.model.constants import *
import sys
from waraamo.model.user import User
class TestLoginController(TestController):
def setUp(self):
# TODO: assert that we are using the test database so we
# don't accidentally fuck up the production database!
pass
## def test_index(self):
## response = self.app.get(url_for(controller='login'))
# Test response...
def test_registration(self):
escaped_test_login = h.escape_once(TEST_LOGIN.lower())
# Delete the test user if it's there already.
db = waraamo.model.db
#user = db.get_user_by_login(escaped_test_login)
#if user is not None:
# db.delete_user(user)
response = self.app.get(url_for(controller='login', action='registration'))
self.assert_('Required Information' in response)
self.assert_('Password' in response)
form = response.forms[0]
form.set('login', 'averymuchtoolongloginname123456')
form.set('email', 'foobar@foo')
form.set('password', '')
form.set('confirm_password', '')
form.set('phone', '1234567')
form.set('user_agreed', 'check')
response = form.submit()
response.mustcontain('Enter a value less than 20 characters long')
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('email', 'foobar@foo')
form.set('password', '')
form.set('confirm_password', '')
form.set('phone', '')
form.set('user_agreed', 'check')
response = form.submit()
response.mustcontain('Address is not valid.')
# The password fields:
response.mustcontain('Field must not be empty.')
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('email', 'foobar@foo')
form.set('password', 'password')
form.set('confirm_password', 'wrong')
form.set('phone', '1234567')
form.set('user_agreed', 'check')
response = form.submit()
#response.showbrowser()
response.mustcontain("Fields do not match")
#response.mustcontain("Finnish zip code has 5 numbers.")
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('email', 'foobar@foo.fi')
form.set('password', 'password')
form.set('confirm_password', 'password')
form.set('phone', '1234567')
form.set('captcha_guess', 'wrong123')
form.set('dob_day', '1')
form.set('dob_month', '1')
form.set('dob_year', '2004')
form.set('user_agreed', 'check')
response = form.submit()
#response.showbrowser()
response.mustcontain("Text do not match with the text in the image.")
# invalid date
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('email', 'foobar@foo.fi')
form.set('password', 'password')
form.set('confirm_password', 'password')
form.set('phone', '1234567')
form.set('captcha_guess', 'tstvalue')
form.set('dob_day', '31')
form.set('dob_month', '2')
form.set('dob_year', '2004')
form.set('user_agreed', 'check')
response = form.submit()
response.mustcontain("Invalid date.")
# Now create the user.
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('email', 'foobar@foo.fi')
form.set('password', 'password')
form.set('confirm_password', 'password')
form.set('phone', '1234567')
form.set('captcha_guess', 'tstvalue')
form.set('dob_day', '1')
form.set('dob_month', '1')
form.set('dob_year', '2004')
form.set('user_agreed', 'check')
response = form.submit()
#response.showbrowser()
response = response.follow()
response.mustcontain('User created, you can now login to your account.')
# Try to create a new user with the same login.
response = self.app.get(url_for(controller='login', action='registration'))
self.assert_('Required Information' in response)
self.assert_('Password' in response)
form = response.forms[0]
form.set('login', TEST_LOGIN.encode('utf8'))
form.set('captcha_guess', 'tstvalue')
response = form.submit()
response.mustcontain('User name not available')
# Have to create the db again because SQLAlchemy crashes due to
# mappings created by the form validator at form.py. They probably
# mess the mappers created for this db instance and they need to
# be recreated.
db = waraamo.model.db
#user = db.get_user_by_login(escaped_test_login)
#db.delete_user(user)