diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py
index f37bdca..7725cf2 100644
--- a/tests/test_pagure_flask_ui_repo.py
+++ b/tests/test_pagure_flask_ui_repo.py
@@ -4146,6 +4146,209 @@ index 0000000..fb7093d
'\n You are now'
' watching this repo.', output.data)
+ def test_delete_report(self):
+ """ Test the delete_report endpoint. """
+
+ output = self.app.post('/test/delete/report')
+ self.assertEqual(output.status_code, 404)
+
+ tests.create_projects(self.session)
+ tests.create_projects_git(self.path, bare=True)
+
+ user = tests.FakeUser()
+ user.username = 'pingou'
+ with tests.user_set(pagure.APP, user):
+
+ output = self.app.get('/new/')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create new Project', output.data)
+
+ csrf_token = output.data.split(
+ 'name="csrf_token" type="hidden" value="')[1].split('">')[0]
+
+ # No report specified
+ data = {
+ 'csrf_token':csrf_token
+ }
+ output = self.app.post(
+ '/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n Unknown report: None',
+ output.data)
+
+ # Report specified not in the project's reports
+ data = {
+ 'csrf_token':csrf_token,
+ 'report': 'foo'
+ }
+ output = self.app.post(
+ '/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n Unknown report: foo',
+ output.data)
+
+ # Create a report
+ project = pagure.lib.get_project(self.session, name='test')
+ self.assertEqual(project.reports, {})
+ name = 'test report'
+ url = '?foo=bar&baz=biz'
+ pagure.lib.save_report(
+ self.session,
+ repo=project,
+ name=name,
+ url=url,
+ username=None
+ )
+ self.session.commit()
+ project = pagure.lib.get_project(self.session, name='test')
+ self.assertEqual(
+ project.reports,
+ {'test report': {'baz': 'biz', 'foo': 'bar'}}
+ )
+
+ # Missing CSRF
+ data = {
+ 'report': 'test report'
+ }
+ output = self.app.post(
+ '/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '
Settings - test - Pagure',
+ output.data)
+
+ project = pagure.lib.get_project(self.session, name='test')
+ self.assertEqual(
+ project.reports,
+ {'test report': {'baz': 'biz', 'foo': 'bar'}}
+ )
+
+ # Delete the report
+ data = {
+ 'csrf_token':csrf_token,
+ 'report': 'test report'
+ }
+ output = self.app.post(
+ '/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n List of reports updated',
+ output.data)
+ project = pagure.lib.get_project(self.session, name='test')
+ self.assertEqual(project.reports, {})
+
+ def test_delete_report_ns_project(self):
+ """ Test the delete_report endpoint on a namespaced project. """
+
+ output = self.app.post('/foo/test/delete/report')
+ self.assertEqual(output.status_code, 404)
+
+ tests.create_projects(self.session)
+ tests.create_projects_git(self.path, bare=True)
+
+ user = tests.FakeUser()
+ user.username = 'pingou'
+ with tests.user_set(pagure.APP, user):
+
+ output = self.app.get('/new/')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create new Project', output.data)
+
+ csrf_token = output.data.split(
+ 'name="csrf_token" type="hidden" value="')[1].split('">')[0]
+
+ item = pagure.lib.model.Project(
+ user_id=1, # pingou
+ namespace='foo',
+ name='test',
+ description='foo project #2',
+ hook_token='aaabbb',
+ )
+ self.session.add(item)
+ self.session.commit()
+ gitrepo = os.path.join(self.path, 'foo', 'test.git')
+ pygit2.init_repository(gitrepo, bare=True)
+
+ # No report specified
+ data = {
+ 'csrf_token':csrf_token
+ }
+ output = self.app.post(
+ '/foo/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n Unknown report: None',
+ output.data)
+
+ # Report specified not in the project's reports
+ data = {
+ 'csrf_token':csrf_token,
+ 'report': 'foo'
+ }
+ output = self.app.post(
+ '/foo/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n Unknown report: foo',
+ output.data)
+
+ # Create a report
+ project = pagure.lib.get_project(
+ self.session, name='test', namespace='foo')
+ self.assertEqual(project.reports, {})
+ name = 'test report'
+ url = '?foo=bar&baz=biz'
+ pagure.lib.save_report(
+ self.session,
+ repo=project,
+ name=name,
+ url=url,
+ username=None
+ )
+ self.session.commit()
+ project = pagure.lib.get_project(
+ self.session, name='test', namespace='foo')
+ self.assertEqual(
+ project.reports,
+ {'test report': {'baz': 'biz', 'foo': 'bar'}}
+ )
+
+ # Missing CSRF
+ data = {
+ 'report': 'test report'
+ }
+ output = self.app.post(
+ '/foo/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ 'Settings - foo/test - Pagure',
+ output.data)
+
+ project = pagure.lib.get_project(
+ self.session, name='test', namespace='foo')
+ self.assertEqual(
+ project.reports,
+ {'test report': {'baz': 'biz', 'foo': 'bar'}}
+ )
+
+ # Delete the report
+ data = {
+ 'csrf_token':csrf_token,
+ 'report': 'test report'
+ }
+ output = self.app.post(
+ '/foo/test/delete/report', data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '\n List of reports updated',
+ output.data)
+
+ project = pagure.lib.get_project(
+ self.session, name='test', namespace='foo')
+ self.assertEqual(project.reports, {})
+
+
if __name__ == '__main__':
- SUITE = unittest.TestLoader().loadTestsFromTestCase(PagureFlaskRepotests)
- unittest.TextTestRunner(verbosity=2).run(SUITE)
+ unittest.main(verbosity=2)