aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/extmod/ussl_basic.py2
-rw-r--r--tests/extmod/ussl_basic.py.exp3
-rw-r--r--tests/net_inet/tls_num_errors.py44
-rw-r--r--tests/net_inet/tls_num_errors.py.exp2
-rw-r--r--tests/net_inet/tls_text_errors.py33
5 files changed, 81 insertions, 3 deletions
diff --git a/tests/extmod/ussl_basic.py b/tests/extmod/ussl_basic.py
index b4e21c7dc..9e1821dca 100644
--- a/tests/extmod/ussl_basic.py
+++ b/tests/extmod/ussl_basic.py
@@ -9,7 +9,7 @@ except ImportError:
# create in client mode
try:
- ss = ssl.wrap_socket(io.BytesIO())
+ ss = ssl.wrap_socket(io.BytesIO(), server_hostname="test.example.com")
except OSError as er:
print("wrap_socket:", repr(er))
diff --git a/tests/extmod/ussl_basic.py.exp b/tests/extmod/ussl_basic.py.exp
index 528233831..eb7df855a 100644
--- a/tests/extmod/ussl_basic.py.exp
+++ b/tests/extmod/ussl_basic.py.exp
@@ -1,5 +1,4 @@
-ssl_handshake_status: -256
-wrap_socket: OSError(5,)
+wrap_socket: OSError(-256, 'CONN_LOST')
<_SSLSocket
4
b''
diff --git a/tests/net_inet/tls_num_errors.py b/tests/net_inet/tls_num_errors.py
new file mode 100644
index 000000000..dd7f714e6
--- /dev/null
+++ b/tests/net_inet/tls_num_errors.py
@@ -0,0 +1,44 @@
+# test that modtls produces a numerical error message when out of heap
+
+try:
+ import usocket as socket, ussl as ssl, sys
+except:
+ import socket, ssl, sys
+try:
+ from micropython import alloc_emergency_exception_buf, heap_lock, heap_unlock
+except:
+ print("SKIP")
+ raise SystemExit
+
+
+# test with heap locked to see it switch to number-only error message
+def test(addr):
+ alloc_emergency_exception_buf(256)
+ s = socket.socket()
+ s.connect(addr)
+ try:
+ s.setblocking(False)
+ s = ssl.wrap_socket(s, do_handshake=False)
+ heap_lock()
+ print("heap is locked")
+ while True:
+ ret = s.write("foo")
+ if ret:
+ break
+ heap_unlock()
+ print("wrap: no exception")
+ except OSError as e:
+ heap_unlock()
+ # mbedtls produces "-29184"
+ # axtls produces "RECORD_OVERFLOW"
+ ok = "-29184" in str(e) or "RECORD_OVERFLOW" in str(e)
+ print("wrap:", ok)
+ if not ok:
+ print("got exception:", e)
+ s.close()
+
+
+if __name__ == "__main__":
+ # connect to plain HTTP port, oops!
+ addr = socket.getaddrinfo("micropython.org", 80)[0][-1]
+ test(addr)
diff --git a/tests/net_inet/tls_num_errors.py.exp b/tests/net_inet/tls_num_errors.py.exp
new file mode 100644
index 000000000..e6a15634d
--- /dev/null
+++ b/tests/net_inet/tls_num_errors.py.exp
@@ -0,0 +1,2 @@
+heap is locked
+wrap: True
diff --git a/tests/net_inet/tls_text_errors.py b/tests/net_inet/tls_text_errors.py
new file mode 100644
index 000000000..2ba167b86
--- /dev/null
+++ b/tests/net_inet/tls_text_errors.py
@@ -0,0 +1,33 @@
+# test that modtls produces a text error message
+
+try:
+ import usocket as socket, ussl as ssl, sys
+except:
+ import socket, ssl, sys
+
+
+def test(addr):
+ s = socket.socket()
+ s.connect(addr)
+ try:
+ s = ssl.wrap_socket(s)
+ print("wrap: no exception")
+ except OSError as e:
+ # mbedtls produces "mbedtls -0x7200: SSL - An invalid SSL record was received"
+ # axtls produces "RECORD_OVERFLOW"
+ # CPython produces "[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1108)"
+ ok = (
+ "invalid SSL record" in str(e)
+ or "RECORD_OVERFLOW" in str(e)
+ or "wrong version" in str(e)
+ )
+ print("wrap:", ok)
+ if not ok:
+ print("got exception:", e)
+ s.close()
+
+
+if __name__ == "__main__":
+ # connect to plain HTTP port, oops!
+ addr = socket.getaddrinfo("micropython.org", 80)[0][-1]
+ test(addr)