3
sY]                 @   sh   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 G dd dejZ	dd Z
edkrde
  dS )    N)supportc               @   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jejdkdd d! Zd"S )$NetrcTestCasec          
   C   sh   t j|}d}tjdkr |d7 }tj \}}tj||d}|j| W d Q R X | j	tj
| tj|S )Nwcygwint)mode)textwrapdedentsysplatformtempfileZmkstemposfdopenwrite
addCleanupunlinknetrc)selfZ	test_datar   Ztemp_fdZtemp_filenamefp r    lib/python3.6/test/test_netrc.pymake_nrc   s    

zNetrcTestCase.make_nrcc             C   sP   | j d}| j|jd d	 | j|jd d
 | j |j }| j|j|j d S )Nz            machine host1.domain.com login log1 password pass1 account acct1
            default login log2 password pass2
            zhost1.domain.comlog1acct1pass1defaultlog2pass2)r   r   r   )r   Nr   )r   assertEqualhosts__repr__)r   nrcZnrc2r   r   r   test_default   s    zNetrcTestCase.test_defaultc             C   s*   | j d}| j|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 |}| j|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   s   | j dd d S )NzV            machine host.domain.com login log password #pass account acct
            z#pass)r&   )r   r   r   r   test_password_with_leading_hash/   s    z-NetrcTestCase.test_password_with_leading_hashc             C   s   | j dd d S )NzV            machine host.domain.com login log password pass# account acct
            zpass#)r&   )r   r   r   r    test_password_with_trailing_hash4   s    z.NetrcTestCase.test_password_with_trailing_hashc             C   s   | j dd d S )NzV            machine host.domain.com login log password pa#ss account acct
            zpa#ss)r&   )r   r   r   r    test_password_with_internal_hash9   s    z.NetrcTestCase.test_password_with_internal_hashpassc             C   s8   | j |}| j|jd dd |f | j|jd d d S )Nzfoo.domain.combarzbar.domain.comfoor*   )r,   Nr*   )r   r   r   )r   r!   r%   r   r   r   _test_comment>   s    
zNetrcTestCase._test_commentc             C   s   | j d d S )Nz            # comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            )r-   )r   r   r   r    test_comment_before_machine_lineC   s    z.NetrcTestCase.test_comment_before_machine_linec             C   s   | j d d S )Nz            #comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            )r-   )r   r   r   r   )test_comment_before_machine_line_no_spaceJ   s    z7NetrcTestCase.test_comment_before_machine_line_no_spacec             C   s   | j d d S )Nz            #
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            )r-   )r   r   r   r   *test_comment_before_machine_line_hash_onlyQ   s    z8NetrcTestCase.test_comment_before_machine_line_hash_onlyc             C   s   | j d d S )Nz            machine foo.domain.com login bar password pass # comment
            machine bar.domain.com login foo password pass
            )r-   )r   r   r   r   #test_comment_at_end_of_machine_lineX   s    z1NetrcTestCase.test_comment_at_end_of_machine_linec             C   s   | j d d S )Nz            machine foo.domain.com login bar password pass #comment
            machine bar.domain.com login foo password pass
            )r-   )r   r   r   r   ,test_comment_at_end_of_machine_line_no_space^   s    z:NetrcTestCase.test_comment_at_end_of_machine_line_no_spacec             C   s   | j dd d S )Nz            machine foo.domain.com login bar password #pass #comment
            machine bar.domain.com login foo password pass
            z#pass)r-   )r   r   r   r   1test_comment_at_end_of_machine_line_pass_has_hashd   s    z?NetrcTestCase.test_comment_at_end_of_machine_line_pass_has_hashposixzPOSIX only testc             C   s   t j}tj| | jt j| tjj|d}t|d}|j	d W d Q R X t j
 T}|jd| tj|d tj }| j|jd d
 tj|d	 | jtjtj W d Q R X d S )Nz.netrcZwtz                machine foo.domain.com login bar password pass
                default login foo password pass
                HOMEi  zfoo.domain.comr+   r*   i  )r+   Nr*   )r   ZTESTFNr   mkdirr   Zrmtreepathjoinopenr   ZEnvironmentVarGuardsetchmodr   r   r   ZassertRaisesZNetrcParseError)r   dfnfenvironr!   r   r   r   test_securityk   s    

zNetrcTestCase.test_securityN)r*   )__name__
__module____qualname__r   r"   r#   r&   r'   r(   r)   r-   r.   r/   r0   r1   r2   r3   unittestZ
skipUnlessr   namer@   r   r   r   r   r      s   
r   c               C   s   t jt d S )N)r   Zrun_unittestr   r   r   r   r   	test_main   s    rF   __main__)r   r   rD   r
   r   r   Ztestr   ZTestCaser   rF   rA   r   r   r   r   <module>   s
   0|