26
26
from trac.web.api import parse_arg_list
27
27
from trac.web.chrome import web_context
28
28
from trac.web.tests.api import RequestHandlerPermissionsTestCaseBase
29
from trac.wiki.formatter import format_to_oneliner
29
from trac.wiki.formatter import format_to_html
32
32
mock_repotype = 'mock:' + __name__
48
48
implements(IPermissionPolicy)
50
50
def check_permission(self, action, username, resource, perm):
51
if action == 'LOG_VIEW' and resource.realm == 'repository':
51
if action == 'LOG_VIEW':
52
if resource.realm != 'source':
53
raise AssertionError('Invalid realm %r' % resource.realm)
54
if resource.id == 'deny' or resource.id.endswith('/deny'):
56
if resource.id == 'allow' or resource.id.endswith('/allow'):
52
58
return username != 'anonymous'
495
501
def test_log_link_checking_repository_resource(self):
496
502
self.env.config.set('trac', 'permission_policies',
497
503
'TestLogModulePermissionPolicy, DefaultPermissionPolicy')
505
self.assertIn(' title="No permission to view change log"',
506
self._format_to_html('anonymous', 'log:mock@42-43'))
507
self.assertIn(' href="/trac.cgi/log/mock/allow?revs=42-43"',
508
self._format_to_html('anonymous',
509
'log:mock/allow@42-43'))
510
self.assertIn(' href="/trac.cgi/log/mock/?revs=42-43"',
511
self._format_to_html('blah', 'log:mock@42-43'))
512
self.assertIn(' title="No permission to view change log"',
513
self._format_to_html('blah', 'log:mock/deny'))
515
def _format_to_html(self, authname, wiki):
498
516
resource = Resource('wiki', 'WikiStart')
500
req = MockRequest(self.env, authname='anonymous')
501
rendered = unicode(format_to_oneliner(self.env,
502
web_context(req, resource),
504
self.assertIn(' title="No permission to view change log"', rendered)
506
req = MockRequest(self.env, authname='blah')
507
rendered = unicode(format_to_oneliner(self.env,
508
web_context(req, resource),
510
self.assertIn(' href="/trac.cgi/log/mock/?revs=42-43"', rendered)
517
req = MockRequest(self.env, authname=authname)
518
return unicode(format_to_html(self.env, web_context(req, resource),
513
522
def test_suite():