diff --git a/rhodecode/tests/functional/test_users.py b/rhodecode/tests/functional/test_admin_users.py copy from rhodecode/tests/functional/test_users.py copy to rhodecode/tests/functional/test_admin_users.py --- a/rhodecode/tests/functional/test_users.py +++ b/rhodecode/tests/functional/test_admin_users.py @@ -1,6 +1,9 @@ from rhodecode.tests import * +from rhodecode.model.db import User +from rhodecode.lib.auth import check_password +from sqlalchemy.orm.exc import NoResultFound -class TestUsersController(TestController): +class TestAdminUsersController(TestController): def test_index(self): response = self.app.get(url('users')) @@ -10,7 +13,60 @@ class TestUsersController(TestController response = self.app.get(url('formatted_users', format='xml')) def test_create(self): - response = self.app.post(url('users')) + self.log_user() + username = 'newtestuser' + password = 'test12' + name = 'name' + lastname = 'lastname' + email = 'mail@mail.com' + + response = self.app.post(url('users'), {'username':username, + 'password':password, + 'name':name, + 'active':True, + 'lastname':lastname, + 'email':email}) + + + assert '''created user %s''' % (username) in response.session['flash'][0], 'No flash message about new user' + + new_user = self.sa.query(User).filter(User.username == username).one() + + + assert new_user.username == username, 'wrong info about username' + assert check_password(password, new_user.password) == True , 'wrong info about password' + assert new_user.name == name, 'wrong info about name' + assert new_user.lastname == lastname, 'wrong info about lastname' + assert new_user.email == email, 'wrong info about email' + + + response.follow() + response = response.follow() + assert """edit">newtestuser""" in response.body + + def test_create_err(self): + self.log_user() + username = 'new_user' + password = '' + name = 'name' + lastname = 'lastname' + email = 'errmail.com' + + response = self.app.post(url('users'), {'username':username, + 'password':password, + 'name':name, + 'active':False, + 'lastname':lastname, + 'email':email}) + + assert """Invalid username""" in response.body + assert """Please enter a value""" in response.body + assert """An email address must contain a single @""" in response.body + + def get_user(): + self.sa.query(User).filter(User.username == username).one() + + self.assertRaises(NoResultFound, get_user), 'found user in database' def test_new(self): response = self.app.get(url('new_user')) @@ -25,7 +81,27 @@ class TestUsersController(TestController response = self.app.post(url('user', id=1), params=dict(_method='put')) def test_delete(self): - response = self.app.delete(url('user', id=1)) + self.log_user() + username = 'newtestuserdeleteme' + password = 'test12' + name = 'name' + lastname = 'lastname' + email = 'todeletemail@mail.com' + + response = self.app.post(url('users'), {'username':username, + 'password':password, + 'name':name, + 'active':True, + 'lastname':lastname, + 'email':email}) + + response = response.follow() + + new_user = self.sa.query(User).filter(User.username == username).one() + response = self.app.delete(url('user', id=new_user.user_id)) + + assert """sucessfully deleted user""" in response.session['flash'][0], 'No info about user deletion' + def test_delete_browser_fakeout(self): response = self.app.post(url('user', id=1), params=dict(_method='delete'))