import unittest

from aio_dtls.protocol_dtls import DTLSProtocol
from test.demo_server import DemoServer, DemoEndpoint, DemoProtocolClass


class TestHandshake(unittest.TestCase):
    def setUp(self) -> None:
        self.server = DemoServer()
        self.endpoint = DemoEndpoint()
        self.protocol = DTLSProtocol(self.server, self.server.connection_manager, self.endpoint, DemoProtocolClass)

    def test_generate_hello_verify_request(self):
        client_hello_empty_cookie = b'\x16\xfe\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00b\x01\x00\x00V\x00\x00\x00\x00\x00\x00\x00V\xfe\xfdaD\xb8r\x07L\xcf\xd6\xa1L?\x1e\xb6\x8c\x0cev\x8bd\x1c9\x88\xb3c\xf0\xe87@>g&\x84\x00\x00\x00\x04\xff\x00\x00\xff\x01\x00\x00(\x00\r\x00\x12\x00\x10\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x03\x03\x03\x01\x00\n\x00\x04\x00\x02\x00\x17\x00\x0b\x00\x02\x01\x00\x00\x17\x00\x00'
        client = ('192.168.1.18', 20102)
        self.protocol.datagram_received(client_hello_empty_cookie, client)
        # self.assertEqual(self.endpoint.sending_data[0][0], b"\x16\xfe\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00/\x03\x00\x00#\x00\x00\x00\x00\x00\x00\x00#\xfe\xfd )7\xfe\xbd\xdf\x05\xd0B\xd4\xd1G}$\xed\xbc\x13\xc1\x0b\xa4)zm\xd9e\xaewT&R\xea'\xfa")

        client_hello_cookie = b'\x16\xfe\xfd\x00\x00\x00\x00\x00\x00\x00\x03\x00\x82\x01\x00\x00v\x00\x01\x00\x00\x00\x00\x00v\xfe\xfdaD\xbd\xebT\x8c\x899;S\x80\xa0V\xd7\xe0x^\xcc!pGIH\xe5\xfd:\x0cx\xe5\x94\x01\xbd\x00 ]\xe7 \x0b\xc8\x92g\xf2\xcf#\x80\x8c~\xc3\xcd\x9b\xe3q\xf0\xcb\xe3\xd4\xf1<P"\xaeX\x91\xd1\x10\x95\x00\x04\xff\x00\x00\xff\x01\x00\x00(\x00\r\x00\x12\x00\x10\x06\x03\x06\x01\x05\x03\x05\x01\x04\x03\x04\x01\x03\x03\x03\x01\x00\n\x00\x04\x00\x02\x00\x17\x00\x0b\x00\x02\x01\x00\x00\x17\x00\x00'
        self.protocol.datagram_received(client_hello_cookie, client)
