class_docstr: Normalizer tests
class_docstr_tok: ["Normalizer","tests"]
docstr: Normalizer - Match Types, Mutiple Sub-keys
docstr_tok: ["Normalizer","-","Match","Types",",","Mutiple","Sub-keys"]
code: def test_match_types_multiple(self):
      """Normalizer - Match Types, Mutiple Sub-keys"""
      normalized_types = {
          "account": self._normalized_type_account(),
          "ipv4": self._normalized_type_ip(),
          "region": self._normalized_type_region(),
          "user_identity": self._normalized_type_user_identity(),
      }
      expected_results = {
          "streamalert_record_id": MOCK_RECORD_ID,
          "account": [{"values": ["123456"], "function": None}],
          "ipv4": [
              {"values": ["1.1.1.3"], "function": "source ip address"},
              {"values": ["1.1.1.2"], "function": "source ip address"},
          ],
          "region": [
              {"values": ["region_name"], "function": "AWS region"},
              {"values": ["region_name"], "function": "AWS region"},
          ],
          "user_identity": [
              {"values": ["Alice"], "function": "User name"},
              {
                  "values": ["signin.amazonaws.com"],
                  "function": "Service name",
              },
          ],
      }
  
      results = Normalizer.match_types(
          self._test_record(), normalized_types
      )
      assert_equal(results, expected_results)
  
imports: from mock import Mock, patch
  from nose.tools import assert_equal, assert_false, assert_raises, assert_true
  from streamalert.shared.exceptions import ConfigError
  from streamalert.shared.normalize import Normalizer, NormalizedType
  from tests.unit.streamalert.shared.test_utils import MOCK_RECORD_ID
label_desc: Use image node_id 8 for calling the TestNormalizer obj's underlying member method code with example usage: obj.test_match_types_multiple() without return types