diff --git a/tests/test_progit_flask_ui_groups.py b/tests/test_progit_flask_ui_groups.py
index c56385a..83fd232 100644
--- a/tests/test_progit_flask_ui_groups.py
+++ b/tests/test_progit_flask_ui_groups.py
@@ -56,6 +56,91 @@ class PagureFlaskGroupstests(tests.Modeltests):
self.assertIn('
Groups
', output.data)
self.assertIn('0 groups.
', output.data)
+ def test_add_group(self):
+ """ Test the add_group endpoint. """
+ output = self.app.get('/group/add')
+ self.assertEqual(output.status_code, 302)
+
+ user = tests.FakeUser()
+ with tests.user_set(pagure.APP, user):
+ output = self.app.get('/group/add')
+ self.assertEqual(output.status_code, 403)
+
+ user.username = 'pingou'
+ with tests.user_set(pagure.APP, user):
+ output = self.app.get('/group/add')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create group
', output.data)
+ self.assertNotIn(
+ '', output.data)
+
+ csrf_token = output.data.split(
+ 'name="csrf_token" type="hidden" value="')[1].split('">')[0]
+
+ data = {
+ }
+
+ # Insufficient input
+ output = self.app.post('/group/add', data=data)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create group
', output.data)
+ self.assertEqual(output.data.count(
+ 'This field is required.'), 1)
+
+ data = {
+ 'group_name': 'test group',
+ }
+
+ # Missing CSRF
+ output = self.app.post('/group/add', data=data)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create group
', output.data)
+ self.assertEqual(output.data.count(
+ 'This field is required.'), 0)
+
+ data['csrf_token'] = csrf_token
+
+ # All good
+ output = self.app.post(
+ '/group/add', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ 'User `pingou` added to the group '
+ '`test group`.', output.data)
+ self.assertIn(
+ 'Group `test group` created.',
+ output.data)
+ self.assertIn('Groups
', output.data)
+ self.assertIn('1 groups.
', output.data)
+
+ user = tests.FakeUser(
+ username='pingou',
+ groups=pagure.APP.config['ADMIN_GROUP'])
+ with tests.user_set(pagure.APP, user):
+ output = self.app.get('/group/add')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create group
', output.data)
+ self.assertIn('', output.data)
+
+ data = {
+ 'group_name': 'test admin group',
+ 'group_type': 'admin',
+ 'csrf_token': csrf_token,
+ }
+
+ # All good
+ output = self.app.post(
+ '/group/add', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ 'User `pingou` added to the group '
+ '`test admin group`.', output.data)
+ self.assertIn(
+ 'Group `test admin group` created.',
+ output.data)
+ self.assertIn('Groups
', output.data)
+ self.assertIn('2 groups.
', output.data)
+
if __name__ == '__main__':
SUITE = unittest.TestLoader().loadTestsFromTestCase(