tests/net_inet/test_tls_sites.py: Integration test for SSL connections.
This attempts to bootstrap network tests for MicroPython. This commits sets test/net_inet/ as place for tests which require access to wide Internet. They aren't intended to be run as part of the main testsuite, instead to be run manually on demand. test_tls_sites.py in particular check that it's possible to establish SSL/TLS connection to select sites on the Internet: few references ones, plus those for which problems were reported, and resolved.
This commit is contained in:
parent
c06aa5be00
commit
4caa27ae0e
5
tests/net_inet/README
Normal file
5
tests/net_inet/README
Normal file
@ -0,0 +1,5 @@
|
||||
This direcctory contains network tests which require Internet connection.
|
||||
Note that these tests are not run as part of the main testsuite and need
|
||||
to be run seperately (from the main test/ directory):
|
||||
|
||||
./run-tests net_inet/*.py
|
56
tests/net_inet/test_tls_sites.py
Normal file
56
tests/net_inet/test_tls_sites.py
Normal file
@ -0,0 +1,56 @@
|
||||
try:
|
||||
import usocket as _socket
|
||||
except:
|
||||
import _socket
|
||||
try:
|
||||
import ussl as ssl
|
||||
except:
|
||||
import ssl
|
||||
|
||||
|
||||
def test_one(site, opts):
|
||||
ai = _socket.getaddrinfo(site, 443)
|
||||
addr = ai[0][-1]
|
||||
|
||||
s = _socket.socket()
|
||||
|
||||
try:
|
||||
s.connect(addr)
|
||||
|
||||
if "sni" in opts:
|
||||
s = ssl.wrap_socket(s, server_hostname=opts["host"])
|
||||
else:
|
||||
s = ssl.wrap_socket(s)
|
||||
|
||||
s.write(b"GET / HTTP/1.0\r\n\r\n")
|
||||
resp = s.read(4096)
|
||||
# print(resp)
|
||||
|
||||
finally:
|
||||
s.close()
|
||||
|
||||
|
||||
SITES = [
|
||||
"google.com",
|
||||
"www.google.com",
|
||||
"api.telegram.org",
|
||||
# "w9rybpfril.execute-api.ap-southeast-2.amazonaws.com",
|
||||
{"host": "w9rybpfril.execute-api.ap-southeast-2.amazonaws.com", "sni": True},
|
||||
]
|
||||
|
||||
|
||||
def main():
|
||||
for site in SITES:
|
||||
opts = {}
|
||||
if isinstance(site, dict):
|
||||
opts = site
|
||||
site = opts["host"]
|
||||
|
||||
try:
|
||||
test_one(site, opts)
|
||||
print(site, "ok")
|
||||
except Exception as e:
|
||||
print(site, repr(e))
|
||||
|
||||
|
||||
main()
|
4
tests/net_inet/test_tls_sites.py.exp
Normal file
4
tests/net_inet/test_tls_sites.py.exp
Normal file
@ -0,0 +1,4 @@
|
||||
google.com ok
|
||||
www.google.com ok
|
||||
api.telegram.org ok
|
||||
w9rybpfril.execute-api.ap-southeast-2.amazonaws.com ok
|
Loading…
x
Reference in New Issue
Block a user