# -*- 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)