a
    3j"%                     @   s   d dl Z d dlmZ d dlmZ d dlZd dlZd dlZd dl	Zd dl
Z
d dlZd dlZed G dd de jZG dd de jZG d	d
 d
e jZedkre   dS )    N)support)socket_helperZnetworkc                   @   s$   e Zd Zdd Zdd Zdd ZdS )URLTimeoutTestc                 C   s   t tj d S N)socketsetdefaulttimeoutr   ZINTERNET_TIMEOUTself r
   O/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_urllibnet.pysetUp   s    zURLTimeoutTest.setUpc                 C   s   t d  d S r   )r   r   r   r
   r
   r   tearDown   s    zURLTimeoutTest.tearDownc                 C   sb   |  tjj tjtjj}t	
|& tjtj}|  W d    n1 sT0    Y  d S r   )
addCleanupurllibrequest
urlcleanupparseurlparser   ZTEST_HTTP_URLnetlocr   transient_interneturlopenread)r	   domainfr
   r
   r   testURLread   s
    zURLTimeoutTest.testURLreadN)__name__
__module____qualname__r   r   r   r
   r
   r
   r   r      s   r   c                   @   sV   e Zd ZdZdd Zejdd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd ZdS )urlopenNetworkTestshttp://www.pythontest.net/c                 C   s   |  tjj d S r   r   r   r   r   r   r
   r
   r   r   5   s    zurlopenNetworkTests.setUpc              	   o   sf   |d }t |@ tjj|i |}z|V  W |  n
