Example #1
0
    def test_no_testcase(self):
        """Test invalid testcase."""
        with self.assertRaises(helpers.EarlyExitException) as cm:
            show.get_testcase_detail_by_id(1)

        self.assertEqual(cm.exception.status, 404)
        self.assertEqual(cm.exception.message, 'Invalid test case!')
Example #2
0
    def test_no_testcase_id(self):
        """Test no testcase id."""
        with self.assertRaises(helpers.EarlyExitException) as cm:
            show.get_testcase_detail_by_id(None)

        self.assertEqual(cm.exception.status, 404)
        self.assertEqual(cm.exception.message, 'No test case specified!')
Example #3
0
    def test_forbidden(self):
        """Test forbidden testcase."""
        self.mock.can_user_access_testcase.return_value = False
        data_types.Testcase().put()

        with self.assertRaises(helpers.EarlyExitException) as cm:
            show.get_testcase_detail_by_id(2)

        self.assertEqual(cm.exception.status, 403)
        self.assertEqual(cm.exception.message, '')
Example #4
0
    def test_unreproducible_get(self):
        """Test valid unreproducible testcase."""
        self.mock.get_last_crash_time.return_value = datetime.datetime(
            2000, 1, 1)

        testcase = data_types.Testcase()
        testcase.job_type = 'windows_asan_chrome'
        testcase.crash_type = 'crash_type1\ncrash_type2'
        testcase.crash_address = 'crash_address'
        testcase.crash_state = 'crash_state'
        testcase.crash_revision = 123
        testcase.regression = None
        testcase.fixed = None
        testcase.fuzzed_keys = None
        testcase.minimized_keys = None
        testcase.timestamp = datetime.datetime(1970, 1, 1)
        testcase.project_name = 'chromium'
        testcase.one_time_crasher_flag = True
        testcase.put()

        job = data_types.Job()
        job.name = 'windows_asan_chrome'
        job.custom_binary_revision = 1234
        job.put()

        self.mock.can_user_access_testcase.return_value = True
        self.mock.get_issue_url.return_value = 'issue_url'
        self.mock.get_stacktrace.return_value = 'crash_stacktrace'
        self.mock.filter_stacktrace.return_value = 'crash_stacktrace'
        self.mock.get_environment.return_value = ({'HELP_URL': 'help_url'})
        self.mock.generate_csrf_token.return_value = 'csrf'

        result = show.get_testcase_detail_by_id(2)
        expected_subset = {
            'id': 2,
            'crash_type': 'crash_type1 crash_type2',
            'crash_address': 'crash_address',
            'crash_state': 'crash_state',
            'crash_state_lines': ['crash_state'],
            'crash_revision': 123,
            'csrf_token': 'csrf',
            'external_user': True,
            'footer': '',
            'fixed': 'NO',
            'issue_url': 'issue_url',
            'metadata': {},
            'minimized_testcase_size': '',
            'needs_refresh': True,
            'original_testcase_size': '',
            'privileged_user': False,
            'regression': 'Pending',
            'security_severity': None,
            'show_impact': False,
            'show_blame': True,
            'auto_delete_timestamp': 947289600.0,
            'auto_close_timestamp': None,
            'memory_tool_display_label': 'Sanitizer',
            'memory_tool_display_value': 'address (ASAN)',
            'last_tested': 'name: 0:revision<br />',
            'is_admin_or_not_oss_fuzz': True,
            'has_issue_tracker': True,
            'reproduction_help_url': 'help_url',
        }

        self.maxDiff = None  # pylint: disable=invalid-name
        self.assertDictContainsSubset(expected_subset, result)
        self.assertEqual(result['testcase'].key.id(), testcase.key.id())

        self.assertDictContainsSubset(
            {'lines': [show.Line(1, 'crash_stacktrace', False)]},
            result['crash_stacktrace'])
        self.assertDictContainsSubset(
            {'lines': [show.Line(1, 'crash_stacktrace', False)]},
            result['second_crash_stacktrace'])
        self.assertDictContainsSubset(
            {'lines': [show.Line(1, 'crash_stacktrace', False)]},
            result['last_tested_crash_stacktrace'])