U
    [e                     @   s`   d dl mZ d dlmZmZ ddlmZmZ ddlm	Z	 ddl
mZ dZd	ZG d
d deZdS )    )unicode_literals)DictUnion   )
DecodedURLURL)_percent_decode   )HyperlinkTestCasezhttp://example.com/#ua   https://%75%73%65%72:%00%00%00%00@xn--bcher-kva.ch:8080/a/nice%20nice/./path/?zot=23%25&zut#frégc                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestURLc                 C   s   t t}|jdkst|jdks&t|jdks4t|jdksBt|jdksPtt t	}|jdksht|jdksvt|jdkst|jd	kst|jd
kst|
ddgkst|jdkst|jdkstd S )Nhttpzexample.comP   ) r   httpsu
   bücher.chi  )az	nice nice.pathr   u   frégzot23%user)r   z    )r   	from_text	BASIC_URLschemeAssertionErrorhostportr   fragment	TOTAL_URLgetr   userinfo)selfZbdurldurl r"   a/var/www/html/services/stratfitenv/lib/python3.8/site-packages/hyperlink/test/test_decoded_url.pytest_durl_basic   s    

zTestURL.test_durl_basicc                 C   sh  t t}|djd dks"t|djd dks:t| |ksJt| |ksZt|djd dksrt|jdkstd|jkstd|	 jkst|
 jdkstd	| jd
 kst|jddtkst|jst|jst||j kstt jtdd}||jjddks*ttt td	dksHt|d
krVt|d
ksdtd S )Nzte%tz	../test2%/r   r   r   z	fr%C3%A9g r	   T)Zwith_password)Zlazyzhttp://example.com/%20)r   r   r   Zsiblingr   r   childclickr   	normalizeto_urir   Zto_irito_textabsoluterootedZencoded_urlZget_decoded_urlstrr   r    r!   durl2r"   r"   r#   test_passthroughs'   s.    


zTestURL.test_passthroughsc                 C   s,   t t}t|dt|j d ks(td S )NzDecodedURL(url=))r   r   r   repr_urlr   r    r!   r"   r"   r#   	test_reprM   s    
zTestURL.test_reprc                 C   sZ  t t}|ddgkst|dd}|ddgks>t|dd}|ddgks^tt | d}|ddgkst|d}|dg kstt d}|dd	d
gkst|ddddgkstt d}|dt dkst|jdddt dkst|jdddt dks6t|jddddt dksVtd S )Nr   r   r'   spacezspa%ed)urlz/?%61rg=b&arg=cargbcdu.   https://example.com/a/b/?fóó=1&bar=2&fóó=3u   fóózhttps://example.com/a/b/?bar=21)valueu&   https://example.com/a/b/?bar=2&fóó=3r	   )limitr   )r?   r@   )	r   r   r   r   r   addsetr+   remover6   r"   r"   r#   test_query_manipulationR   s8    



zTestURL.test_query_manipulationc                 C   s   t t}t t}t t}| }||ks2t||ks>t||ksJt|d k	sVt||jksdtttt f }i }|||< |||< t	|dkst|||< t	|dkst|||< t	|dkstd S )Nr	   r      )
r   r   r   r   r+   r   r5   r   r   len)r    r!   r1   ZburlZdurl_uriZAnyURLZdurl_mapr"   r"   r#   test_equality_and_hashabilityv   s$    


z%TestURL.test_equality_and_hashabilityc                 C   sH   t t}|j|j|j|j|j|j|j	|j
|j|jd	}||ksDtd S )N)	r   r   r   queryr   r   r.   r   uses_netloc)r   r   r   replacer   r   r   rH   r   r   r.   r   rI   r   r0   r"   r"   r#   test_replace_roundtrip   s    
zTestURL.test_replace_roundtripc              	   C   s0   t t}| t |jdd W 5 Q R X d S )N)r   pwZthiswillcauseafailure)r   )r   r   r   assertRaises
ValueErrorrJ   r6   r"   r"   r#   test_replace_userinfo   s    
zTestURL.test_replace_userinfoc                 C   sT   t t}|t tkstdt|ks,tdt|ks<t| | ksPtd S )Nr,   asText)r   r   r   ZfromTextr   dirr,   rP   r6   r"   r"   r#   test_twisted_compat   s
    
zTestURL.test_twisted_compatc              	   C   sZ   t ddkstt ddks t| t t ddd W 5 Q R X t ddddksVtd S )	Nu   abcdé%C3%A9éfgu   abcdéééfgu   abcdé%C3éfgT)Zraise_subencoding_excu   é%25éascii)Zsubencoding)r   r   rM   UnicodeDecodeError)r    r"   r"   r#   test_percent_decode_mixed   s
    z!TestURL.test_percent_decode_mixedc                 C   sP   t t}t d}||}|j|jks.t|j|jks>t|jdksLtd S )Nu   /tëst)u   tëst)r   r   r   r)   r   r   r   )r    r!   Z	durl_destZclickedr"   r"   r#   test_click_decoded_url   s    


zTestURL.test_click_decoded_urlc                 C   s>   t d}|jdkst|ddgks,t|jdks:td S )N/x+y%2B?a=b+c%2Bzx+y+r   b c+))r   rY   r   r   r   r   r   rH   r6   r"   r"   r#   test_decode_plus   s    
zTestURL.test_decode_plusc                 C   sB   t jddd}|jdkst|ddgks0t|jdks>td S )NrW   F)Zquery_plus_is_spacerX   r   b+c+))r   r\   rZ   r6   r"   r"   r#   test_decode_nonplussed   s     zTestURL.test_decode_nonplussedN)__name__
__module____qualname__r$   r2   r7   rD   rG   rK   rO   rR   rU   rV   r[   r]   r"   r"   r"   r#   r      s   &$	
r   N)
__future__r   typingr   r   r   r   r   r5   r   commonr
   r   r   r   r"   r"   r"   r#   <module>   s   