class_docstr: Test class for the SalesforceApp
class_docstr_tok: ["Test","class","for","the","SalesforceApp"]
docstr: SalesforceApp - Required Auth Info
docstr_tok: ["SalesforceApp","-","Required","Auth","Info"]
code: def test_required_auth_info(self):
      """SalesforceApp - Required Auth Info"""
      assert_count_equal(
          list(self._app.required_auth_info().keys()),
          {
              "client_id",
              "client_secret",
              "username",
              "password",
              "security_token",
          },
      )
  
imports: import os
  from mock import Mock, patch
  from moto import mock_ssm
  from nose.tools import assert_equal, assert_false, assert_true, assert_count_equal, raises
  from requests.exceptions import Timeout
  from streamalert.apps._apps.salesforce import SalesforceApp, SalesforceAppError
  from tests.unit.streamalert.apps.test_helpers import get_event, get_salesforce_log_files, list_salesforce_api_versions, put_mock_params
  from tests.unit.streamalert.shared.test_config import get_mock_lambda_context
label_desc: Use image node_id 5 for calling the TestSalesforceApp obj's underlying member method code with example usage: obj.test_required_auth_info() without return types