예제 #1
0
  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)
예제 #2
0
  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)
예제 #3
0
  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')
예제 #4
0
    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')
예제 #5
0
    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)