def METHOD_NAME(self):
    self.assertTrue(
        self.load_policy(
            tools.get_policy([
                {'type': 'tag',
                 'tag': 'test',
                 'value': 'test_value'}
            ]),
            validate=True))
    self.assertTrue(
        self.load_policy(
            tools.get_policy([
                {'type': 'tag',
                 'tags': {'tag1': 'test'}}
            ]),
            validate=True))
    self.assertTrue(self.load_policy({
        'name': 'test-tag-schema-validate',
        'resource': 'azure.vm',
        'actions': [
            {'type': 'tag',
             'tag': {
                 'type': 'resource',
                 'key': 'name'
             },
             'value': {
                 'type': 'resource',
                 'key': 'name'
             }},
        ]
    }, validate=True))
    with self.assertRaises(FilterValidationError):
        # Can't have both tags and tag/value
        self.load_policy(tools.get_policy([
            {'type': 'tag',
             'tags': {'tag2': 'value2'},
             'tag': 'tag1',
             'value': 'value1'}
        ]), validate=True)
    with self.assertRaises(FilterValidationError):
        # Required tags or tag/value
        self.load_policy(tools.get_policy([
            {'type': 'tag'}
        ]), validate=True)
    with self.assertRaises(FilterValidationError):
        # Empty tags
        self.load_policy(tools.get_policy([
            {'type': 'tag',
             'tags': {}}
        ]), validate=True)
    with self.assertRaises(FilterValidationError):
        # Missing value
        self.load_policy(tools.get_policy([
            {'type': 'tag',
             'tag': 'myTag'}
        ]), validate=True)
    with self.assertRaises(FilterValidationError):
        # Missing tag
        self.load_policy(tools.get_policy([
            {'type': 'tag',
             'value': 'myValue'}
        ]), validate=True)