improved unicode encoding for the string in py2 and py3
[testsuite/python-testing-utils.git] / robotframework-onap / ONAPLibrary / SocketKeywords.py
1 import socket, ssl
2 from robot.api.deco import keyword
3
4
5 class SocketKeywords(object):
6     """SocketKeywords are common resource for simple socket keywords."""
7
8     def __init__(self):
9         super(SocketKeywords, self).__init__()
10
11     @keyword
12     def send_binary_data(self, host, port, data, ssl_enabled=None, cert_required=None, ca=None, cert=None, key=None):
13         """ send raw bytes over tcp socket with optional ssl """
14         if ssl_enabled:
15             if cert_required:
16                 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
17                 context.verify_mode = ssl.CERT_REQUIRED
18                 # Load CA cert
19                 context.load_verify_locations(str(ca))
20                 # Load Client cert and key
21                 context.load_cert_chain(str(cert), str(key))
22             else:
23                 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
24                 context.verify_mode = ssl.CERT_OPTIONAL
25             sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
26             ssock = context.wrap_socket(sock, server_hostname=str(host))
27             # Connect to server over ssl and send data
28             ssock.connect((str(host), int(port)))
29             ssock.sendall(bytes(data))
30             ssock.close()
31         else:
32             sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
33             # Connect to server and send data
34             sock.connect((str(host), int(port)))
35             sock.sendall(bytes(data))
36             sock.close()