def __init__(self, itm, jira_issue): self.itm = itm self.jira_issue = jira_issue self._ccs = issue_tracker.LabelStore(self.itm.get_watchers(self.jira_issue)) self._components = issue_tracker.LabelStore( self.jira_issue.fields.components) self._labels = issue_tracker.LabelStore(self.jira_issue.fields.labels)
def __init__(self, monorail_issue): self._monorail_issue = monorail_issue # These mirror the underlying MonorailIssue data structures, to make it more # opaque to the client about how issue updates are done. For instance, when # a `label` is removed, what actually happens is `-label` is added. This # should not be visible to the client. self._ccs = issue_tracker.LabelStore(self._monorail_issue.cc) self._components = issue_tracker.LabelStore(self._monorail_issue.components) self._labels = issue_tracker.LabelStore(self._monorail_issue.labels)
def test_public_download_oss_fuzz(self): """Test public downloading OSS-Fuzz testcases.""" self.mock.get_user_email.return_value = '' self.mock.is_oss_fuzz.return_value = True mock_issue = self.mock.get_issue_tracker_for_testcase(None).get_issue() mock_issue.labels = issue_tracker.LabelStore([]) self._test_download( self.minimized_key, expect_status=302, expect_blob=False) self._test_download( testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext') self._test_download( self.minimized_key, testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext') # Only have access to minimized testcase. self._test_download( self.fuzzed_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) mock_issue.labels = issue_tracker.LabelStore(['restrict-view-commit']) self._test_download( testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) self._test_download( self.minimized_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) self._test_download( self.fuzzed_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) # Privileged users should still be able to access everything. self.mock.get_user_email.return_value = '*****@*****.**' self.mock.has_access.return_value = True self._test_download( testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext') self._test_download( self.minimized_key, testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext') self._test_download( self.fuzzed_key, testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-1.ext')
def test_public_download_oss_fuzz_reproducer_delay(self): """Test reproducer delay on OSS-Fuzz.""" self.mock.get_user_email.return_value = '' self.mock.is_oss_fuzz.return_value = True mock_issue = self.mock.get_issue_tracker_for_testcase(None).get_issue() mock_issue.labels = issue_tracker.LabelStore([]) mock_issue.closed_time = (datetime.datetime.utcnow() - datetime.timedelta(days=29)) # All attempts should fail. self._test_download(self.minimized_key, expect_status=302, expect_blob=False) self._test_download(testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) self._test_download(self.minimized_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) # But if the deadline had exceeded anyway, no extra delay should apply. mock_issue.labels.add('deadline-exceeded') self._test_download( testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext') self._test_download( self.minimized_key, testcase_id=self.testcase.key.id(), expect_filename='clusterfuzz-testcase-minimized-1.ext')
def test_public_download_chromium(self): """Test public downloading chromium testcases (should fail).""" self.mock.get_user_email.return_value = '' self.mock.is_oss_fuzz.return_value = False mock_issue = self.mock.get_issue_tracker_for_testcase(None).get_issue() mock_issue.labels = issue_tracker.LabelStore([]) self._test_download(self.minimized_key, expect_status=302, expect_blob=False) self._test_download(testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) self._test_download(self.minimized_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False) self._test_download(self.fuzzed_key, testcase_id=self.testcase.key.id(), expect_status=302, expect_blob=False)