
    M/eC-                        d Z ddlZddlZddlmZ ddlZddlmZ ddlmZ  G d dej                        Z	 G d d	ej                        Z
 G d
 dej                        Z G d dej                        Z G d dej                        Zedk(  r4 ej                   ej                   ej"                  dd egz                yy)z2 Tests for functions and classes in parser_obj.py     N)mock)COMMENT_BLOCK)	parse_rawc                       e Zd Zd Zd Zd Zy)CommentHelpersTestc                     ddl m}  |t        dg            sJ  |t        ddg            sJ  |t        g d            rJ y )Nr   )_is_comment#z literally anything elsenotevenacomment)"certbot_nginx._internal.parser_objr	   r   )selfr	   s     O/usr/lib/python3/dist-packages/certbot_nginx/_internal/tests/parser_obj_test.pytest_is_commentz"CommentHelpersTest.test_is_comment   sJ    B9cU+,,,9c+E%FGHHHy)HIJJJJ    c                     ddl m}  |t        t                    sJ  |t        ddg            rJ  |t        g d            rJ  |t        g d            rJ y )Nr   _is_certbot_commentr
   z not a certbot comment)r
   z managed by Certbotz also not a certbot commentr   )r   r   r   r   )r   r   s     r   test_is_certbot_commentz*CommentHelpersTest.test_is_certbot_comment   s}    J"m$& 	& &&s4568 	8 8&QRT 	T T&568 	8 8 8r   c                     ddl m} ddl m}  |d       } ||      sJ |j                         t        k(  sJ |j                  d      dgt        z   k(  sJ  |d d      j                  d      dgt        z   k(  sJ y )Nr   )_certbot_commentr   Tz         )r   r   r   dumpr   )r   r   r   r   s       r   test_certbot_commentz'CommentHelpersTest.test_certbot_comment"   sy    GJ"4("7+++||~...||D!fX%====a(--d3v7MMMMr   N)__name__
__module____qualname__r   r   r    r   r   r   r      s    K	8Nr   r   c                       e Zd Zd Zd Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z	y)ParsingHooksTestc                    ddl m} |j                  g       rJ |j                  dg      sJ |j                  dg      sJ |j                  ddg      sJ |j                  g g      rJ |j                  dg g      rJ y )Nr   Sentence wordtwowords)r   r'   should_parser   r'   s     r   test_is_sentencez!ParsingHooksTest.test_is_sentence-   s    ?((,,,$$bT***$$fX...$$eW%5666(("...((&"6666r   c                    ddl m} |j                  g       rJ |j                  dg      rJ |j                  ddg      rJ |j                  g gg g      rJ |j                  dgdg gg g      rJ |j                  dgdg      rJ |j                  dgdg gg      sJ |j                  d	gg g      sJ |j                  dgd
gdgdgg      sJ |j                  g ddgg      sJ y )Nr   Blockr(   r*   r+   
block_namehilolhellomany
statementshere)if z
(whatever))r   r1   r,   r   r1   s     r   test_is_blockzParsingHooksTest.test_is_block6   s   <%%b)))%%rd+++%%ug&6777%%tRj111%%~bz2&FGGG%%~u&=>>>!!L>D":">???!!G9b/222!!L>VH|nf3U"VWWW!!#<tf"EFFFr   z9certbot_nginx._internal.parser_obj.Parsable.parsing_hooksc                    t        j                         }d |_        t        j                         }d |_        ||f|_        t	        g         |       j
                  j                           |       j
                  j                          |j                          d |_        t	        g         |       j
                  j                           |       j
                  j                          y )Nc                      yNTr"   xs    r   <lambda>z1ParsingHooksTest.test_parse_raw.<locals>.<lambda>F       r   c                      yr?   r"   r@   s    r   rB   z1ParsingHooksTest.test_parse_raw.<locals>.<lambda>H   rC   r   c                      yNFr"   r@   s    r   rB   z1ParsingHooksTest.test_parse_raw.<locals>.<lambda>P   rC   r   )	r   Mockr,   return_valuer   parseassert_called_onceassert_not_called
