Пример #1
0
    def test_denied_no_access(self):
        """Ensure it is false when user has bug access but the relaxation is not
      enabled and user's email is not on the allowed domain list."""
        self.mock._is_domain_allowed.return_value = False
        self.mock.get.return_value = (data_types.Config(
            relax_testcase_restrictions=False))
        self.testcase.bug_information = '1234'
        self.get_issue.return_value = self.bug

        self.bug.add_cc(self.email)
        self.bug.reporter = self.email
        self.bug.owner = ''

        self.assertFalse(access.can_user_access_testcase(self.testcase))
Пример #2
0
    def setUp(self):
        test_helpers.patch(self, [
            'libs.access._is_domain_allowed',
            'libs.access.has_access',
            'libs.helpers.get_user_email',
            'config.db_config.get',
            'issue_management.issue_tracker_utils.get_issue_tracker_manager',
            'issue_management.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.email = '*****@*****.**'
        self.mock.get_user_email.return_value = self.email

        self.bug = issue.Issue()
        self.testcase = data_types.Testcase()
        self.mock.get.return_value = (data_types.Config(
            relax_testcase_restrictions=True))
Пример #3
0
    def setUp(self):
        """Set up."""
        super(UntrustedRunnerIntegrationTest, self).setUp()
        data_types.Config().put()

        environment_string = ('APP_NAME = app\n'
                              'RELEASE_BUILD_BUCKET_PATH = '
                              'gs://clusterfuzz-test-data/test_builds/'
                              'test-build-([0-9]+).zip\n')
        data_types.Job(name='job', environment_string=environment_string).put()

        environment_string = (
            'RELEASE_BUILD_BUCKET_PATH = '
            'gs://clusterfuzz-test-data/test_libfuzzer_builds/'
            'test-libfuzzer-build-([0-9]+).zip\n'
            'UNPACK_ALL_FUZZ_TARGETS_AND_FILES = True')
        data_types.Job(name='libfuzzer_asan_job',
                       environment_string=environment_string).put()

        data_types.Fuzzer(name='fuzzer', data_bundle_name='bundle').put()

        data_types.DataBundle(name='bundle',
                              is_local=True,
                              sync_to_worker=True).put()
Пример #4
0
  def post(self):
    """Handle a post request."""
    config = db_config.get()
    if not config:
      config = data_types.Config()

    previous_hash = self.request.get('previous_hash')
    if config.previous_hash and config.previous_hash != previous_hash:
      raise helpers.EarlyExitException(
          'Your change conflicts with another configuration update. '
          'Please refresh and try again.', 500)

    build_apiary_service_account_private_key = self.request.get(
        'build_apiary_service_account_private_key')
    bug_report_url = self.request.get('bug_report_url')
    client_credentials = self.request.get('client_credentials')
    jira_url = self.request.get('jira_url')
    jira_credentials = self.request.get('jira_credentials')
    component_repository_mappings = self.request.get(
        'component_repository_mappings')
    contact_string = self.request.get('contact_string')
    documentation_url = self.request.get('documentation_url')
    github_credentials = self.request.get('github_credentials')
    platform_group_mappings = self.request.get('platform_group_mappings')
    privileged_users = self.request.get('privileged_users')
    blacklisted_users = self.request.get('blacklisted_users')
    relax_security_bug_restrictions = self.request.get(
        'relax_security_bug_restrictions')
    relax_testcase_restrictions = self.request.get(
        'relax_testcase_restrictions')
    reproduce_tool_client_id = self.request.get('reproduce_tool_client_id')
    reproduce_tool_client_secret = self.request.get(
        'reproduce_tool_client_secret')
    reproduction_help_url = self.request.get('reproduction_help_url')
    test_account_email = self.request.get('test_account_email')
    test_account_password = self.request.get('test_account_password')
    wifi_ssid = self.request.get('wifi_ssid')
    wifi_password = self.request.get('wifi_password')
    sendgrid_api_key = self.request.get('sendgrid_api_key')
    sendgrid_sender = self.request.get('sendgrid_sender')

    config.build_apiary_service_account_private_key = (
        build_apiary_service_account_private_key)
    config.bug_report_url = bug_report_url
    config.client_credentials = client_credentials
    config.component_repository_mappings = component_repository_mappings
    config.contact_string = contact_string
    config.documentation_url = documentation_url
    config.github_credentials = github_credentials
    config.jira_credentials = jira_credentials
    config.jira_url = jira_url
    config.platform_group_mappings = platform_group_mappings
    config.privileged_users = privileged_users
    config.blacklisted_users = blacklisted_users
    config.relax_security_bug_restrictions = bool(
        relax_security_bug_restrictions)
    config.relax_testcase_restrictions = bool(relax_testcase_restrictions)
    config.reproduce_tool_client_id = reproduce_tool_client_id
    config.reproduce_tool_client_secret = reproduce_tool_client_secret
    config.reproduction_help_url = reproduction_help_url
    config.test_account_email = test_account_email
    config.test_account_password = test_account_password
    config.wifi_ssid = wifi_ssid
    config.wifi_password = wifi_password
    config.sendgrid_api_key = sendgrid_api_key
    config.sendgrid_sender = sendgrid_sender

    helpers.log('Configuration', helpers.MODIFY_OPERATION)

    # Before hashing the entity, we must put it so that the internal maps are
    # updated.
    config.put()
    config.previous_hash = utils.entity_hash(config)

    config.put()

    template_values = {
        'title':
            'Success',
        'message': ('Configuration is successfully updated. '
                    'Redirecting to the configuration page...'),
        'redirect_url':
            '/configuration',
    }
    self.render('message.html', template_values)
 def setUp(self):
   data_types.Config(github_credentials='client_id;client_secret').put()
  def setUp(self):
    self.app = webtest.TestApp(
        webapp2.WSGIApplication([('/setup', oss_fuzz_setup.Handler)]))

    helpers.patch_environ(self)
    data_types.Config(
        revision_vars_url=('libfuzzer_asan_lib2;url\n'
                           'blah;url2\n')).put()

    data_types.Job(
        name='libfuzzer_asan_old_job',
        environment_string=('MANAGED = True\n'
                            'PROJECT_NAME = old\n')).put()
    data_types.Job(
        name='libfuzzer_msan_old_job',
        environment_string=('MANAGED = True\n'
                            'PROJECT_NAME = old\n')).put()
    data_types.Job(name='unmanaged_job', environment_string='').put()

    # Will be removed.
    data_types.ExternalUserPermission(
        entity_kind=data_types.PermissionEntityKind.JOB,
        is_prefix=False,
        auto_cc=data_types.AutoCCType.ALL,
        entity_name='libfuzzer_asan_lib1',
        email='*****@*****.**').put()

    # Existing CC. Makes sure no duplicates are created.
    data_types.ExternalUserPermission(
        entity_kind=data_types.PermissionEntityKind.JOB,
        is_prefix=False,
        auto_cc=data_types.AutoCCType.ALL,
        entity_name='libfuzzer_asan_lib1',
        email='*****@*****.**').put()

    # Existing project settings. Should not get modified.
    data_types.OssFuzzProject(id='lib1', name='lib1', cpu_weight=1.5).put()

    # Should get deleted.
    data_types.OssFuzzProject(id='old_lib', name='old_lib').put()

    self.libfuzzer = data_types.Fuzzer(name='libFuzzer', jobs=[])
    self.libfuzzer.data_bundle_name = 'global'
    self.libfuzzer.jobs = ['libfuzzer_asan_old_job', 'libfuzzer_msan_old_job']
    self.libfuzzer.put()

    self.afl = data_types.Fuzzer(name='afl', jobs=[])
    self.afl.data_bundle_name = 'global'
    self.afl.jobs = ['afl_asan_old_job', 'afl_msan_old_job']
    self.afl.put()

    helpers.patch(self, [
        'base.utils.is_oss_fuzz',
        ('get_application_id_1',
         'google.appengine.api.app_identity.get_application_id'),
        ('get_application_id_2', 'base.utils.get_application_id'),
        'google_cloud_utils.storage.build',
        'time.sleep',
        'handlers.base_handler.Handler.is_cron',
        'handlers.cron.oss_fuzz_setup.get_projects',
        'handlers.cron.service_accounts.get_or_create_service_account',
        'handlers.cron.service_accounts.set_service_account_roles',
    ])

    self.mock.get_or_create_service_account.side_effect = (
        _mock_get_or_create_service_account)

    self.mock.is_oss_fuzz.return_value = True
Пример #7
0
    def post(self):
        """Handle a post request."""
        config = db_config.get()
        if not config:
            config = data_types.Config()

        previous_hash = self.request.get("previous_hash")
        if config.previous_hash and config.previous_hash != previous_hash:
            raise helpers.EarlyExitException(
                "Your change conflicts with another configuration update. "
                "Please refresh and try again.",
                500,
            )

        build_apiary_service_account_email = self.request.get(
            "build_apiary_service_account_email")
        build_apiary_service_account_private_key = self.request.get(
            "build_apiary_service_account_private_key")
        bug_report_url = self.request.get("bug_report_url")
        client_credentials = self.request.get("client_credentials")
        component_repository_mappings = self.request.get(
            "component_repository_mappings")
        contact_string = self.request.get("contact_string")
        documentation_url = self.request.get("documentation_url")
        github_credentials = self.request.get("github_credentials")
        platform_group_mappings = self.request.get("platform_group_mappings")
        privileged_users = self.request.get("privileged_users")
        relax_security_bug_restrictions = self.request.get(
            "relax_security_bug_restrictions")
        relax_testcase_restrictions = self.request.get(
            "relax_testcase_restrictions")
        reproduce_tool_client_id = self.request.get("reproduce_tool_client_id")
        reproduce_tool_client_secret = self.request.get(
            "reproduce_tool_client_secret")
        reproduction_help_url = self.request.get("reproduction_help_url")
        test_account_email = self.request.get("test_account_email")
        test_account_password = self.request.get("test_account_password")
        wifi_ssid = self.request.get("wifi_ssid")
        wifi_password = self.request.get("wifi_password")
        sendgrid_api_key = self.request.get("sendgrid_api_key")
        sendgrid_sender = self.request.get("sendgrid_sender")

        config.build_apiary_service_account_email = build_apiary_service_account_email
        config.build_apiary_service_account_private_key = (
            build_apiary_service_account_private_key)
        config.bug_report_url = bug_report_url
        config.client_credentials = client_credentials
        config.component_repository_mappings = component_repository_mappings
        config.contact_string = contact_string
        config.documentation_url = documentation_url
        config.github_credentials = github_credentials
        config.platform_group_mappings = platform_group_mappings
        config.privileged_users = privileged_users
        config.relax_security_bug_restrictions = bool(
            relax_security_bug_restrictions)
        config.relax_testcase_restrictions = bool(relax_testcase_restrictions)
        config.reproduce_tool_client_id = reproduce_tool_client_id
        config.reproduce_tool_client_secret = reproduce_tool_client_secret
        config.reproduction_help_url = reproduction_help_url
        config.test_account_email = test_account_email
        config.test_account_password = test_account_password
        config.wifi_ssid = wifi_ssid
        config.wifi_password = wifi_password
        config.sendgrid_api_key = sendgrid_api_key
        config.sendgrid_sender = sendgrid_sender

        helpers.log("Configuration", helpers.MODIFY_OPERATION)

        # Before hashing the entity, we must put it so that the internal maps are
        # updated.
        config.put()
        config.previous_hash = utils.entity_hash(config)

        config.put()

        template_values = {
            "title":
            "Success",
            "message": ("Configuration is successfully updated. "
                        "Redirecting to the configuration page..."),
            "redirect_url":
            "/configuration",
        }
        self.render("message.html", template_values)