o
    g                     @   sr   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mZ d dlm	Z	 G dd dej
Zedkr7e  dS dS )    N)support)	os_helperc                   @   s   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dZ
dd Zdd Zdd Zdd Zdd Zdd Zeejdkdd d! Zd"d# Zd$d% Zd&d' Zd(S )*NetrcTestCasec                 C   s|   t |}d}tjdkr|d7 }t \}}tj||d}|| W d    n1 s-w   Y  | 	tj
| t|S )Nwcygwint)mode)textwrapdedentsysplatformtempfilemkstemposfdopenwriteZ
addCleanupunlinknetrc)selfZ	test_datar   Ztemp_fdZtemp_filenamefp r   E/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_netrc.pymake_nrc   s   


zNetrcTestCase.make_nrcc                 C   sP   |  d}| |jd d | |jd d |  | }| |j|j d S )Nz            machine host1.domain.com login log1 password pass1 account acct1
            default login log2 password pass2
            zhost1.domain.com)Zlog1Zacct1Zpass1default)log2NZpass2)r   assertEqualhosts__repr__)r   nrcZnrc2r   r   r   test_default   s   
zNetrcTestCase.test_defaultc                 C   s*   |  d}| |jddgddgd d S )Nz            macdef macro1
            line1
            line2

            macdef macro2
            line3
            line4
            zline1
zline2
zline3
zline4
)Zmacro1Zmacro2)r   r   Zmacros)r   r   r   r   r   test_macros   s   
	zNetrcTestCase.test_macrosc                 C   s&   |  |}| |jd dd|f d S )Nzhost.domain.comlogZacctr   r   r   r   r   passwdr   r   r   _test_passwords,   s   
zNetrcTestCase._test_passwordsc                 C      |  dd d S )NzV            machine host.domain.com login log password #pass account acct
            #passr%   r   r   r   r   test_password_with_leading_hash0      z-NetrcTestCase.test_password_with_leading_hashc                 C   r&   )NzV            machine host.domain.com login log password pass# account acct
            zpass#r(   r)   r   r   r    test_password_with_trailing_hash5   r+   z.NetrcTestCase.test_password_with_trailing_hashc                 C   r&   )NzV            machine host.domain.com login log password pa#ss account acct
            zpa#ssr(   r)   r   r   r    test_password_with_internal_hash:   r+   z.NetrcTestCase.test_password_with_internal_hashpassc                 C   s8   |  |}| |jd dd |f | |jd d d S )Nfoo.domain.combarzbar.domain.com)ZfooNr.   r"   r#   r   r   r   _test_comment?   s   
zNetrcTestCase._test_commentc                 C      |  d d S )Nz            # comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            r1   r)   r   r   r    test_comment_before_machine_lineD      z.NetrcTestCase.test_comment_before_machine_linec                 C   r2   )Nz            #comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            r3   r)   r   r   r   )test_comment_before_machine_line_no_spaceK   r5   z7NetrcTestCase.test_comment_before_machine_line_no_spacec                 C   r2   )Nz            #
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            r3   r)   r   r   r   *test_comment_before_machine_line_hash_onlyR   r5   z8NetrcTestCase.test_comment_before_machine_line_hash_onlyc                 C   r2   )Nz            machine foo.domain.com login bar password pass # comment
            machine bar.domain.com login foo password pass
            r3   r)   r   r   r   #test_comment_at_end_of_machine_lineY   r5   z1NetrcTestCase.test_comment_at_end_of_machine_linec                 C   r2   )Nz            machine foo.domain.com login bar password pass #comment
            machine bar.domain.com login foo password pass
            r3   r)   r   r   r   ,test_comment_at_end_of_machine_line_no_space_   r5   z:NetrcTestCase.test_comment_at_end_of_machine_line_no_spacec                 C   r&   )Nz            machine foo.domain.com login bar password #pass #comment
            machine bar.domain.com login foo password pass
            r'   r3   r)   r   r   r   1test_comment_at_end_of_machine_line_pass_has_hashe   s   z?NetrcTestCase.test_comment_at_end_of_machine_line_pass_has_hashposixzPOSIX only testc              	   C   s   t d m}tj|d}t|d}|d W d    n1 s"w   Y  t  /}|d| t	|d t

 }| |jd d t	|d | t
jt
j
 W d    n1 s]w   Y  W d    d S W d    d S 1 suw   Y  d S )	N.netrcZwtz                    machine foo.domain.com login bar password pass
                    default login foo password pass
                    HOME  r/   )r0   Nr.   i  )r   temp_cwdr   pathjoinopenr   EnvironmentVarGuardsetchmodr   r   r   assertRaisesZNetrcParseError)r   dfnfenvironr   r   r   r   test_securityl   s$   
"zNetrcTestCase.test_securityc              	   C   s   t d 2}t  }|d| | ttj W d    n1 s"w   Y  W d    d S W d    d S 1 s:w   Y  d S )Nr=   )r   r?   rC   rD   rF   FileNotFoundErrorr   )r   rG   rJ   r   r   r   test_file_not_found_in_home   s   
"z)NetrcTestCase.test_file_not_found_in_homec                 C   s   | j ttjdd d S )NZunlikely_netrc)file)rF   rL   r   r)   r   r   r   test_file_not_found_explicit   s   

z*NetrcTestCase.test_file_not_found_explicitc              	      s   t d mtjd}t|d}|d W d    n1 s"w   Y  t|d tjjg   fdd}t	
tjd| t }|d\}}}| |d	 W d    n1 s`w   Y  |   W d    d S 1 suw   Y  d S )
Nr<   r   z.machine foo.domain.com login bar password passr>   c                    sZ     |  t }|d |d | }|W  d    S 1 s&w   Y  d S )Nr=   USERPROFILE)appendr   rC   rD   )srJ   resultZcalledZ	fake_homeZorig_expanduserr   r   fake_expanduser   s   

$z8NetrcTestCase.test_home_not_set.<locals>.fake_expanduser
expanduserr/   r0   )r   r?   r   r@   rA   rB   r   rE   rV   r   Z	swap_attrr   Zauthenticatorsr   Z
assertTrue)r   Zfake_netrc_pathrI   rU   r   ZloginZaccountpasswordr   rT   r   test_home_not_set   s    "zNetrcTestCase.test_home_not_setN)r.   )__name__
__module____qualname__r   r   r    r%   r*   r,   r-   r1   r4   r6   r7   r8   r9   r:   unittestZ
skipUnlessr   namerK   rM   rO   rX   r   r   r   r   r      s(    

r   __main__)r   r   r\   r   r   r	   testr   Ztest.supportr   ZTestCaser   rY   mainr   r   r   r   <module>   s   0  