about summary refs log tree commit diff
path: root/tst/test_check.py
diff options
context:
space:
mode:
Diffstat (limited to 'tst/test_check.py')
-rw-r--r--tst/test_check.py15
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