a
    xd                     @   s   d dl Z d dlmZ d dlZd dlZd dlmZmZmZ d dl	Zddl
mZmZ ddlmZmZmZ dd	 ZejG d
d dejjZdd Zdd ZdS )    N)partial)AF_INETSOCK_STREAMIPPROTO_TCP   )
client_ctx
SERVER_CTX   )open_ssl_over_tcp_streamopen_ssl_over_tcp_listenersserve_ssl_over_tcpc              	      s~   | 4 I d H X z,|  dI d H }|s&q8| |I d H  qW n tjyN   Y n0 W d   I d H  qz1 I d H sp0    Y  d S )Ni'  )receive_somesend_alltrioBrokenResourceError)streamdata r   ]/var/www/html/Ranjet/env/lib/python3.9/site-packages/trio/tests/test_highlevel_ssl_helpers.pyecho_handler   s    r   c                   @   s$   e Zd Ze Zdd Zdd ZdS )FakeHostnameResolverc                    s   t ttd| jfgS )N )r   r   r   sockaddrselfargsr   r   r   getaddrinfo%   s    z FakeHostnameResolver.getaddrinfoc                    s   t d S )N)NotImplementedErrorr   r   r   r   getnameinfo(   s    z FakeHostnameResolver.getnameinfoN)__name__
__module____qualname__attribr   r   r   r   r   r   r   r   !   s   r   c                    s  t  4 I d H }|tttdtddI d H \}|4 I d H X |jj	 }t
|}t j| tddI d H }|4 I d H P tt j | I d H  W d    n1 s0    Y  W d   I d H  q1 I d H s0    Y  tdd| dI d H }|4 I d H T tt j | I d H  W d    n1 s:0    Y  W d   I d H  qr1 I d H sh0    Y  tdd| dI d H }|4 I d H d t|t jsJ |jdksJ |dI d H  |d	I d H dksJ W d   I d H  q1 I d H s0    Y  |jrJ tdd| d
d	dI d H }|4 I d H $ |jsLJ W d   I d H  qz1 I d H sp0    Y  |j  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  d S )Nr   	127.0.0.1hostztrio-test-1.example.orgP   zxyzzy.example.org)ssl_context   xr   T)r(   https_compatibleZhappy_eyeballs_delay)r   Zopen_nurserystartr   r   r   r   transport_listenersocketgetsocknamer   Zset_custom_hostname_resolverr
   pytestZraisesr   do_handshake
isinstanceZ	SSLStreamserver_hostnamer   r   _https_compatibleZcancel_scopecancel)r   Znurserylistenerr   Zhostname_resolverr   r   r   r   1test_open_ssl_over_tcp_stream_and_everything_else.   sJ    V\H:r6   c               	      s   t dtddI d H \} | 4 I d H \ t| tjs4J | j}t|tjsJJ |j d dks`J | j	rjJ W d   I d H  q1 I d H s0    Y  t dtdddI d H \} | 4 I d H   | j	sJ W d   I d H  q1 I d H s0    Y  d S )Nr   r$   r%   T)r&   r*   )
r   r   r1   r   ZSSLListenerr,   ZSocketListenerr-   r.   r3   )r5   tlr   r   r    test_open_ssl_over_tcp_listenersc   s    4r8   )r/   	functoolsr   r"   r   Ztrio.socketr   r   r   Ztrio.testingZtest_sslr   r   Z_highlevel_ssl_helpersr
   r   r   r   sabcZHostnameResolverr   r6   r8   r   r   r   r   <module>   s   5