diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-06-21 01:58:36 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-06-21 01:58:36 +0300 |
commit | 4caa27ae0ec92af59ddacf57dd7fd43fcdd64c69 (patch) | |
tree | a2b8be32036669997c22c0d5049e11ebe8a9b0ac | |
parent | c06aa5be00139dcb5fc8a47da5e38734355981e2 (diff) | |
download | micropython-4caa27ae0ec92af59ddacf57dd7fd43fcdd64c69.tar.gz micropython-4caa27ae0ec92af59ddacf57dd7fd43fcdd64c69.zip |
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.
-rw-r--r-- | tests/net_inet/README | 5 | ||||
-rw-r--r-- | tests/net_inet/test_tls_sites.py | 56 | ||||
-rw-r--r-- | tests/net_inet/test_tls_sites.py.exp | 4 |
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/net_inet/README b/tests/net_inet/README new file mode 100644 index 0000000000..cdd49259aa --- /dev/null +++ b/tests/net_inet/README @@ -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 diff --git a/tests/net_inet/test_tls_sites.py b/tests/net_inet/test_tls_sites.py new file mode 100644 index 0000000000..67345fd0b9 --- /dev/null +++ b/tests/net_inet/test_tls_sites.py @@ -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() diff --git a/tests/net_inet/test_tls_sites.py.exp b/tests/net_inet/test_tls_sites.py.exp new file mode 100644 index 0000000000..12732d1fa5 --- /dev/null +++ b/tests/net_inet/test_tls_sites.py.exp @@ -0,0 +1,4 @@ +google.com ok +www.google.com ok +api.telegram.org ok +w9rybpfril.execute-api.ap-southeast-2.amazonaws.com ok |