|  0 W d    n1 sX0    Y  d S Nr   )r   r   r   r   r   close)r	   argskwargsresourcerr
   r
   r   r   9   s    zurlopenNetworkTests.urlopenc                 C   s`   |  | j@}dD ]}| t||d|  q| | d W d    n1 sR0    Y  d S )N)r   readline	readlinesfilenor"   infogeturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r   url
assertTruehasattrr   )r	   open_urlattrr
   r
   r   
test_basicC   s    zurlopenNetworkTests.test_basicc                 C   sT   |  | j4}| | td | | td W d    n1 sF0    Y  d S )Nz readline did not return a stringzreadlines did not return a list)r   r,   assertIsInstancer'   bytesr(   list)r	   r/   r
   r
   r   test_readlinesL   s    z"urlopenNetworkTests.test_readlinesc                 C   sZ   |  | j:}| }| |tjjd | | d W d    n1 sL0    Y  d S )NzEobject returned by 'info' is not an instance of email.message.MessageZhtml)	r   r,   r*   r2   emailmessageMessageassertEqualZget_content_subtype)r	   r/   Zinfo_objr
   r
   r   	test_infoT   s    zurlopenNetworkTests.test_infoc                 C   sF   |  | j&}| }| || j W d    n1 s80    Y  d S r   )r   r,   r+   r9   )r	   r/   Z
gotten_urlr
   r
   r   test_geturl]   s    zurlopenNetworkTests.test_geturlc              	   C   s   | j d }t|v | t  tj |}W d    n1 sF0    Y  z|	 }W |
  n
|
  0 | |d W d    n1 s0    Y  d S )NZXXXinvalidXXXi  )r,   r   r   ZassertWarnsDeprecationWarningr   r   ZFancyURLopeneropenZgetcoder"   r9   )r	   ZURLr/   coder
   r
   r   test_getcodec   s    
.
z urlopenNetworkTests.test_getcodec                 C   s|   d}zt | W n ty$   Y n0 | d|  d}| jt|d" tjd| W d    n1 sn0    Y  d S )Nzsadflkjsasf.i.nvali.d.z&%r should not resolve for test to workzuopening an invalid URL did not raise OSError; can be caused by a broken DNS server (e.g. returns 404 or hijacks page)msgz
http://{}/)	r   gethostbynameOSErrorZskipTestZassertRaisesr   r   r   format)r	   Zbogus_domainZfailure_explanationr
   r
   r   test_bad_addresso   s    z$urlopenNetworkTests.test_bad_addressN)r   r   r   r,   r   
contextlibcontextmanagerr   r1   r5   r:   r;   r?   rE   r
   r
   r
   r   r   $   s   
			r   c                   @   sN   e Zd Zdd Zejdd Zdd Zdd Zd	d
 Z	dZ
dd Zdd ZdS )urlretrieveNetworkTestsc                 C   s   |  tjj d S r   r    r   r
   r
   r   r      s    zurlretrieveNetworkTests.setUpc              
   o   sr   |d }t |L tjj|i |\}}z||fV  W t| nt| 0 W d    n1 sd0    Y  d S r!   )r   r   r   r   urlretriever   unlink)r	   r#   r$   r%   file_locationr*   r
   r
   r   rI      s    z#urlretrieveNetworkTests.urlretrievec              	   C   s   |  | jb\}}| tj|d t|d }| | d W d    n1 sV0    Y  W d    n1 st0    Y  d S )Nz9file location returned by urlretrieve is not a valid pathrbz=reading from the file location returned by urlretrieve failed)rI   logor-   ospathexistsr=   r   r	   rK   r*   r   r
   r
   r   r1      s    z"urlretrieveNetworkTests.test_basicc              	   C   s   |  | jtjn\}}| |tj | tj| t	|d }| |
 d W d    n1 sf0    Y  W d    n1 s0    Y  d S )NrL   z"reading from temporary file failed)rI   rM   r   ZTESTFNr9   r-   rN   rO   rP   r=   r   rQ   r
   r
   r   test_specified_path   s    z+urlretrieveNetworkTests.test_specified_pathc                 C   sF   |  | j&\}}| |tjjd W d    n1 s80    Y  d S )Nz0info is not an instance of email.message.Message)rI   rM   r2   r6   r7   r8   )r	   rK   r*   r
   r
   r   test_header   s    z#urlretrieveNetworkTests.test_headerr   c              	   C   st   |  | jT\}}|d}d}zt|| W n  tyP   | d|  Y n0 W d    n1 sf0    Y  d S )NZDatez%a, %d %b %Y %H:%M:%S GMTzDate value not in %r format)rI   rM   gettimestrptime
ValueErrorZfail)r	   rK   fileheadersZ	datevalueZ
dateformatr
   r
   r   test_data_header   s    
z(urlretrieveNetworkTests.test_data_headerc                    s  g   fdd}| j | j|d \}}t|d }W d    n1 sF0    Y  t }| jt ddd |  d d d | j d d dd	| d |  d d
 | |  d d
 | dd  D }| j d d h|d| d | j d d  d d  |d| d d S )Nc                    s     | ||f d S r   )append)Zblocks
block_sizeZ
total_sizerecordsr
   r   recording_reporthook   s    zEurlretrieveNetworkTests.test_reporthook.<locals>.recording_reporthook)Z
reporthookzContent-Length   zKThere should always be two calls; the first one before the transfer starts.r@   r   zblock size can't be 0 in %s   c                 S   s   h | ]\}}}|qS r
   r
   ).0_r[   r
   r
   r   	<setcomp>       z:urlretrieveNetworkTests.test_reporthook.<locals>.<setcomp>zblock sizes in %s must be equalz9number of blocks * block size must be >= total size in %s)rI   rM   intreprZassertGreaterlenr9   ZassertGreaterEqual)r	   r^   rK   rX   Zexpected_sizeZrecords_reprZblock_sizesr
   r\   r   test_reporthook   s,    *z'urlretrieveNetworkTests.test_reporthookN)r   r   r   r   rF   rG   rI   r1   rR   rS   rM   rY   ri   r
   r
   r
   r   rH      s   
				rH   __main__)Zunittesttestr   Ztest.supportr   rF   r   urllib.parser   Zurllib.requestrN   Zemail.messager6   rU   ZrequiresZTestCaser   r   rH   r   mainr
   r
   r
   r   <module>   s   
rO