コード例 #1
0
ファイル: loaders_test.py プロジェクト: jertel/elastalert2
def test_load_yaml_imports_modified():
    config = {}
    rules_loader = FileRulesLoader(config)

    rule_path = os.path.join(empty_folder_test_path, 'rule.yaml')
    first_import_path = os.path.join(empty_folder_test_path, 'first.yaml')
    second_import_path = os.path.join(empty_folder_test_path, 'second.yaml')

    with mock.patch.object(rules_loader, 'get_yaml') as get_yaml:
        get_yaml.side_effect = [{
            'name': 'rule',
            'import': first_import_path,
        }, {
            'imported': 'first',
        }]
        rule_yaml = rules_loader.load_yaml(rule_path)
        assert rule_yaml == {
            'name': 'rule',
            'rule_file': rule_path,
            'imported': 'first',
        }
        assert sorted(rules_loader.import_rules.keys()) == [
            rule_path,
        ]
        assert rules_loader.import_rules[rule_path] == [first_import_path]

    # simulate the import changing
    with mock.patch.object(rules_loader, 'get_yaml') as get_yaml:
        get_yaml.side_effect = [{
            'name': 'rule',
            'import': second_import_path,
        }, {
            'imported': 'second',
        }]
        rule_yaml = rules_loader.load_yaml(rule_path)
        assert rule_yaml == {
            'name': 'rule',
            'rule_file': rule_path,
            'imported': 'second',
        }
        assert sorted(rules_loader.import_rules.keys()) == [
            rule_path,
        ]
        assert rules_loader.import_rules[rule_path] == [second_import_path]

    # simulate the import being removed
    with mock.patch.object(rules_loader, 'get_yaml') as get_yaml:
        get_yaml.side_effect = [
            {
                'name': 'rule',
            },
        ]
        rule_yaml = rules_loader.load_yaml(rule_path)
        assert rule_yaml == {
            'name': 'rule',
            'rule_file': rule_path,
        }
        assert len(rules_loader.import_rules) == 0
コード例 #2
0
ファイル: loaders_test.py プロジェクト: jertel/elastalert2
def test_load_yaml_multiple_imports():
    config = {}
    rules_loader = FileRulesLoader(config)

    hydrogen_path = os.path.join(loaders_test_cases_path,
                                 'multiple_imports/hydrogen.yaml')
    oxygen_path = os.path.join(loaders_test_cases_path,
                               'multiple_imports/oxygen.yaml')
    water_path = os.path.join(loaders_test_cases_path,
                              'multiple_imports/water.yaml')

    # re-load the rule a couple times to ensure import_rules cache is updated correctly
    for i in range(3):

        water_yaml = rules_loader.load_yaml(water_path)
        assert water_yaml == {
            'name': 'water',
            'rule_file': water_path,
            'symbol': 'O',
        }
        assert sorted(rules_loader.import_rules.keys()) == [
            water_path,
        ]
        assert rules_loader.import_rules[water_path] == [
            hydrogen_path,
            oxygen_path,
        ]
コード例 #3
0
ファイル: loaders_test.py プロジェクト: jertel/elastalert2
def test_load_yaml_recursive_import():
    config = {}
    rules_loader = FileRulesLoader(config)

    trunk_path = os.path.join(loaders_test_cases_path,
                              'recursive_import/trunk.yaml')
    branch_path = os.path.join(loaders_test_cases_path,
                               'recursive_import/branch.yaml')
    leaf_path = os.path.join(loaders_test_cases_path,
                             'recursive_import/leaf.yaml')

    # re-load the rule a couple times to ensure import_rules cache is updated correctly
    for i in range(3):

        leaf_yaml = rules_loader.load_yaml(leaf_path)
        assert leaf_yaml == {
            'name': 'leaf',
            'rule_file': leaf_path,
            'diameter': '5cm',
        }
        assert sorted(rules_loader.import_rules.keys()) == [
            branch_path,
            leaf_path,
        ]
        assert rules_loader.import_rules[branch_path] == [
            trunk_path,
        ]
        assert rules_loader.import_rules[leaf_path] == [
            branch_path,
        ]