
    dafn/                         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Zej                  Z
 G d dej                        Zedk(  r ej                          yy# e$ r dZY Bw xY w)    N)	os_helperc                   8   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Z ej8                  ej<                  dk(  d       ej>                  e du d      e!jD                  d                      Z#y)NetrcTestCasec                 v   t        j                  |      }d}t        j                  dk7  r|dz  }t	        t
        |d      5 }|j                  |       d d d        	 t        j                  t
              }t        j                  t
               |S # 1 sw Y   >xY w# t        j                  t
               w xY w)Nwcygwintzutf-8)encoding)
textwrapdedentsysplatformopentemp_filenamewritenetrcosunlink)self	test_datamodefpnrcs        */root/Python-3.12.4/Lib/test/test_netrc.pymake_nrczNetrcTestCase.make_nrc   s    OOI.	<<8#CKD-8 	 BHHY	 	%++m,CIIm$
	  	 
 IIm$s   BB BB8c                     | j                  d      }| j                  |j                  d   d       | j                  |j                  d   d       y )Nz            machine host.domain.com password pass1 login log1 account acct1
            default login log2 password pass2 account acct2
            host.domain.comlog1acct1pass1defaultlog2acct2pass2r   assertEqualhostsr   r   s     r    test_toplevel_non_ordered_tokensz.NetrcTestCase.test_toplevel_non_ordered_tokens   L    mm   	#457QR9-/IJ    c                     | j                  d      }| j                  |j                  d   d       | j                  |j                  d   d       y )Nz            machine host.domain.com login log1 password pass1 account acct1
            default login log2 password pass2 account acct2
            r   r   r"   r#   r'   r*   s     r   test_toplevel_tokensz"NetrcTestCase.test_toplevel_tokens"   r,   r-   c                     d}| j                  |      }| j                  |j                  ddgddgd       | j                  t        j
                  | j                   |j                  d      d d        y )	Nz            macdef macro1
            line1
            line2

            macdef macro2
            line3
            line4

        zline1
zline2
zline3
zline4
)macro1macro2 )r   r(   macrosassertRaisesr   NetrcParseErrorrstrip)r   datar   s      r   test_macroszNetrcTestCase.test_macros*   st    	 mmD!I0F1:I0F&H 	I 	%//++c*3B/	1r-   c                     d}|D ]2  }| j                  |      }| j                  |j                  d   d       4 d}|D ]2  }| j                  |      }| j                  |j                  d   d       4 y )N)zmachine host.domain.comzmachine host.domain.com loginzmachine host.domain.com accountz machine host.domain.com passwordz(machine host.domain.com login "" accountz)machine host.domain.com login "" passwordz+machine host.domain.com account "" passwordr   ) r<   r<   )r"   zdefault loginzdefault accountzdefault passwordzdefault login "" accountzdefault login "" passwordzdefault account "" passwordr"   r'   )r   r9   itemr   s       r   test_optional_tokensz"NetrcTestCase.test_optional_tokens<   s    
  	ID--%CSYY'89<H	I
  	AD--%CSYYy1<@	Ar-   c                 l    d}|D ]-  }| j                  t        j                  | j                  |       / y )N)zinvalid host.domain.comzmachine host.domain.com invalidzDmachine host.domain.com login log password pass account acct invalidzdefault host.domain.com invalidzDdefault host.domain.com login log password pass account acct invalid)r6   r   r7   r   )r   r9   r=   s      r   test_invalid_tokensz!NetrcTestCase.test_invalid_tokensV   s8    
  	JDe33T]]DI	Jr-   c                    | j                  |      }|dk(  r#| j                  |j                  d   |ddf       y |dk(  r#| j                  |j                  d   d|df       y |dk(  r#| j                  |j                  d   dd|f       y y )Nloginr   acctpassaccountlogpasswordr'   )r   r   tokenvalues       r   _test_token_xzNetrcTestCase._test_token_xa   s    mmC GSYY'89E66;RSiSYY'89E5&;QRj SYY'89E65;QR !r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd	       y )
NzW            machine host.domain.com login "log" password pass account acct
            rB   rF   zW            machine host.domain.com login log password pass account "acct"
            rE   rC   zW            machine host.domain.com login log password "pass" account acct
            rG   rD   rJ   r   s    r   test_token_value_quotesz%NetrcTestCase.test_token_value_quotesj   sN     %	! 	 F	$ 	 V	%r-   c                     | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  d	d
d       | j                  dd
d       y )NzW            machine host.domain.com login \"log password pass account acct
            rB   z"logzY            machine host.domain.com login "\"log" password pass account acct
            zW            machine host.domain.com login log password pass account \"acct
            rE   z"acctzY            machine host.domain.com login log password pass account "\"acct"
            zW            machine host.domain.com login log password \"pass account acct
            rG   z"passzY            machine host.domain.com login log password "\"pass" account acct
            rL   rM   s    r   test_token_value_escapez%NetrcTestCase.test_token_value_escapeu   s     &	" 	 &	" 	 G	% 	 G	% 	 W	& 	 W	&r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd	       y )
