pyinfra/test/parser/parser_test.py
2022-06-03 16:34:37 +02:00

43 lines
1019 B
Python

import json
import pytest
from pyinfra.parser.blob_parser import ParsingError
from pyinfra.parser.parser_composer import EitherParserComposer
from pyinfra.parser.parsers.identity import IdentityBlobParser
from pyinfra.parser.parsers.json import JsonBlobParser
from pyinfra.parser.parsers.string import StringBlobParser
def test_json_parser():
d = {"a": 1}
assert JsonBlobParser()(json.dumps(d).encode()) == d
def test_string_parser():
a = "a"
assert StringBlobParser()(a.encode()) == a
def test_identity_parser():
a = "a"
assert IdentityBlobParser()(a.encode()) == a.encode()
def test_either_parser_composer():
parser = EitherParserComposer(JsonBlobParser(), StringBlobParser(), IdentityBlobParser())
d = {"a": 1}
assert parser(json.dumps(d).encode()) == d
a = "a"
assert parser(a.encode()) == a
a = 1
assert parser(a) == a
parser = EitherParserComposer(JsonBlobParser(), StringBlobParser())
with pytest.raises(ParsingError):
parser(1)