reset_mock)r   parsing_hooksfake_parser1fake_parser2s       r   test_parse_rawzParsingHooksTest.test_parse_rawC   s    yy{$2!yy{$2!&2L%B""//1..0!$3!"..0//1r   c                 b   ddl m} t        j                         }d |_        |f|_        t        j                  |j                        5  t        g        d d d        d|_        t        j                  |j                        5  t        g        d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   errorsc                      yrF   r"   r@   s    r   rB   z:ParsingHooksTest.test_parse_raw_no_match.<locals>.<lambda>Y   rC   r   r"   )
certbotrS   r   rG   r,   rH   pytestraisesMisconfigurationErrorr   )r   rM   rS   rN   s       r   test_parse_raw_no_matchz(ParsingHooksTest.test_parse_raw_no_matchU   s    "yy{$3!&2_"]]6778 	bM	%'"]]6778 	bM	 		 		 	s   
BB%B"%B.c                     t        j                         }d |_        |f|_        t	        g         |       j
                  j                  g d       t	        g d        |       j
                  j                  g d       y )Nc                      yr?   r"   r@   s    r   rB   zCParsingHooksTest.test_parse_raw_passes_add_spaces.<locals>.<lambda>d   rC   r   FT
add_spaces)r   rG   r,   rH   r   rI   assert_called_with)r   rM   rN   s      r    test_parse_raw_passes_add_spacesz1ParsingHooksTest.test_parse_raw_passes_add_spacesa   s`    yy{$2!&2_""//E:"&//D9r   N)
r   r    r!   r.   r<   r   patchrP   rY   r_   r"   r   r   r$   r$   ,   sp    7G TZZKL2 M2" TZZKL	 M	 TZZKL: M:r   r$   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	SentenceTestc                 *    ddl m}  |d       | _        y )Nr   r&   )r   r'   sentencer-   s     r   setUpzSentenceTest.setUpm   s    ? r   c                    ddl m} t        j                  |j                        5  | j
                  j                  d       d d d        t        j                  |j                        5  | j
                  j                  g g       d d d        t        j                  |j                        5  | j
                  j                  dg       d d d        y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   rR   r4      )rU   rS   rV   rW   rX   rd   rI   r   rS   s     r   $test_parse_bad_sentence_raises_errorz1SentenceTest.test_parse_bad_sentence_raises_errorq   s    "]]6778 	'MM&	']]6778 	&MM%	&]]6778 	%MM$	% 	%		' 	'	& 	&	% 	%s#   C)C-C+CC(+C4c                     g d}| j                   j                  |       | j                   j                  g dk(  sJ | j                   j                         g dk(  sJ | j                   j                  d      |k(  sJ y )N)z
r5   r:   r:   z	
  r4   r:   spaces)r5   r4   rk   T)rd   rI   r+   r   )r   og_sentences     r   &test_parse_sentence_words_hides_spacesz3SentenceTest.test_parse_sentence_words_hides_spacesz   sk    QK(}}""&@@@@}}!!#'AAAA}}!!$';666r   c                    | j                   j                  ddgd       | j                   j                  d      g dk(  sJ | j                   j                  g dd       | j                   j                  d      g dk(  sJ y )Nr3   thereTr\   )r3   r:   ro   )oner:   spacenone)rp   r:   rq   r:   rr   )rd   rI   r   r   s    r   #test_parse_sentence_with_add_spacesz0SentenceTest.test_parse_sentence_with_add_spaces   sq    T7O=}}!!$'+????9dK}}!!$'+MMMMr   c                     g dg}| j                   j                  g d       t        | j                   j                               D ]  \  }}|j	                         ||   k(  rJ  y )N)123)rv   r:   rw   r:   rx   )rd   rI   	enumerateiterater   )r   expectedird   s       r   test_iteratezSentenceTest.test_iterate   sZ    #$56$T]]%:%:%<= 	2KAx==?hqk111	2r   c                     | j                   j                  ddgd       | j                   j                          | j                   j                  d      d   dk(  sJ | j                   j                  ddgd       y )NtabsplsTr\   r   
    )rd   rI   set_tabsr   rs   s    r   test_set_tabszSentenceTest.test_set_tabs   sj    VUO= }}!!$'*h666VUO=r   c                    | j                   j                  ddg       | j                   j                         dk(  sJ | j                   j                  ddg       | j                   j                         dk(  sJ | j                   j                  ddg       | j                   j                         dk(  sJ | j                   j                  ddg       | j                   j                         dk(  sJ y )	Nnor   r(   z
 
  r   z
	  z	  z
	 
)rd   rI   get_tabsrs   s    r   test_get_tabszSentenceTest.test_get_tabs   s    T6N+}}%%'2---Y/0}}%%'4///Xv./}}%%'6111Y/0}}%%'2---r   N)
r   r    r!   re   ri   rm   rt   r}   r   r   r"   r   r   rb   rb   l   s&    '%7N2>.r   rb   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)		BlockTestc                     ddl m}  |d       | _        ddg| _        ddgddgdd	gg| _        | j                  j                  | j                  | j                  g       y )
Nr   r0   servernamethingrv   rw   anotherrp   )r   r1   blocr   contentsrI   r;   s     r   re   zBlockTest.setUp   sT    <$K	v&	!3'3)U9KL		DMM23r   c                 B   | j                   t        | j                   j                               k(  sJ | j                   j                         g| j                  z   }t        | j                   j                  d            D ]  \  }}||   |j                         k(  rJ  y )NT)expanded)r   nextrz   r   r   ry   r   r{   r|   elems       r   r}   zBlockTest.test_iterate   s    yyD!2!2!45555IINN$%5 !2!2D!2!AB 	.GAtA;$))+---	.r   c                 2   ddl m ddl m ddgddgg}t        | j                  j                  dfd	            D ]  \  }}||   |j                         k(  rJ  | j                  t        | j                  j                  dfd
	            k(  sJ y )Nr   r0   r&   r   rv   rw   Tc                 <    t        |       xr d| j                  v S )Nr   )
isinstancer+   )rA   r'   s    r   rB   z.BlockTest.test_iterate_match.<locals>.<lambda>   s    Jq(3J1778J r   )r   matchc                 <    t        |       xr d| j                  v S )Nr   )r   names)rA   r1   s    r   rB   z.BlockTest.test_iterate_match.<locals>.<lambda>   s    Jq%0HX5H r   )r   r1   r'   ry   r   rz   r   r   )r   r{   r|   r   r1   r'   s       @@r   test_iterate_matchzBlockTest.test_iterate_match   s    <?cNWcN3 !2!2DJ "3 "L M 	.GAtA;$))+---	. yyD!2!2H "3 "J K K 	K Kr   c                 T   dd l }| j                  j                  |j                  | j                        | j                  gd       | j                  j                         | j                  | j                  gk(  sJ | j                  j                  d      g dg dg dg dggk(  sJ y )Nr   Tr\   )r   r:   r   r:   )r   r:   rv   )r   r:   rw   )r   r:   rp   )copyr   rI   r   r   r   )r   r   s     r   test_parse_with_added_spacesz&BlockTest.test_parse_with_added_spaces   s    		499-t}}=$Oyy~~DIIt}}#====yy~~d#(  $&(' ' 	' 'r   c                    ddl m} t        j                  |j                        5  | j
                  j                  g gg gg       d d d        t        j                  |j                        5  | j
                  j                  dg       d d d        t        j                  |j                        5  | j
                  j                  ddg       d d d        y # 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)Nr   rR   r4   fakenews)rU   rS   rV   rW   rX   r   rI   rh   s     r   test_bad_parse_raises_errorz%BlockTest.test_bad_parse_raises_error   s    "]]6778 	*IIOObTB4L)	*]]6778 	%IIOOUG$	%]]6778 	.IIOOVV,-	. 	.		* 	*	% 	%	. 	.s#    C-C$1C0C!$C-0C9c                 `   | j                   j                          | j                   j                  j                  d      d   dk(  sJ | j                   j                  j                  d      d d D ]  }|d   dk(  rJ  | j                   j                  j                  d      d   d   dk(  sJ y )NTr   r   z	
        
)r   r   r   r   r   )r   r   s     r   r   zBlockTest.test_set_tabs   s    		yy##D)!,888II&&++D1#26 	+D7l***	+yy!!&&t,R03t;;;r   c                     | j                   j                  ddgg g       | j                   j                         dk(  sJ y )Nz 
  	r4     	)r   rI   r   rs   s    r   r   zBlockTest.test_get_tabs   s7    		)U+R01yy!!#v---r   N)
