From 859a72feb73f197debcb05d5356d7314f577b07e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 03 2016 15:09:04 +0000 Subject: [PATCH 1/3] Hide the title of private tickets when linking to them in markdown --- diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 2e28810..694c1fc 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -272,13 +272,18 @@ def _obj_anchor_tag(user, namespace, repo, obj, text): url = flask.url_for( 'view_issue', username=user, namespace=namespace, repo=repo, issueid=obj.id) + if obj.private: + title = 'Private issue' + else: + title = obj.title else: url = flask.url_for( 'request_pull', username=user, namespace=namespace, repo=repo, requestid=obj.id) + title = obj.title element = markdown.util.etree.Element("a") element.set('href', url) - element.set('title', obj.title) + element.set('title', title) element.text = text return element From dc35b06248d82a930be8a2d745e24347547bc4cf Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 03 2016 15:16:39 +0000 Subject: [PATCH 2/3] Add some unit-tests for private issue linked to in markdown --- diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 0ad9deb..e7cced9 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -2605,6 +2605,20 @@ class PagureLibtests(tests.Modeltests): self.assertEqual(iss.id, 7) self.assertEqual(iss.title, 'test issue #7') + iss = pagure.lib.new_issue( + issue_id=8, + session=self.session, + repo=item, + title='private issue #8', + content='Private content test issue #8 in forked repo', + user='pingou', + private=True, + ticketfolder=None, + ) + self.session.commit() + self.assertEqual(iss.id, 8) + self.assertEqual(iss.title, 'private issue #8') + texts = [ 'foo bar test#1 see?', 'foo bar pingou/test#2 I mean, really', @@ -2614,7 +2628,8 @@ class PagureLibtests(tests.Modeltests): 'foo bar fork/user/ns/test#5 bouza!', 'foo bar fork/pingou/ns/test#7 bouza!', 'test#1 bazinga!', - 'pingou opened the PR forks/pingou/test#2' + 'pingou opened the PR forks/pingou/test#2', + 'fork/pingou/ns/test#8 is private', ] expected = [ # 'foo bar test#1 see?', @@ -2645,7 +2660,10 @@ class PagureLibtests(tests.Modeltests): # 'pingou opened the PR forks/pingou/test#2' '

pingou opened the PR pingou/test#2

' + 'title="test pull-request in fork">pingou/test#2

', + # 'fork/pingou/ns/test#8 is private', + '

pingou/ns/test#8 is private

', ] with pagure.APP.app_context(): From e1630ca0a0bff7633c9cedcf44a04e25ec920dfa Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Nov 03 2016 20:17:33 +0000 Subject: [PATCH 3/3] Add unit tests for pfmarkdown's _obj_anchor_tag Signed-off-by: Jeremy Cline --- diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 694c1fc..f7824d3 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -267,7 +267,12 @@ def _pr_exists(user, namespace, repo, idx): def _obj_anchor_tag(user, namespace, repo, obj, text): - """ Utility method generating the link to an issue or a PR. """ + """ + Utility method generating the link to an issue or a PR. + + :return: An element tree containing the href to the issue or PR + :rtype: xml.etree.ElementTree.Element + """ if obj.isa == 'issue': url = flask.url_for( 'view_issue', username=user, namespace=namespace, repo=repo, diff --git a/tests/test_pfmarkdown.py b/tests/test_pfmarkdown.py new file mode 100644 index 0000000..de9329d --- /dev/null +++ b/tests/test_pfmarkdown.py @@ -0,0 +1,55 @@ +import unittest +from xml.etree import ElementTree + +from mock import patch, Mock + +from pagure import pfmarkdown +from pagure.lib import model + + +@patch('pagure.pfmarkdown.flask.url_for', Mock(return_value='http://eh/')) +class TestObjAnchorTag(unittest.TestCase): + """ + A set of tests for the pagure.pfmarkdown._obj_anchor_tag function + """ + + def test_obj_anchor_tag_issue(self): + """Assert links to issues are generated correctly""" + issue = model.Issue( + title='The issue summary', + content='The issue description', + ) + expected_markup = ('' + 'My Issue') + element = pfmarkdown._obj_anchor_tag( + 'jcline', None, None, issue, 'My Issue') + + self.assertEqual(expected_markup, ElementTree.tostring(element)) + + def test_obj_anchor_tag_private_issue(self): + """Assert links to private issues hide the title""" + issue = model.Issue( + title='The private issue summary', + content='The issue description', + private=True + ) + expected_markup = ('' + 'My Issue') + element = pfmarkdown._obj_anchor_tag( + 'jcline', None, None, issue, 'My Issue') + + self.assertEqual(expected_markup, ElementTree.tostring(element)) + + def test_obj_anchor_tag_pr(self): + """Assert links to pull requests are generated correctly""" + pr = model.PullRequest(title='The pull request summary') + expected_markup = ('My Pull Request') + element = pfmarkdown._obj_anchor_tag( + 'jcline', None, None, pr, 'My Pull Request') + + self.assertEqual(expected_markup, ElementTree.tostring(element)) + + +if __name__ == '__main__': + unittest.main()