summaryrefslogtreecommitdiffstats
path: root/tests/check_yaml_test.py
blob: 1a017a12b629e5475536a9aec171a5367103e064 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import pytest

from pre_commit_hooks.check_yaml import main
from testing.util import get_resource_path


@pytest.mark.parametrize(
    ('filename', 'expected_retval'), (
        ('bad_yaml.notyaml', 1),
        ('ok_yaml.yaml', 0),
    ),
)
def test_main(filename, expected_retval):
    ret = main([get_resource_path(filename)])
    assert ret == expected_retval


def test_main_allow_multiple_documents(tmpdir):
    f = tmpdir.join('test.yaml')
    f.write('---\nfoo\n---\nbar\n')

    # should fail without the setting
    assert main((str(f),))

    # should pass when we allow multiple documents
    assert not main(('--allow-multiple-documents', str(f)))


def test_fails_even_with_allow_multiple_documents(tmpdir):
    f = tmpdir.join('test.yaml')
    f.write('[')
    assert main(('--allow-multiple-documents', str(f)))


def test_main_unsafe(tmpdir):
    f = tmpdir.join('test.yaml')
    f.write(
        'some_foo: !vault |\n'
        '    $ANSIBLE_VAULT;1.1;AES256\n'
        '    deadbeefdeadbeefdeadbeef\n',
    )
    # should fail "safe" check
    assert main((str(f),))
    # should pass when we allow unsafe documents
    assert not main(('--unsafe', str(f)))


def test_main_unsafe_still_fails_on_syntax_errors(tmpdir):
    f = tmpdir.join('test.yaml')
    f.write('[')
    assert main(('--unsafe', str(f)))