NzX            machine host.domain.com login "lo g" password pass account acct
            rB   zlo gzX            machine host.domain.com login log password "pas s" account acct
            rG   zpas szX            machine host.domain.com login log password pass account "acc t"
            rE   zacc trL   rM   s    r   test_token_value_whitespacez)NetrcTestCase.test_token_value_whitespace   sN     &	" 	 W	& 	 G	%r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd       y )NuV               machine host.domain.com login ¡¢ password pass account acct
            rB   u   ¡¢uU               machine host.domain.com login log password pass account ¡¢
            rE   uU               machine host.domain.com login log password ¡¢ account acct
            rG   rL   rM   s    r   test_token_value_non_asciiz(NetrcTestCase.test_token_value_non_ascii   sN     *	& 	 J	( 	 Z	)r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd	       y )
NzV            machine host.domain.com login #log password pass account acct
            rB   z#logzV            machine host.domain.com login log password pass account #acct
            rE   z#acctzV            machine host.domain.com login log password #pass account acct
            rG   #passrL   rM   s    r   test_token_value_leading_hashz+NetrcTestCase.test_token_value_leading_hash   N     &	" 	 G	% 	 W	&r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd	       y )
NzV            machine host.domain.com login log# password pass account acct
            rB   zlog#zV            machine host.domain.com login log password pass account acct#
            rE   zacct#zV            machine host.domain.com login log password pass# account acct
            rG   zpass#rL   rM   s    r   test_token_value_trailing_hashz,NetrcTestCase.test_token_value_trailing_hash   rX   r-   c                 v    | j                  ddd       | j                  ddd       | j                  ddd	       y )
