from rhodecode.tests import * from rhodecode.model.db import User from rhodecode.lib.auth import check_password from sqlalchemy.orm.exc import NoResultFound class TestAdminUsersController(TestController): def test_index(self): response = self.app.get(url('users')) # Test response... def test_index_as_xml(self): response = self.app.get(url('formatted_users', format='xml')) def test_create(self): self.log_user() username = 'newtestuser' password = 'test12' password_confirmation = password name = 'name' lastname = 'lastname' email = 'mail@mail.com' response = self.app.post(url('users'), {'username':username, 'password':password, 'password_confirmation':password_confirmation, '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')) def test_new_as_xml(self): response = self.app.get(url('formatted_new_user', format='xml')) def test_update(self): response = self.app.put(url('user', id=1)) def test_update_browser_fakeout(self): response = self.app.post(url('user', id=1), params=dict(_method='put')) def test_delete(self): 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, 'password_confirmation':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 """successfully 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')) def test_show(self): response = self.app.get(url('user', id=1)) def test_show_as_xml(self): response = self.app.get(url('formatted_user', id=1, format='xml')) def test_edit(self): response = self.app.get(url('edit_user', id=1)) def test_edit_as_xml(self): response = self.app.get(url('formatted_edit_user', id=1, format='xml'))