diff --git a/tests/test_pagure_flask_ui_login.py b/tests/test_pagure_flask_ui_login.py index ed0ad95..6284bf2 100644 --- a/tests/test_pagure_flask_ui_login.py +++ b/tests/test_pagure_flask_ui_login.py @@ -25,10 +25,13 @@ from mock import patch sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) + import pagure.lib import tests from pagure.lib.repo import PagureRepo +import pagure.ui.login + class PagureFlaskLogintests(tests.Modeltests): """ Tests for flask app controller of pagure """ @@ -46,6 +49,63 @@ class PagureFlaskLogintests(tests.Modeltests): self.app = pagure.APP.test_client() + def test_new_user(self): + """ Test the new_user endpoint. """ + + # Check before: + items = pagure.lib.search_user(self.session) + self.assertEqual(2, len(items)) + + # First access the new user page + output = self.app.get('/user/new') + self.assertEqual(output.status_code, 200) + self.assertIn('New user - Pagure', output.data) + self.assertIn( + '
', output.data) + + # Create the form to send there + + # This has all the data needed + data = { + 'user': 'foo', + 'fullname': 'user foo', + 'email_address': 'foo@example.com', + 'password': 'barpass', + 'confirm_password': 'barpass', + } + + # Submit this form - Doesn't work since there is no csrf token + output = self.app.post('/user/new', data=data) + self.assertEqual(output.status_code, 200) + self.assertIn('New user - Pagure', output.data) + self.assertIn( + '', output.data) + + csrf_token = output.data.split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + + # Submit the form with the csrf token + data['csrf_token'] = csrf_token + output = self.app.post('/user/new', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn('New user - Pagure', output.data) + self.assertIn( + '', output.data) + self.assertIn('Username already taken.', output.data) + + # Submit the form with another user name + data['user'] = 'foouser' + output = self.app.post('/user/new', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn('Login - Pagure', output.data) + self.assertIn( + 'User created, please check your email to activate the account', + output.data) + + # Check after: + items = pagure.lib.search_user(self.session) + self.assertEqual(3, len(items)) + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(PagureFlaskLogintests)