code: def test_user_defined_properties():
      """OutputDispatcher - User Defined Properties"""
      for output in list(StreamAlertOutput.get_all_outputs().values()):
          props = output.get_user_defined_properties()
          # The user defined properties should at a minimum contain a descriptor
          assert_is_not_none(props.get("descriptor"))
  
imports: from mock import Mock, patch, MagicMock
  from moto import mock_kms, mock_ssm
  from nose.tools import assert_equal, assert_is_instance, assert_is_not_none, assert_is_none, assert_count_equal
  from requests.exceptions import Timeout
  from streamalert.alert_processor.outputs.output_base import OutputDispatcher, OutputProperty, OutputRequestFailure, StreamAlertOutput
  from streamalert.alert_processor.outputs.aws import S3Output
  from tests.unit.streamalert.alert_processor import CONFIG, KMS_ALIAS, MOCK_ENV, REGION, PREFIX
  from tests.unit.streamalert.alert_processor.helpers import put_mock_ssm_parameters
label_desc: Use image node_id 5 for calling a global function with example usage: test_user_defined_properties() without return types