def testExtractUniqueValues_DerivedValues(self): cols = ['priority', 'milestone', 'owner', 'status'] users_by_id = { 111L: framework_views.StuffUserView(111, '*****@*****.**', True), 222L: framework_views.StuffUserView(222, '*****@*****.**', True), 333L: framework_views.StuffUserView(333, '*****@*****.**', True), }
def setUp(self): self.alice_view = framework_views.StuffUserView(111, 'alice', True) self.bob_view = framework_views.StuffUserView(222, 'bob', True) self.carol_view = framework_views.StuffUserView(333, 'carol', True) self.project = project_pb2.Project() self.project.project_name = 'proj' self.project.owner_ids.append(111) self.project.committer_ids.append(222) self.project.contributor_ids.append(333)
def testExtractUniqueValues_DerivedValues(self): cols = ['priority', 'milestone', 'owner', 'status'] users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), 222: framework_views.StuffUserView(222, '*****@*****.**', True), 333: framework_views.StuffUserView(333, '*****@*****.**', True), } search_results = [ fake.MakeTestIssue(789, 1, 'sum 1', '', 111, labels='Priority-High Milestone-1.0', derived_labels='Milestone-2.0 Foo', derived_status='Started'), fake.MakeTestIssue( 789, 2, 'sum 2', 'New', 111, labels='Priority-High Milestone-1.0', derived_owner_id=333), # Not seen because of owner_id fake.MakeTestIssue(789, 3, 'sum 3', 'New', 0, labels='Priority-Low Milestone-1.1', derived_owner_id=222), ] column_values = table_view_helpers.ExtractUniqueValues( cols, search_results, users_by_id, self.config, {}) self.assertEquals(4, len(column_values)) self.assertEquals('priority', column_values[0].column_name) self.assertEquals(['High', 'Low'], column_values[0].filter_values) self.assertEquals('milestone', column_values[1].column_name) self.assertEquals(['1.0', '1.1', '2.0'], column_values[1].filter_values) self.assertEquals('owner', column_values[2].column_name) self.assertEquals(['*****@*****.**', '*****@*****.**'], column_values[2].filter_values) self.assertEquals('status', column_values[3].column_name) self.assertEquals(['New', 'Started'], column_values[3].filter_values)
def testExtractUniqueValues_CombinedColumns(self): cols = ['priority/pri', 'owner', 'status', 'stars', 'mstone/milestone'] users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), } issue = fake.MakeTestIssue( 789, 5, 'sum 5', 'New', 111, merged_into=200001, labels='Priority-High Pri-0 Milestone-1.0 mstone-1', star_count=15) column_values = table_view_helpers.ExtractUniqueValues( cols, SEARCH_RESULTS_WITH_LABELS + [issue], users_by_id, self.config, {}) self.assertEquals(5, len(column_values)) self.assertEquals('priority/pri', column_values[0].column_name) self.assertEquals(['0', 'High', 'Low'], column_values[0].filter_values) self.assertEquals('owner', column_values[1].column_name) self.assertEquals(['*****@*****.**'], column_values[1].filter_values) self.assertEquals('status', column_values[2].column_name) self.assertEquals(['New'], column_values[2].filter_values) self.assertEquals('stars', column_values[3].column_name) self.assertEquals([1, 15], column_values[3].filter_values) self.assertEquals('mstone/milestone', column_values[4].column_name) self.assertEquals(['1', '1.0', '1.1'], column_values[4].filter_values)
def testExtractUniqueValues_ExplicitResults(self): cols = ['priority', 'owner', 'status', 'stars', 'mstone', 'foo'] users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), } column_values = table_view_helpers.ExtractUniqueValues( cols, SEARCH_RESULTS_WITH_LABELS, users_by_id, self.config, {}) self.assertEquals(len(cols), len(column_values)) self.assertEquals('priority', column_values[0].column_name) self.assertEquals(['High', 'Low'], column_values[0].filter_values) self.assertEquals('owner', column_values[1].column_name) self.assertEquals(['*****@*****.**'], column_values[1].filter_values) self.assertEquals('status', column_values[2].column_name) self.assertEquals(['New'], column_values[2].filter_values) self.assertEquals('stars', column_values[3].column_name) self.assertEquals([1], column_values[3].filter_values) self.assertEquals('mstone', column_values[4].column_name) self.assertEquals(['1', '1.1'], column_values[4].filter_values) self.assertEquals('foo', column_values[5].column_name) self.assertEquals([], column_values[5].filter_values)
def testIndexOrLexicalList_ApprovalApprover(self): art = art = fake.MakeTestIssue(789, 1, 'sum 2', 'New', 111) art.labels = ['samename-approver-value1'] art.approval_values = [ tracker_pb2.ApprovalValue(approval_id=4, approver_ids=[333]) ] all_field_defs = [ tracker_bizobj.MakeFieldDef(4, 788, 'samename', tracker_pb2.FieldTypes.APPROVAL_TYPE, None, None, False, False, False, None, None, None, False, None, None, None, None, 'cow spots', False) ] users_by_id = { 333: framework_views.StuffUserView(333, '*****@*****.**', True) } accessor = sorting._IndexOrLexicalList([], all_field_defs, 'samename-approver', users_by_id) self.assertEqual(['*****@*****.**', 'value1'], accessor(art)) neg_accessor = MakeDescending(accessor) self.assertEqual([ sorting.DescendingValue('value1'), sorting.DescendingValue('*****@*****.**') ], neg_accessor(art))
def testProcessFormData_RejectUnmodifiedTemplate(self): mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry') mr.perms = permissions.USER_PERMISSIONSET mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) post_data = fake.PostData( template_name=['rutabaga'], summary=['Nya nya I modified the summary'], comment=[self.template.content], status=['New']) self.mox.StubOutWithMock(self.servlet, 'PleaseCorrect') self.servlet.PleaseCorrect( mr, component_required=None, fields=[], initial_blocked_on='', initial_blocking='', initial_cc='', initial_comment=self.template.content, initial_components='', initial_owner='', initial_status='New', initial_summary='Nya nya I modified the summary', initial_hotlists='', labels=[], template_name='rutabaga') self.mox.ReplayAll() url = self.servlet.ProcessFormData(mr, post_data) self.mox.VerifyAll() self.assertEqual('Template must be filled out.', mr.errors.comment) self.assertIsNone(url)
def setUp(self): self.default_cols = 'a b c' self.builtin_cols = 'a b x y z' self.config = tracker_bizobj.MakeDefaultProjectIssueConfig(789) self.art1 = fake.MakeTestIssue( 789, 1, 'a summary', '', 0, derived_owner_id=111, star_count=12, derived_labels='Priority-Medium Hot Mstone-1 Mstone-2', derived_status='Overdue') self.art2 = fake.MakeTestIssue( 789, 1, 'a summary', 'New', 111, star_count=12, merged_into=200001, labels='Priority-Medium Type-DEFECT Hot Mstone-1 Mstone-2') self.users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), }
def testGatherPageData_IncorrectTemplate(self): """The handler shouldn't error out if passed a non-existent template.""" mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) mr.template_name = 'rutabaga' user = self.services.user.TestAddUser('user@invalid', 100) config = self.services.config.GetProjectConfig(mr.cnxn, mr.project_id) config.default_template_for_users = 456 config.default_template_for_developers = 789 self.services.config.StoreConfig(mr.cnxn, config) self.services.template.GetTemplateSetForProject.return_value = [ (1, 'one', False), (2, 'two', True)] self.services.template.GetTemplateByName.return_value = None self.services.template.GetTemplateById.return_value = \ tracker_pb2.TemplateDef(template_id=123, labels=['yo']) self.services.template.GetProjectTemplates.return_value = [ tracker_pb2.TemplateDef(labels=['no']), tracker_pb2.TemplateDef(labels=['maybe'])] self.mox.StubOutWithMock(self.services.user, 'GetUser') self.services.user.GetUser( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(user) self.mox.ReplayAll() page_data = self.servlet.GatherPageData(mr) self.mox.VerifyAll() self.assertTrue(self.services.template.GetTemplateByName.called) self.assertTrue(self.services.template.GetTemplateById.called) self.assertFalse(self.services.template.GetProjectTemplates.called) self.assertEqual(page_data['config'].template_view.label0, 'yo')
def setUp(self): self.project = fake.Project(project_name='proj1') self.commenter_view = framework_views.StuffUserView( 111, '*****@*****.**', True) self.issue = fake.MakeTestIssue(self.project.project_id, 1234, 'summary', 'New', 111) self.detail_url = 'http://test-detail-url.com/id=1234'
def testGatherPageData_DefaultTemplatesNonMember(self, mockUserIsInProject): """If no template is specified, the default one is used based on whether the user is not a project member.""" mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) user = self.services.user.TestAddUser('user@invalid', 100) self.services.template.GetTemplateSetForProject = Mock( return_value=[(1, 'one', False), (2, 'two', True)]) config = self.services.config.GetProjectConfig(mr.cnxn, mr.project_id) config.default_template_for_users = 456 config.default_template_for_developers = 789 self.services.config.StoreConfig(mr.cnxn, config) mockUserIsInProject.return_value = False self.services.template.GetTemplateById = Mock(return_value=self.template) self.mox.StubOutWithMock(self.services.user, 'GetUser') self.services.user.GetUser( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(user) self.mox.ReplayAll() self.servlet.GatherPageData(mr) self.mox.VerifyAll() call_args = self.services.template.GetTemplateById.call_args[0] self.assertEqual(call_args[1], 456)
def CheckRevealAllToMember( self, logged_in_user_id, expected, viewed_user_id=333, group_id=None): user_view = framework_views.StuffUserView( viewed_user_id, '*****@*****.**', True) if group_id: pass # xxx re-implement groups users_by_id = {333: user_view} self.mr.auth.user_id = logged_in_user_id self.mr.auth.effective_ids = {logged_in_user_id} # Assert display name is obscured before the reveal. self.assertEqual('*****@*****.**', user_view.display_name) # Assert profile url contains user ID before the reveal. self.assertEqual('/u/%s/' % viewed_user_id, user_view.profile_url) framework_views.RevealAllEmailsToMembers( self.mr.auth, self.mr.project, users_by_id) self.assertEqual(expected, not user_view.obscure_email) if expected: # Assert display name is now revealed. self.assertEqual('*****@*****.**', user_view.display_name) # Assert profile url contains the email. self.assertEqual('/u/[email protected]/', user_view.profile_url) else: # Assert display name is still hidden. self.assertEqual('*****@*****.**', user_view.display_name) # Assert profile url still contains user ID. self.assertEqual('/u/%s/' % viewed_user_id, user_view.profile_url)
def testFieldDefView_Approval(self): config = _MakeConfig() approver_view = framework_views.StuffUserView( 111, '*****@*****.**', False) user_views = {111: approver_view} view = tracker_views.FieldDefView(self.approval_fd, config, user_views=user_views, approval_def=self.approval_def) self.assertEqual(view.approvers, [approver_view]) self.assertEqual(view.survey, self.approval_def.survey) self.assertEqual(view.survey_questions, [view.survey]) self.approval_def.survey = None view = tracker_views.FieldDefView(self.approval_fd, config, user_views=user_views, approval_def=self.approval_def) self.assertEqual(view.survey, '') self.assertEqual(view.survey_questions, []) self.approval_def.survey = 'Q1\nQ2\nQ3' view = tracker_views.FieldDefView(self.approval_fd, config, user_views=user_views, approval_def=self.approval_def) self.assertEqual(view.survey, self.approval_def.survey) self.assertEqual(view.survey_questions, ['Q1', 'Q2', 'Q3'])
def testGatherUnifiedSettingsPageData(self): mr = self.mr mr.auth.user_view = framework_views.StuffUserView( 100, 'user@invalid', True) mr.auth.user_view.profile_url = '/u/profile/url' userprefs = user_pb2.UserPrefs(prefs=[ user_pb2.UserPrefValue(name='public_issue_notice', value='true') ]) page_data = framework_helpers.UserSettings.GatherUnifiedSettingsPageData( mr.auth.user_id, mr.auth.user_view, mr.auth.user_pb, userprefs) expected_keys = [ 'settings_user', 'settings_user_pb', 'settings_user_is_banned', 'self', 'profile_url_fragment', 'preview_on_hover', 'settings_user_prefs', ] self.assertItemsEqual(expected_keys, list(page_data.keys())) self.assertEqual('profile/url', page_data['profile_url_fragment']) self.assertTrue(page_data['settings_user_prefs'].public_issue_notice) self.assertFalse(page_data['settings_user_prefs'].restrict_new_issues)
def testProcessFormData_RejectPlacedholderSummary(self): mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry') mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) mr.perms = permissions.USER_PERMISSIONSET mr.template_name = 'rutabaga' post_data = fake.PostData( template_name=['rutabaga'], summary=[issueentry.PLACEHOLDER_SUMMARY], comment=['fake comment'], status=['New']) self.mox.StubOutWithMock(self.servlet, 'PleaseCorrect') self.servlet.PleaseCorrect( mr, component_required=None, fields=[], initial_blocked_on='', initial_blocking='', initial_cc='', initial_comment='fake comment', initial_components='', initial_owner='', initial_status='New', initial_summary='Enter one-line summary', initial_hotlists='', labels=[], template_name='rutabaga') self.mox.ReplayAll() url = self.servlet.ProcessFormData(mr, post_data) self.mox.VerifyAll() self.assertEqual('Summary is required', mr.errors.summary) self.assertIsNone(url)
def testServiceAccountCommenter(self): johndoe_bot = '*****@*****.**' commenter_view = framework_views.StuffUserView(111, johndoe_bot, True) self.assertEqual( ('johndoe via monorail <*****@*****.**>'), emailfmt.FormatFromAddr(self.project, commenter_view=commenter_view, reveal_addr=False))
def setUp(self): self.config = tracker_bizobj.MakeDefaultProjectIssueConfig(789) self.config.field_defs = [ tracker_bizobj.MakeFieldDef( 1, 789, 'Goats', tracker_pb2.FieldTypes.INT_TYPE, None, None, False, False, False, None, None, None, False, None, None, None, None, 'Num of Goats in the season', False, is_phase_field=True), tracker_bizobj.MakeFieldDef( 2, 789, 'DogNames', tracker_pb2.FieldTypes.STR_TYPE, None, None, False, False, False, None, None, None, False, None, None, None, None, 'good dog names', False), tracker_bizobj.MakeFieldDef( 3, 789, 'Approval', tracker_pb2.FieldTypes.APPROVAL_TYPE, None, None, False, False, False, None, None, None, False, None, None, None, None, 'Tracks review from cows', False) ] self.config.approval_defs = [tracker_pb2.ApprovalDef(approval_id=3)] self.issue = MakeTestIssue( local_id=1, issue_id=100001, summary='One') self.issue.field_values = [ tracker_bizobj.MakeFieldValue( 1, 34, None, None, None, None, False, phase_id=23), tracker_bizobj.MakeFieldValue( 1, 35, None, None, None, None, False, phase_id=24), tracker_bizobj.MakeFieldValue( 2, None, 'Waffles', None, None, None, False), ] self.issue.phases = [ tracker_pb2.Phase(phase_id=23, name='winter'), tracker_pb2.Phase(phase_id=24, name='summer')] self.issue.approval_values = [ tracker_pb2.ApprovalValue( approval_id=3, approver_ids=[111, 222, 333])] self.users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', False), 222: framework_views.StuffUserView(222, '*****@*****.**', True), } self.summary_table_cell_kws = { 'col': None, 'users_by_id': {}, 'non_col_labels': [('lab', False)], 'label_values': {}, 'related_issues': {}, 'config': 'fake_config', }
def testObscuredCommenter(self): commenter_view = framework_views.StuffUserView(111, '*****@*****.**', True) self.assertEqual( u'u\u2026 via monorail ' '<*****@*****.**>', emailfmt.NoReplyAddress(commenter_view=commenter_view, reveal_addr=False))
def testObscuredCommenter(self): commenter_view = framework_views.StuffUserView(111, '*****@*****.**', True) self.assertEqual( u'u\u2026 via monorail <*****@*****.**>', emailfmt.FormatFromAddr(self.project, commenter_view=commenter_view, reveal_addr=False))
def setUp(self): self.users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), 222: framework_views.StuffUserView(222, '*****@*****.**', True), 999: framework_views.StuffUserView(999, '*****@*****.**', True), } self.services = service_manager.Services( project=fake.ProjectService(), config=fake.ConfigService(), issue=fake.IssueService(), user=fake.UserService(), usergroup=fake.UserGroupService()) self.owner = self.services.user.TestAddUser('*****@*****.**', 111) self.member = self.services.user.TestAddUser('*****@*****.**', 222) self.visitor = self.services.user.TestAddUser('*****@*****.**', 999) self.project = self.services.project.TestAddProject( 'proj', owner_ids=[111], committer_ids=[222]) self.project.process_inbound_email = True self.issue = fake.MakeTestIssue( self.project.project_id, 1, 'summary', 'New', 111)
def testGatherUnifiedSettingsPageData_NoUserPrefs(self): """If UserPrefs were not loaded, consider them all false.""" mr = self.mr mr.auth.user_view = framework_views.StuffUserView( 100, 'user@invalid', True) userprefs = None page_data = framework_helpers.UserSettings.GatherUnifiedSettingsPageData( mr.auth.user_id, mr.auth.user_view, mr.auth.user_pb, userprefs) self.assertFalse(page_data['settings_user_prefs'].public_issue_notice) self.assertFalse(page_data['settings_user_prefs'].restrict_new_issues)
def testRevealAllEmail(self): users_by_id = { 111: framework_views.StuffUserView(111, '*****@*****.**', True), 222: framework_views.StuffUserView(222, '*****@*****.**', True), 333: framework_views.StuffUserView(333, '*****@*****.**', True), 999: framework_views.StuffUserView(999, '*****@*****.**', True), } # Assert display names are obscured before the reveal. self.assertEqual('*****@*****.**', users_by_id[111].display_name) self.assertEqual('*****@*****.**', users_by_id[222].display_name) self.assertEqual('*****@*****.**', users_by_id[333].display_name) self.assertEqual('*****@*****.**', users_by_id[999].display_name) framework_views.RevealAllEmails(users_by_id) self.assertFalse(users_by_id[111].obscure_email) self.assertFalse(users_by_id[222].obscure_email) self.assertFalse(users_by_id[333].obscure_email) self.assertFalse(users_by_id[999].obscure_email) # Assert display names are now revealed. self.assertEqual('*****@*****.**', users_by_id[111].display_name) self.assertEqual('*****@*****.**', users_by_id[222].display_name) self.assertEqual('*****@*****.**', users_by_id[333].display_name) self.assertEqual('*****@*****.**', users_by_id[999].display_name)
def testProcessFormData_RedirectToEnteredIssue(self): mr = testing_helpers.MakeMonorailRequest(path='/p/proj/issues/entry') mr.auth.user_view = framework_views.StuffUserView( 100, 'user@invalid', True) mr.perms = permissions.EMPTY_PERMISSIONSET post_data = fake.PostData(summary=['fake summary'], comment=['fake comment'], status=['New']) self.mox.StubOutWithMock(self.servlet, 'CheckCaptcha') self.servlet.CheckCaptcha(mr, mox.IgnoreArg()) self.mox.ReplayAll() url = self.servlet.ProcessFormData(mr, post_data) self.mox.VerifyAll() self.assertTrue('/p/proj/issues/detail?id=' in url)
def testProcessFormData_RedirectToEnteredIssue(self): mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', project=self.project) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) mr.template_name = 'rutabaga' mr.auth.effective_ids = set([100]) post_data = fake.PostData( template_name=['rutabaga'], summary=['fake summary'], comment=['fake comment'], status=['New']) self.mox.ReplayAll() url = self.servlet.ProcessFormData(mr, post_data) self.mox.VerifyAll() self.assertTrue('/p/proj/issues/detail?id=' in url)
def testGatherPageData_DeepLinkSetsSummary(self): mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry?summary=foo', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) user = self.services.user.TestAddUser('user@invalid', 100) mr.template_name = 'rutabaga' self.mox.StubOutWithMock(self.services.user, 'GetUser') self.services.user.GetUser( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(user) self.mox.ReplayAll() page_data = self.servlet.GatherPageData(mr) self.mox.VerifyAll() self.assertEqual(page_data['initial_owner'], 'user@invalid') self.assertEqual(page_data['initial_status'], 'New') self.assertFalse(page_data['clear_summary_on_click']) self.assertTrue(page_data['must_edit_summary'])
def testGatherPageData_RestrictNewIssues(self): """Users with this pref set default to reporting issues with R-V-G.""" self.mox.ReplayAll() mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) user = self.services.user.TestAddUser('user@invalid', 100) self.services.user.GetUser = Mock(return_value=user) self.services.template.GetTemplateById = Mock(return_value=self.template) mr.auth.user_id = 100 page_data = self.servlet.GatherPageData(mr) self.assertNotIn('Restrict-View-Google', page_data['labels']) pref = user_pb2.UserPrefValue(name='restrict_new_issues', value='true') self.services.user.SetUserPrefs(self.cnxn, 100, [pref]) page_data = self.servlet.GatherPageData(mr) self.assertIn('Restrict-View-Google', page_data['labels'])
def setUp(self): self.project = fake.Project(project_name='proj1') self.project.process_inbound_email = True self.commenter_view = framework_views.StuffUserView( 111, '*****@*****.**', True) self.expected_html_footer = ( 'You received this message because:<br/> 1. reason<br/><br/>You may ' 'adjust your notification preferences at:<br/><a href="https://' 'example.com/hosting/settings">https://example.com/hosting/settings' '</a>') self.services = service_manager.Services(user=fake.UserService()) self.member = self.services.user.TestAddUser('*****@*****.**', 222) self.issue = fake.MakeTestIssue(self.project.project_id, 1234, 'summary', 'New', 111, project_name='proj1') self.detail_url = 'http://test-detail-url.com/id=1234'
def testGatherPageData_MembersOnlyTemplatesExcluded(self, mockUserIsInProject): """Templates with members_only=True are excluded from results when the user is not a member of the project.""" mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) user = self.services.user.TestAddUser('user@invalid', 100) mr.template_name = 'rutabaga' self.services.template.GetTemplateSetForProject = Mock( return_value=[(1, 'one', False), (2, 'two', True)]) mockUserIsInProject.return_value = False self.mox.StubOutWithMock(self.services.user, 'GetUser') self.services.user.GetUser( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(user) self.mox.ReplayAll() page_data = self.servlet.GatherPageData(mr) self.mox.VerifyAll() self.assertEqual(page_data['config'].template_names, ['one'])
def testGatherPageData_TemplateAllowsKeepingSummary(self): mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', services=self.services) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) mr.template_name = 'rutabaga' user = self.services.user.TestAddUser('user@invalid', 100) self.mox.StubOutWithMock(self.services.user, 'GetUser') self.services.user.GetUser( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(user) self.mox.ReplayAll() config = self.services.config.GetProjectConfig(mr.cnxn, mr.project_id) self.services.config.StoreConfig(mr.cnxn, config) self.template.summary_must_be_edited = False page_data = self.servlet.GatherPageData(mr) self.mox.VerifyAll() self.assertEqual(page_data['initial_owner'], 'user@invalid') self.assertEqual(page_data['initial_status'], 'New') self.assertFalse(page_data['clear_summary_on_click']) self.assertFalse(page_data['must_edit_summary'])
def testProcessFormData_TemplateNameMissing(self): """POST doesn't fail if no template_name is passed.""" mr = testing_helpers.MakeMonorailRequest( path='/p/proj/issues/entry', project=self.project) mr.auth.user_view = framework_views.StuffUserView(100, 'user@invalid', True) mr.auth.effective_ids = set([100]) self.services.template.GetTemplateById.return_value = None self.services.template.GetProjectTemplates.return_value = [ tracker_pb2.TemplateDef(members_only=True, content=''), tracker_pb2.TemplateDef(members_only=False, content='')] post_data = fake.PostData( summary=['fake summary'], comment=['fake comment'], status=['New']) self.mox.ReplayAll() url = self.servlet.ProcessFormData(mr, post_data) self.mox.VerifyAll() self.assertTrue('/p/proj/issues/detail?id=' in url)