summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-06-21 01:58:36 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-06-21 01:58:36 +0300
commit4caa27ae0ec92af59ddacf57dd7fd43fcdd64c69 (patch)
treea2b8be32036669997c22c0d5049e11ebe8a9b0ac
parentc06aa5be00139dcb5fc8a47da5e38734355981e2 (diff)
downloadmicropython-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/README5
-rw-r--r--tests/net_inet/test_tls_sites.py56
-rw-r--r--tests/net_inet/test_tls_sites.py.exp4
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