diff options
Diffstat (limited to 'tst/test_check.py')
-rw-r--r-- | tst/test_check.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/tst/test_check.py b/tst/test_check.py index 0ebc0ab..23be6f5 100644 --- a/tst/test_check.py +++ b/tst/test_check.py @@ -17,7 +17,6 @@ # along with scadere. If not, see <https://www.gnu.org/licenses/>. from asyncio import get_running_loop, start_server -from base64 import urlsafe_b64encode as base64 from datetime import datetime, timedelta, timezone from io import StringIO from ssl import Purpose, create_default_context as tls_context @@ -26,7 +25,7 @@ from hypothesis import given from pytest import mark from trustme import CA -from scadere.check import CtlChrTrans, base64_from_str, check +from scadere.check import base64_from_str, check, printable from scadere.listen import parse_summary, str_from_base64 SECONDS_AGO = datetime.now(tz=timezone.utc) @@ -36,8 +35,7 @@ NEXT_WEEK = SECONDS_AGO + timedelta(days=7) @given(...) def test_base64(string: str): - printable_string = string.translate(CtlChrTrans()) - assert str_from_base64(base64_from_str(string)) == printable_string + assert str_from_base64(base64_from_str(string)) == string async def noop(reader, writer): @@ -67,7 +65,7 @@ async def get_cert_summary(netloc, after, ca): @mark.parametrize('domain', ['localhost']) -@mark.parametrize('ca_name', ['trustme']) +@mark.parametrize('ca_name', ['trustme', '\x1f']) @mark.parametrize('not_after', [SECONDS_AGO, NEXT_DAY, NEXT_WEEK]) @mark.parametrize('after', [NEXT_DAY, NEXT_WEEK]) @mark.parametrize('trust_ca', [False, True]) @@ -88,11 +86,14 @@ async def test_check(domain, ca_name, not_after, after, trust_ca): elif not_after == SECONDS_AGO: assert failed_to_get_cert(summary) assert 'certificate has expired' in str_from_base64(summary[-1]) + elif not printable(ca_name): + assert failed_to_get_cert(summary) + assert 'control character' in str_from_base64(summary[-1]) elif not_after > after: assert summary is None else: assert summary[0] == SECONDS_AGO.isoformat(timespec='seconds') assert summary[1] == not_after.isoformat(timespec='seconds') assert summary[2] == domain - assert summary[3] == str(port) - assert summary[5] == base64(ca_name.encode()).decode() + assert int(summary[3]) == port + assert str_from_base64(summary[5]) == ca_name |