diff --git a/tests/test_pagure_flask_ui_groups.py b/tests/test_pagure_flask_ui_groups.py index efb2a9e..6505cbc 100644 --- a/tests/test_pagure_flask_ui_groups.py +++ b/tests/test_pagure_flask_ui_groups.py @@ -152,6 +152,97 @@ class PagureFlaskGroupstests(tests.Modeltests): ' Groups 2', output.data) + def test_edit_group(self): + """ Test the edit_group endpoint. """ + + output = self.app.get('/group/test_group/edit') + self.assertEqual(output.status_code, 302) + + user = tests.FakeUser() + with tests.user_set(pagure.APP, user): + output = self.app.get('/group/test_group/edit') + self.assertEqual(output.status_code, 404) + self.assertIn('

Group not found

', output.data) + + self.test_add_group() + + user.username = 'foo' + with tests.user_set(pagure.APP, user): + output = self.app.get('/group/foo/edit') + self.assertEqual(output.status_code, 404) + self.assertIn('

Group not found

', output.data) + + output = self.app.get('/group/test_group/edit') + self.assertEqual(output.status_code, 200) + self.assertIn( + 'Edit group: test_group - Pagure', + output.data) + self.assertIn( + '
', + output.data) + self.assertIn( + '', output.data) + + csrf_token = output.data.split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + + # Missing CSRF + data = { + 'group_name': 'test_group', + 'display_name': 'Test Group edited', + 'description': 'This is a group for the tests edited', + } + + output = self.app.post( + '/group/test_group/edit', data=data, follow_redirects=True) + #print output.data + self.assertEqual(output.status_code, 200) + self.assertIn( + 'Edit group: test_group - Pagure', + output.data) + self.assertIn( + '', + output.data) + self.assertIn( + '', output.data) + + # User not allowed + data['csrf_token'] = csrf_token + + output = self.app.post( + '/group/test_group/edit', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn( + 'Group - Pagure', + output.data) + self.assertIn( + '\n You are not ' + 'allowed to edit this group', output.data) + self.assertIn( + ' ' + ' test_group', output.data) + + user.username = 'pingou' + with tests.user_set(pagure.APP, user): + # Invalid repo + output = self.app.post( + '/group/bar/edit', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 404) + self.assertIn('

Group not found

', output.data) + + output = self.app.post( + '/group/test_group/edit', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn('Group - Pagure', output.data) + self.assertIn( + '' + '  test_group', output.data) + self.assertIn( + 'Group "Test Group edited" (test_group) edited', + output.data) + def test_group_delete(self): """ Test the group_delete endpoint. """ output = self.app.post('/group/foo/delete') diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index f566487..6952975 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -2228,6 +2228,71 @@ class PagureLibtests(tests.Modeltests): group = pagure.lib.search_groups(self.session, group_name='foo') self.assertEqual(len(group.users), 1) + def test_edit_group_info(self): + """ Test the edit_group_info method of pagure.lib. """ + self.test_add_group() + group = pagure.lib.search_groups(self.session, group_name='foo') + self.assertNotEqual(group, None) + self.assertEqual(group.group_name, 'foo') + + # Invalid new user + self.assertRaises( + pagure.exceptions.PagureException, + pagure.lib.edit_group_info, + self.session, + group=group, + display_name='edited name', + description=None, + user='foo', + is_admin=False, + ) + + # Invalid user + self.assertRaises( + pagure.exceptions.PagureException, + pagure.lib.edit_group_info, + self.session, + group=group, + display_name='edited name', + description=None, + user='foobar', + is_admin=False, + ) + + # User not allowed + self.assertRaises( + pagure.exceptions.PagureException, + pagure.lib.edit_group_info, + self.session, + group=group, + display_name='edited name', + description=None, + user='bar', + is_admin=False, + ) + + msg = pagure.lib.edit_group_info( + self.session, + group=group, + display_name='edited name', + description=None, + user='pingou', + is_admin=False, + ) + self.session.commit() + self.assertEqual(msg, 'Group "edited name" (foo) edited') + + msg = pagure.lib.edit_group_info( + self.session, + group=group, + display_name='edited name', + description=None, + user='pingou', + is_admin=False, + ) + self.session.commit() + self.assertEqual(msg, 'Nothing changed') + def test_add_group_to_project(self): """ Test the add_group_to_project method of pagure.lib. """ tests.create_projects(self.session)