From dee1d10f6aa1c4ba49c99e8a155ac35cb7ac11e5 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jul 17 2018 13:06:51 +0000 Subject: Fix the subscribe button on the PR page Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/api/fork.py b/pagure/api/fork.py index 687bbc0..ee8f040 100644 --- a/pagure/api/fork.py +++ b/pagure/api/fork.py @@ -849,7 +849,8 @@ def api_subscribe_pull_request( raise pagure.exceptions.APIError( 404, error_code=APIERROR.EPULLREQUESTSDISABLED) - if flask.g.token.project and repo != flask.g.token.project: + if flask.g.token and flask.g.token.project \ + and repo != flask.g.token.project: raise pagure.exceptions.APIError( 401, error_code=APIERROR.EINVALIDTOK) diff --git a/pagure/templates/pull_request.html b/pagure/templates/pull_request.html index 8c17f82..3ecb45a 100644 --- a/pagure/templates/pull_request.html +++ b/pagure/templates/pull_request.html @@ -1486,7 +1486,7 @@ function updateHighlight(onload) { } $(document).ready(function () { - {% if authenticated and pull_request %} + {% if g.authenticated and pull_request %} function set_up_subcribed() { $("#subcribe-btn").click(function(){ var _url = "{{ url_for( diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index 65f1b82..555a15a 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -1128,6 +1128,77 @@ class PagureFlaskApiForktests(tests.Modeltests): pagure.lib.get_watch_list(self.session, request), set(['pingou'])) + @patch('pagure.lib.git.update_git') + @patch('pagure.lib.notify.send_email') + def test_api_subscribe_pull_request_logged_in(self, p_send_email, p_ugt): + """ Test the api_subscribe_pull_request method of the flask api + when the user is logged in via the UI. """ + p_send_email.return_value = True + p_ugt.return_value = True + + item = pagure.lib.model.User( + user='bar', + fullname='bar foo', + password='foo', + default_email='bar@bar.com', + ) + self.session.add(item) + item = pagure.lib.model.UserEmail( + user_id=3, + email='bar@bar.com') + self.session.add(item) + + self.session.commit() + + tests.create_projects(self.session) + tests.create_tokens(self.session, user_id=3) + tests.create_tokens_acl(self.session) + + # Create pull-request + repo = pagure.lib.get_authorized_project(self.session, 'test') + req = pagure.lib.new_pull_request( + session=self.session, + repo_from=repo, + branch_from='feature', + repo_to=repo, + branch_to='master', + title='test pull-request', + user='pingou', + requestfolder=None, + ) + self.session.commit() + self.assertEqual(req.id, 1) + self.assertEqual(req.title, 'test pull-request') + + # Check subscribtion before + repo = pagure.lib.get_authorized_project(self.session, 'test') + request = pagure.lib.search_pull_requests( + self.session, project_id=1, requestid=1) + self.assertEqual( + pagure.lib.get_watch_list(self.session, request), + set(['pingou'])) + + # Subscribe + user = tests.FakeUser(username='foo') + with tests.user_set(self.app.application, user): + data = {'status': True} + output = self.app.post( + '/api/0/test/pull-request/1/subscribe', data=data) + self.assertEqual(output.status_code, 200) + data = json.loads(output.get_data(as_text=True)) + self.assertDictEqual( + data, + {'message': 'You are now watching this pull-request'} + ) + + # Check subscribtions after + repo = pagure.lib.get_authorized_project(self.session, 'test') + request = pagure.lib.search_pull_requests( + self.session, project_id=1, requestid=1) + self.assertEqual( + pagure.lib.get_watch_list(self.session, request), + set(['pingou', 'foo'])) + @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) def test_api_pull_request_open_invalid_project(self): """ Test the api_pull_request_create method of the flask api when