NzV            machine host.domain.com login lo#g password pass account acct
            rB   zlo#gzV            machine host.domain.com login log password pass account ac#ct
            rE   zac#ctzV            machine host.domain.com login log password pa#ss account acct
            rG   zpa#ssrL   rM   s    r   test_token_value_internal_hashz,NetrcTestCase.test_token_value_internal_hash   rX   r-   c                     | j                  |      }| j                  |j                  d   dd|f       | j                  |j                  d   d       y )Nfoo.domain.combarr<   zbar.domain.com)foor<   rD   r'   )r   r   passwds      r   _test_commentzNetrcTestCase._test_comment   sL    mmC #34ub&6IJ#346IJr-   c                 &    | j                  d       y )Nz            # comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            rb   rM   s    r    test_comment_before_machine_linez.NetrcTestCase.test_comment_before_machine_line         	r-   c                 &    | j                  d       y )Nz            #comment
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            rd   rM   s    r   )test_comment_before_machine_line_no_spacez7NetrcTestCase.test_comment_before_machine_line_no_space   rf   r-   c                 &    | j                  d       y )Nz            #
            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            rd   rM   s    r   *test_comment_before_machine_line_hash_onlyz8NetrcTestCase.test_comment_before_machine_line_hash_only   rf   r-   c                 H    | j                  d       | j                  d       y )Nz            machine foo.domain.com login bar password pass
            # comment
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            # comment
            rd   rM   s    r   test_comment_after_machine_linez-NetrcTestCase.test_comment_after_machine_line   *      	
 	  	r-   c                 H    | j                  d       | j                  d       y )Nz            machine foo.domain.com login bar password pass
            #comment
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            #comment
            rd   rM   s    r   (test_comment_after_machine_line_no_spacez6NetrcTestCase.test_comment_after_machine_line_no_space   rm   r-   c                 H    | j                  d       | j                  d       y )Nz            machine foo.domain.com login bar password pass
            #
            machine bar.domain.com login foo password pass
            z            machine foo.domain.com login bar password pass
            machine bar.domain.com login foo password pass
            #
            rd   rM   s    r   )test_comment_after_machine_line_hash_onlyz7NetrcTestCase.test_comment_after_machine_line_hash_only   rm   r-   c                 &    | j                  d       y )Nz            machine foo.domain.com login bar password pass # comment
            machine bar.domain.com login foo password pass
            rd   rM   s    r   #test_comment_at_end_of_machine_linez1NetrcTestCase.test_comment_at_end_of_machine_line         	r-   c                 &    | j                  d       y )Nz            machine foo.domain.com login bar password pass #comment
            machine bar.domain.com login foo password pass
            rd   rM   s    r   ,test_comment_at_end_of_machine_line_no_spacez:NetrcTestCase.test_comment_at_end_of_machine_line_no_space  rt   r-   c                 (    | j                  dd       y )Nz            machine foo.domain.com login bar password #pass #comment
            machine bar.domain.com login foo password pass
            rV   rd   rM   s    r   1test_comment_at_end_of_machine_line_pass_has_hashz?NetrcTestCase.test_comment_at_end_of_machine_line_pass_has_hash
  s      	r-   posixzPOSIX only testNz"security check requires pwd modulec                    t         j                  }t        j                  |       | j	                  t         j
                  |       t        j                  j                  |d      }t        |d      5 }|j                  d       d d d        t        j                         5 }|j                  d|       t        j                  |d       t        j                         }| j                  |j                  d   d       t        j                  |d       | j!                  t        j"                  t        j                         d d d        t        |d      5 }|j                  d	       d d d        t        j                         5 }|j                  d|       t        j                  |d       t        j                         }| j                  |j                  d   d
       t        j                  |d       | j                  |j                  d   d
       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz.netrcwtz                machine foo.domain.com login bar password pass
                default login foo password pass
                HOMEi  r^   )r_   r<   rD   i  z                machine foo.domain.com login anonymous password pass
                default login foo password pass
                )	anonymousr<   rD   )r   TESTFNr   mkdir
addCleanuprmtreepathjoinr   r   EnvironmentVarGuardsetchmodr   r(   r)   r6   r7   )r   dfnfenvironr   s         r   test_securityzNetrcTestCase.test_security  s    
	((!,WW\\!X&"d^ 	qGG  	
 **, 	BKK"HHR++-CSYY'7802HHRe33U[[A	B "d^ 	qGG  	
 **, 	8KK"HHR++-CSYY'7868HHRSYY'7868	8 	8%	 	
	B 	B	 	
	8 	8s2   2H B H)H5BIH&)H25H>I
)rD   )$__name__
__module____qualname__r   r+   r/   r:   r>   r@   rJ   rN   rP   rR   rT   rW   rZ   r\   rb   re   rh   rj   rl   ro   rq   rs   rv   rx   unittest
skipUnlessr   nameskipIfpwdr   skip_unless_working_chmodr    r-   r   r   r      s    KK1$A4	JS	%&(	%	)	&	&	&K



 XG+->?X__SD["FG((!8 ) H @!8r-   r   __main__)r   r   r   r   r   test.supportr   r   ImportErrorr~   r   TestCaser   r   mainr   r-   r   <module>r      sl    ) ) ) "   j8H%% j8Z	 zHMMO e	  
Cs   A A#"A#