r   r    r!   re   r}   r   r   r   r   r   r"   r   r   r   r      s&    4.K'.<.r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
StatementsTestc                 l    ddl m}  |d       | _        ddgddgddgg| _        g dg d	g d
dg| _        y )Nr   )
Statementsrd   rp   r*   andr   )
  rd   r:   rp   )r   rd   r:   r*   )r   r   r:   r   z

)r   r   r7   raw
raw_spaced)r   r   s     r   re   zStatementsTest.setUp   sI    A$T*I
 -,+	
r   c                     | j                   j                  | j                         | j                   j                          | j                   j	                         D ]  }|j                  d      d   dk(  rJ  y )NTr   r   )r7   rI   r   r   rz   r   r   	statements     r   r   zStatementsTest.test_set_tabs   s`    dhh'  "002 	7I>>$'*h666	7r   c                    | j                   j                  | j                         t        j                         | j                   _        d| j                   j
                  j                  _        | j                   j                          | j                   j                         D ]  }|j                  d      d   dk(  rJ  | j                   j                  d      d   dk(  sJ y )Nz		Tr   r   r   z
		)r7   rI   r   r   rG   parentr   rH   r   rz   r   r   s     r   test_set_tabs_with_parentz(StatementsTest.test_set_tabs_with_parent   s    dhh'!%7=''4  "002 	7I>>$'*h666	7##D)"-999r   c                 >   | j                   d   j                  dd       | j                  j                  | j                          | j                  j	                         dk(  sJ | j                  j                  g        | j                  j	                         dk(  sJ y )Nr   z
 
  	r   r(   )r   insertr7   rI   r   rs   s    r   r   zStatementsTest.test_get_tabs   sx    1k*dhh''')V333b!'')R///r   c                     | j                   j                  | j                  d       | j                   j                  d      d   g dk(  sJ y )NTr\   r   )rd   r:   rp   )r7   rI   r   r   rs   s    r   r   z+StatementsTest.test_parse_with_added_spaces   s@    dhh48##D)!,0HHHHr   c                     ddl m} t        j                  |j                        5  | j
                  j                  d       d d d        y # 1 sw Y   y xY w)Nr   rR   zlol not a list)rU   rS   rV   rW   rX   r7   rI   rh   s     r    test_parse_bad_list_raises_errorz/StatementsTest.test_parse_bad_list_raises_error  s?    "]]6778 	4OO!!"23	4 	4 	4s   AAc                 V   | j                   j                  | j                  dgz          t        | j                   j	                         d   t
              sJ | j                   j	                  d      d   j                         du sJ | j                   j	                  d      d   dk(  sJ y )Nz

  r   T)r7   rI   r   r   r   listisspacers   s    r   $test_parse_hides_trailing_whitespacez3StatementsTest.test_parse_hides_trailing_whitespace	  s    dhh(34$//..04d;;;##D)"-5574???##D)"-999r   c                     | j                   j                  | j                         ddgddgg}t        | j                   j	                  d             D ]  \  }}||   |j                         k(  rJ  y )Nrd   rp   r*   c                 
    d| v S )Nrd   r"   r@   s    r   rB   z-StatementsTest.test_iterate.<locals>.<lambda>  s    WX r   )r   )r7   rI   r   ry   rz   r   r   s       r   r}   zStatementsTest.test_iterate  so    dhh''*e)<= !8!8?X!8!YZ 	.GAtA;$))+---	.r   N)r   r    r!   re   r   r   r   r   r   r   r}   r"   r   r   r   r      s+    
7:0I4
:.r   r   __main__   )__doc__sysunittestr   rV   r   r   r   TestCaser   r$   rb   r   r   r   exitmainargv__file__r"   r   r   <module>r      s    9 
    < 8N** N8=:x(( =:@/.8$$ /.d9.!! 9.v:.X&& :.z zCHH[V[[!"
234 r   