From 9ac67d69d09ae51528e64b6403cd2fb512b1c76f Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Sep 21 2018 19:47:42 +0000 Subject: [PATCH 1/2] Fix creating remote PRs Since the template was not passing the branch_to information, the form would not validate and we were no longer able to create remote PR. This commit fixes this small annoyance. Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/templates/repo_new_pull_request.html b/pagure/templates/repo_new_pull_request.html index 93bd759..378ce6a 100644 --- a/pagure/templates/repo_new_pull_request.html +++ b/pagure/templates/repo_new_pull_request.html @@ -71,6 +71,7 @@ namespace=repo.namespace, confirm=True) }}" method="post"> + {% else %}
Overview - test - Pagure', output_text ) + @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) + @patch('pagure.lib.tasks_services.trigger_ci_build') + def test_new_remote_pr_ci_off(self, trigger_ci): + """ Test creating a new remote PR when CI is not configured. """ + + tests.create_projects(self.session) + tests.create_projects_git( + os.path.join(self.path, 'requests'), bare=True) + self.set_up_git_repo() + + # Before + self.session = pagure.lib.create_session(self.dbpath) + project = pagure.lib.get_authorized_project(self.session, 'test') + self.assertEqual(len(project.requests), 0) + + # Create a remote PR + user = tests.FakeUser(username='foo') + with tests.user_set(self.app.application, user): + + csrf_token = self.get_csrf() + data = { + 'csrf_token': csrf_token, + 'title': 'Remote PR title', + 'branch_from': 'feature', + 'branch_to': 'master', + 'git_repo': os.path.join(self.newpath, 'test'), + } + output = self.app.post( + '/test/diff/remote', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + + data['confirm'] = 1 + output = self.app.post( + '/test/diff/remote', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + '#1', + output_text) + self.assertIn( + '
\n', output_text) + self.assertIn( + '
\n', output_text) + self.assertNotIn( + '
\n', output_text) + + # Remote PR Created + self.session = pagure.lib.create_session(self.dbpath) + project = pagure.lib.get_authorized_project(self.session, 'test') + self.assertEqual(len(project.requests), 1) + trigger_ci.assert_not_called() + + @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) + @patch('pagure.lib.tasks_services.trigger_ci_build') + def test_new_remote_pr_ci_on(self, trigger_ci): + """ Test creating a new remote PR when CI is configured. """ + + tests.create_projects(self.session) + tests.create_projects_git( + os.path.join(self.path, 'requests'), bare=True) + self.set_up_git_repo() + + # Before + self.session = pagure.lib.create_session(self.dbpath) + project = pagure.lib.get_authorized_project(self.session, 'test') + self.assertEqual(len(project.requests), 0) + + # Create a remote PR + user = tests.FakeUser(username='pingou') + with tests.user_set(self.app.application, user): + csrf_token = self.get_csrf() + + # Activate CI hook + data = { + 'active_pr': 'y', + 'ci_url': 'https://jenkins.fedoraproject.org', + 'ci_job': 'test/job', + 'ci_type': 'jenkins', + 'csrf_token': csrf_token, + } + output = self.app.post( + '/test/settings/Pagure CI', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + + user = tests.FakeUser(username='foo') + with tests.user_set(self.app.application, user): + data = { + 'csrf_token': csrf_token, + 'title': 'Remote PR title', + 'branch_from': 'feature', + 'branch_to': 'master', + 'git_repo': os.path.join(self.newpath, 'test'), + } + output = self.app.post( + '/test/diff/remote', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + + data['confirm'] = 1 + output = self.app.post( + '/test/diff/remote', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + '#1', + output_text) + self.assertIn( + '
\n', output_text) + self.assertIn( + '
\n', output_text) + self.assertNotIn( + '
\n', output_text) + + # Remote PR Created + self.session = pagure.lib.create_session(self.dbpath) + project = pagure.lib.get_authorized_project(self.session, 'test') + self.assertEqual(len(project.requests), 1) + trigger_ci.assert_not_called() + if __name__ == '__main__': unittest.main(verbosity=2)