def test_save_milestone(self): map = MilestoneAdminPanel(self.env) old_name = 'milestone2' new_name = 'mile stone 6' milestone = Milestone(self.env, old_name) self.assertEqual(old_name, milestone.name) req = MockRequest(self.env, method='POST', args={ 'name': ' milestone1 ', 'save': True }) with self.assertRaises(ResourceExistsError) as cm: map.render_admin_panel(req, 'ticket', 'milestone', old_name) self.assertIn('Milestone "milestone1" already exists', unicode(cm.exception)) req = MockRequest(self.env, method='POST', args={ 'name': ' mile \t stone \t 6 ', 'save': True }) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', old_name) self.assertIn('Your changes have been saved.', req.chrome['notices']) milestone = Milestone(self.env, new_name) self.assertEqual(new_name, milestone.name) self.assertRaises(ResourceNotFound, map.render_admin_panel, req, 'ticket', 'milestone', old_name) self.assertRaises(ResourceNotFound, Milestone, self.env, old_name)
def test_default_view(self): panel = MilestoneAdminPanel(self.env) req = MockRequest(self.env) template, data = panel.render_admin_panel(req, 'ticket', 'milestone', None) self.assertEqual('admin_milestones.html', template) self.assertEqual('list', data['view']) self.assertEqual('/trac.cgi/query?group=status&milestone=blah', data['query_href']('blah'))
def test_user_with_ticket_admin_can_view(self): """User with MILESTONE_VIEW and TICKET_ADMIN can view.""" PermissionSystem(self.env).grant_permission('user1', 'TICKET_ADMIN') req = MockRequest(self.env, authname='user1') rv = MilestoneAdminPanel(self.env).get_admin_panels(req) self.assertEqual([('ticket', "Ticket System", 'milestones', "Milestones")], list(rv))
def test_add_milestone_with_spaces(self): name = 'mile stone 5' map = MilestoneAdminPanel(self.env) req = MockRequest(self.env, method='POST', args={'name': ' mile \t stone \t 5 ', 'add': True}) self.assertRaises(ResourceNotFound, Milestone, self.env, name) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', None) self.assertIn('The milestone "mile stone 5" has been added.', req.chrome['notices']) milestone = Milestone(self.env, name) self.assertEqual(name, milestone.name) with self.assertRaises(ResourceExistsError) as cm: map.render_admin_panel(req, 'ticket', 'milestone', None) self.assertIn('Milestone "mile stone 5" already exists', unicode(cm.exception))
def test_set_default_retarget_to_requires_ticket_admin(self): """Setting default retarget milestone requires TICKET_ADMIN.""" PermissionSystem(self.env).grant_permission('user1', 'MILESTONE_ADMIN') req = MockRequest(self.env, authname='user1', method='POST', args={'retarget_to': 'milestone1', 'apply': True}) self.assertNotIn('TICKET_ADMIN', req.perm) with self.assertRaises(PermissionError): MilestoneAdminPanel(self.env).render_admin_panel( req, 'ticket', 'milestone', None)
def test_set_default_retarget_to(self): name = 'milestone2' config_key = 'default_retarget_to' map = MilestoneAdminPanel(self.env) req = MockRequest(self.env, method='POST', args={'retarget_default': name, 'apply': True}) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', None) self.assertEqual(name, self.env.config.get('milestone', config_key))
def test_add_milestone(self): name = 'milestone5' map = MilestoneAdminPanel(self.env) req = MockRequest(self.env, method='POST', args={'name': name, 'add': True}) self.assertRaises(ResourceNotFound, Milestone, self.env, name) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', None) milestone = Milestone(self.env, name) self.assertEqual(name, milestone.name)
def test_set_default_retarget_to(self): """Set default retarget milestone.""" name = 'milestone2' config_key = 'default_retarget_to' PermissionSystem(self.env).grant_permission('user1', 'TICKET_ADMIN') req = MockRequest(self.env, authname='user1', method='POST', args={'retarget_default': name, 'apply': True}) self.assertEqual('', self.env.config.get('ticket', config_key)) with self.assertRaises(RequestDone): MilestoneAdminPanel(self.env).render_admin_panel( req, 'ticket', 'milestone', None) self.assertIn('Your changes have been saved.', req.chrome['notices']) self.assertEqual([], req.chrome['warnings']) self.assertEqual(name, self.env.config.get('milestone', config_key))
def test_remove_default_milestone(self): name = 'milestone2' map = MilestoneAdminPanel(self.env) self.env.config.set('ticket', 'default_milestone', 'milestone2') self.env.config.set('milestone', 'default_retarget_to', 'milestone2') req = MockRequest(self.env, method='POST', args={'sel': name, 'remove': True}) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', None) self.assertEqual('', self.env.config.get('ticket', 'default_milestone')) self.assertEqual('', self.env.config.get('milestone', 'default_retarget_to'))
def test_remove_default_milestone(self): name = 'milestone2' map = MilestoneAdminPanel(self.env) self.env.config.set('ticket', 'default_milestone', 'milestone2') self.env.config.set('milestone', 'default_retarget_to', 'milestone2') req = MockRequest(self.env, method='POST', args={'sel': name, 'remove': True}) self.assertRaises(RequestDone, map.render_admin_panel, req, 'ticket', 'milestone', None) self.assertIn('Your changes have been saved.', req.chrome['notices']) self.assertEqual([], req.chrome['warnings']) self.assertEqual('', self.env.config.get('ticket', 'default_milestone')) self.assertEqual('', self.env.config.get('milestone', 'default_retarget_to'))
def test_set_default_milestone(self): """Set default milestone.""" name = 'milestone2' config_key = 'default_milestone' PermissionSystem(self.env).grant_permission('user1', 'TICKET_ADMIN') req = MockRequest(self.env, authname='user1', method='POST', args={ 'ticket_default': name, 'apply': True }) self.assertEqual('', self.env.config.get('ticket', config_key)) with self.assertRaises(RequestDone): MilestoneAdminPanel(self.env).render_admin_panel( req, 'ticket', 'milestone', None) self.assertEqual(name, self.env.config.get('ticket', config_key))
def __init__(self, env): TracAdmin.__init__(self, env) self.env = open_environment(env) # new style, as of trac:changeset:7677 # see trac:#7770 # for now, support both use-cases if not hasattr(self, 'get_component_list'): # TODO: create these functions from trac.ticket.admin import ComponentAdminPanel from trac.ticket.admin import MilestoneAdminPanel from trac.wiki.admin import WikiAdmin self.ComponentAdminPanel = ComponentAdminPanel(self.env) self.get_component_list = self.ComponentAdminPanel.get_component_list self._do_component_remove = self.ComponentAdminPanel._do_remove self.MilestoneAdminPanel = MilestoneAdminPanel(self.env) self.get_milestone_list = self.MilestoneAdminPanel.get_milestone_list self._do_milestone_remove = self.MilestoneAdminPanel._do_remove self.WikiAdmin = WikiAdmin(self.env) self._do_wiki_load = self.WikiAdmin.load_pages
def test_user_without_milestone_or_ticket_admin_cannot_view(self): """User without MILESTONE_ADMIN or TICKET_ADMIN cannot view.""" req = MockRequest(self.env, authname='user1') rv = MilestoneAdminPanel(self.env).get_admin_panels(req) self.assertEqual([], list(rv))