def setUp(self): test_helpers.patch(self, [ 'libs.access._is_domain_allowed', 'libs.auth.get_current_user', 'config.db_config.get', 'issue_management.issue_tracker_utils.get_issue_tracker_manager', 'issue_management.monorail.issue_tracker_manager.IssueTrackerManager', ]) itm = issue_tracker_manager.IssueTrackerManager('test') self.mock.get_issue_tracker_manager.return_value = itm self.get_issue = itm.get_issue self.get_original_issue = itm.get_original_issue self.email = '*****@*****.**' self.mock.get_current_user.return_value = auth.User(self.email) self.bug = issue.Issue() self.bug.id = 1234 self.original_bug = issue.Issue() self.original_bug.id = 5678 self.testcase = data_types.Testcase() self.mock.get.return_value = (data_types.Config( relax_testcase_restrictions=True)) self.mock._is_domain_allowed.return_value = False
def test_find(self): """Ensure it returns correct JSON when everything is ok.""" itm = mock.Mock() issue_item = issue.Issue() issue_item.id = 100 self.mock.get_issue_tracker_manager.return_value = itm self.mock.get_similar_issues_url.return_value = 'similarurl' self.mock.get_similar_issues_query.return_value = 'query' self.mock.get_similar_issues.return_value = [issue_item] self.mock.get_issue_url.return_value = 'issueurl' response = self.app.get( '/?testcaseId=%d&filterType=open' % self.testcase.key.id()) self.assertEqual(response.status_int, 200) self.assertEqual(response.json['queryString'], 'query') self.assertEqual(response.json['queryUrl'], 'similarurl') self.assertEqual(response.json['issueUrlPrefix'], 'issueurl') self.assertEqual(len(response.json['items']), 1) self.assertEqual(response.json['items'][0]['id'], issue_item.id) self.mock.get_issue_tracker_manager.assert_has_calls([mock.call(mock.ANY)]) self.assertEqual( self.testcase.key.id(), self.mock.get_issue_tracker_manager.call_args[0][0].key.id()) self.mock.get_similar_issues.assert_has_calls( [mock.call(mock.ANY, 'open', itm)]) self.assertEqual(self.testcase.key.id(), self.mock.get_similar_issues.call_args[0][0].key.id())
def test_succeed(self): """Update an issue.""" bug = issue.Issue() bug.open = True itm = mock.Mock(project_name='chromium') itm.get_issue.return_value = bug self.mock.get_issue_tracker_for_testcase.return_value = ( monorail.IssueTracker(itm)) self.mock.get_issue_description.return_value = 'description' self.mock.get_issue_summary.return_value = 'summary' self.mock.get_stacktrace.return_value = 'stacktrace' self.mock.get_memory_tool_labels.return_value = ['label'] resp = self.app.post_json('/', { 'testcaseId': self.testcase.key.id(), 'issueId': '2', 'needsSummaryUpdate': 'true', 'csrf_token': form.generate_csrf_token(), }, expect_errors=True) self.assertEqual(200, resp.status_int) self.assertEqual('yes', resp.json['testcase']) self.assertEqual('description', bug.comment) self.assertEqual('summary', bug.summary) self.assertListEqual(['label'], bug.labels) self.assertEqual('2', self.testcase.key.get().bug_information)
def test_deny_no_access_and_no_bug_access(self): """Ensure it is false when user has no access and no bug access.""" self.mock._is_domain_allowed.return_value = False self.get_issue.return_value = issue.Issue() self.testcase.bug_information = '1234' self.assertFalse(access.can_user_access_testcase(self.testcase)) self.get_issue.assert_has_calls([mock.call(1234)])
def test_issue_not_open(self): """Issue is not open.""" itm = mock.Mock(spec_set=issue_tracker_manager.IssueTrackerManager) bug = issue.Issue() bug.open = False self.mock.get_issue_tracker_for_testcase.return_value = ( monorail.IssueTracker(itm)) itm.get_issue.return_value = bug resp = self.app.post_json('/', { 'testcaseId': self.testcase.key.id(), 'issueId': '2', 'needsSummaryUpdate': '', 'csrf_token': form.generate_csrf_token(), }, expect_errors=True) self.assertEqual(400, resp.status_int) self.assertIn('file a new issue', resp.json['message']) self.assertEqual('*****@*****.**', resp.json['email'])