1# very basic test of ssl module, just to test the methods exist
2
3try:
4    import uio as io
5    import ussl as ssl
6except ImportError:
7    print("SKIP")
8    raise SystemExit
9
10# create in client mode
11try:
12    ss = ssl.wrap_socket(io.BytesIO(), server_hostname="test.example.com")
13except OSError as er:
14    print("wrap_socket:", repr(er))
15
16# create in server mode (can use this object for further tests)
17socket = io.BytesIO()
18ss = ssl.wrap_socket(socket, server_side=1)
19
20# print
21print(repr(ss)[:12])
22
23# setblocking() propagates call to the underlying stream object, and
24# io.BytesIO doesn't have setblocking() (in CPython too).
25# try:
26#    ss.setblocking(False)
27# except NotImplementedError:
28#    print('setblocking: NotImplementedError')
29# ss.setblocking(True)
30
31# write
32print(ss.write(b"aaaa"))
33
34# read (underlying socket has no data)
35print(ss.read(8))
36
37# read (underlying socket has data, but it's bad data)
38socket.write(b"aaaaaaaaaaaaaaaa")
39socket.seek(0)
40try:
41    ss.read(8)
42except OSError as er:
43    print("read:", repr(er))
44
45# close
46ss.close()
47# close 2nd time
48ss.close()
49
50# read on closed socket
51try:
52    ss.read(10)
53except OSError as er:
54    print("read:", repr(er))
55
56# write on closed socket
57try:
58    ss.write(b"aaaa")
59except OSError as er:
60    print("write:", repr(er))
61