Exemplo n.º 1
0
def test_file_rules_loader_get_names():
    class MockDirEntry:
        # os.DirEntry of os.scandir
        def __init__(self, name):
            self.name = name

    # Check for no subdirectory
    conf = {'scan_subdirectories': False, 'rules_folder': 'root'}
    rules_loader = FileRulesLoader(conf)
    files = [
        MockDirEntry(name='badfile'),
        MockDirEntry('a.yaml'),
        MockDirEntry('b.yaml')
    ]

    with mock.patch('os.path.isdir') as mock_dir:
        with mock.patch('os.scandir') as mock_list:
            with mock.patch('os.path.isfile') as mock_path:
                mock_dir.return_value = conf['rules_folder']
                mock_path.return_value = True
                mock_list.return_value = files
                paths = rules_loader.get_names(conf)

    paths = [p.replace(os.path.sep, '/') for p in paths]
    assert 'root/a.yaml' in paths
    assert 'root/b.yaml' in paths
    assert len(paths) == 2
Exemplo n.º 2
0
def test_file_rules_loader_get_names_recursive():
    conf = {'scan_subdirectories': True, 'rules_folder': 'root'}
    rules_loader = FileRulesLoader(conf)
    walk_paths = (('root', ['folder_a', 'folder_b'], ('rule.yaml', )),
                  ('root/folder_a', [],
                   ('a.yaml', 'ab.yaml')), ('root/folder_b', [], ('b.yaml', )))
    with mock.patch('os.walk') as mock_walk:
        mock_walk.return_value = walk_paths
        paths = rules_loader.get_names(conf)

    paths = [p.replace(os.path.sep, '/') for p in paths]

    assert 'root/rule.yaml' in paths
    assert 'root/folder_a/a.yaml' in paths
    assert 'root/folder_a/ab.yaml' in paths
    assert 'root/folder_b/b.yaml' in paths
    assert len(paths) == 4
def test_file_rules_loader_get_names():
    # Check for no subdirectory
    conf = {'scan_subdirectories': False, 'rules_folder': 'root'}
    rules_loader = FileRulesLoader(conf)
    files = ['badfile', 'a.yaml', 'b.yaml']

    with mock.patch('os.listdir') as mock_list:
        with mock.patch('os.path.isfile') as mock_path:
            mock_path.return_value = True
            mock_list.return_value = files
            paths = rules_loader.get_names(conf)

    paths = [p.replace(os.path.sep, '/') for p in paths]

    assert 'root/a.yaml' in paths
    assert 'root/b.yaml' in paths
    assert len(paths) == 2