
    i.                        d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
Z
ej                  j                  d e e	e      j                  j                               ddlmZ  G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)z-Tests for curl_to_fetcher.py - TDD RED phase.    N)Path)
parse_curlc                   ,    e Zd ZddZddZddZddZy)TestBasicGetUrlNc                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   }d
}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nzcurl 'https://example.com'urlhttps://example.com==z%(py1)s == %(py4)spy1py4assert %(py6)spy6methodGETr   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationselfresult@py_assert0@py_assert3@py_assert2@py_format5@py_format7s          9/home/jay/workspace/scripts/tests/test_curl_to_fetcher.pytest_simple_urlzTestBasicGetUrl.test_simple_url   s    89e}5 55} 55555} 5555}555 55555555h(5(5((((5((((((5(((((((    c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz1curl -H 'Accept: text/html' 'https://example.com'r   r	   r
   r   r   r   r   r   r   s          r"   test_url_as_last_argz$TestBasicGetUrl.test_url_as_last_arg   s_    OPe}5 55} 55555} 5555}555 55555555r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz!curl https://example.com/path?q=1r   zhttps://example.com/path?q=1r
   r   r   r   r   r   r   s          r"   test_url_without_quotesz'TestBasicGetUrl.test_url_without_quotes   s_    ?@e}> >>} >>>>>} >>>>}>>> >>>>>>>>r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   }i }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   }i }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|j                  }d} ||      }d	}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |	      dz  }dd|iz  }t	        t        j
                  |            d	x}x}x}x}
}	|j                  }d} ||      }d	}	||	u }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |	      dz  }dd|iz  }t	        t        j
                  |            d	x}x}x}x}
}	y	)u$   URL만 있는 최소 curl 명령어.zcurl https://example.comr   r	   r
   r   r   r   r   Nr   r   headerscookiesdata)is)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} is %(py9)sr   )py0py2r   r   py9zassert %(py11)spy11proxy)
r   r   r   r   r   r   get@py_builtinslocals_should_repr_global_name)r   r   r   r   r   r    r!   @py_assert1@py_assert5@py_assert8@py_assert7@py_format10@py_format12s                r"   test_minimal_curlz!TestBasicGetUrl.test_minimal_curl   s   67e}5 55} 55555} 5555}555 55555555h(5(5((((5((((((5(((((((i &B& B&&&& B&&& &&&B&&&&&&&i &B& B&&&& B&&& &&&B&&&&&&&zz)&)z&!)T)!T))))!T))))))v)))v)))z)))&)))!)))T)))))))zz*'*z'"*d*"d****"d******v***v***z***'***"***d********r$   returnN)__name__
__module____qualname__r#   r&   r(   r=    r$   r"   r   r      s    )
6?+r$   r   c                   4    e Zd ZddZddZddZddZddZy)TestPostRequestNc                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   }d
}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nz/curl -X POST -d 'key=value' https://example.comr   POSTr
   r   r   r   r   r,   	key=valuer   r   s          r"   test_post_with_data_flagz(TestPostRequest.test_post_with_data_flag.   s    MNh)6)6))))6))))))6)))))))f~,,~,,,,~,,,~,,,,,,,,,,r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}y	)u0   --data가 있으면 -X 없어도 POST로 추론.z+curl --data 'key=value' https://example.comr   rG   r
   r   r   r   r   Nr,   rH   r   r   s          r"   test_post_inferred_from_dataz,TestPostRequest.test_post_inferred_from_data3   s    IJh)6)6))))6))))))6)))))))f~,,~,,,,~,,,~,,,,,,,,,,r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   }d
}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nz.curl --data-raw 'raw body' https://example.comr,   zraw bodyr
   r   r   r   r   r   rG   r   r   s          r"   test_data_rawzTestPostRequest.test_data_raw9   s    LMf~++~++++~+++~++++++++++h)6)6))))6))))))6)))))))r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   }d
}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nz4curl --data-binary 'binary body' https://example.comr,   zbinary bodyr
   r   r   r   r   r   rG   r   r   s          r"   test_data_binaryz TestPostRequest.test_data_binary>   s    RSf~..~....~...~..........h)6)6))))6))))))6)))))))r$   c                 ~   d}t        d| d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }t	        t        j
                  |            dx}x}}|d   }||k(  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }	t	        t        j
                  |	            dx}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }t	        t        j
                  |            dx}x}}y)u   data가 JSON인 경우.z{"name": "test", "value": 42}z5curl -X POST -H 'Content-Type: application/json' -d 'z' https://api.example.comr   rG   r
   r   r   r   r   Nr,   )z%(py1)s == %(py3)s	json_bodyr   py3assert %(py5)spy5r*   Content-Typeapplication/json	r   r   r   r   r   r   r4   r5   r6   )
r   rQ   r   r   r   r   r    r!   @py_format4@py_format6s
             r"   test_post_with_json_dataz(TestPostRequest.test_post_with_json_dataC   s*   3	G	{Rkl
 h)6)6))))6))))))6)))))))f~*~****~***~****************i 0F4FF04FFFFF04FFFF0FFF4FFFFFFFFr$   r>   )r@   rA   rB   rI   rK   rM   rO   r[   rC   r$   r"   rE   rE   -   s    -
-*
*
Gr$   rE   c                   ,    e Zd ZddZddZddZddZy)TestHeaderParsingNc                     t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nz/curl -H 'Accept: text/html' https://example.comr*   Accept	text/htmlr
   r   r   r   r   r   r   s          r"   test_single_headerz$TestHeaderParsing.test_single_headerR   sd    MNi *9k9*k9999*k999*999k9999999r$   c                 &   t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}|d   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )NzHcurl -H 'Accept: text/html' -H 'Accept-Language: ko' https://example.comr*   r_   r`   r
   r   r   r   r   Accept-Languagekor   r   s          r"   test_multiple_headersz'TestHeaderParsing.test_multiple_headersV   s    iji *9k9*k9999*k999*999k9999999i !23;t;3t;;;;3t;;;3;;;t;;;;;;;r$   c                     t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nz6curl -H "Accept: application/json" https://example.comr*   r_   rW   r
   r   r   r   r   r   r   s          r"   test_header_with_double_quotesz0TestHeaderParsing.test_header_with_double_quotes[   sh    TUi *@.@@*.@@@@@*.@@@@*@@@.@@@@@@@@r$   c                     t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nz;curl --header 'User-Agent: Mozilla/5.0' https://example.comr*   z
User-AgentMozilla/5.0r
   r   r   r   r   r   r   s          r"   test_long_header_optionz)TestHeaderParsing.test_long_header_option_   sd    YZi .?-?.-????.-???.???-???????r$   r>   )r@   rA   rB   ra   re   rg   rj   rC   r$   r"   r]   r]   Q   s    :<
A@r$   r]   c                       e Zd ZddZddZy)TestCookieFromHeaderNc                 $   t        d      }d}|d   }||v}|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nz>curl -H 'Cookie: session=abc123; user=xyz' https://example.comCookier*   not inz%(py1)s not in %(py4)sr   r   r   r+   sessionabc123r
   r   userxyzr   r   s          r"   'test_cookie_header_extracted_to_cookiesz<TestCookieFromHeader.test_cookie_header_extracted_to_cookiesh   s   \]0vi00x00000x0000x00000000000i +7x7+x7777+x777+777x7777777i (1E1(E1111(E111(111E1111111r$   c                 $   t        d      }d}|d   }||v}|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )NzIcurl -H 'Accept: text/html' -H 'Cookie: token=secret' https://example.comrn   r*   ro   rq   r   r   r   r+   tokensecretr
   r   r_   r`   r   r   s          r"   +test_cookie_header_does_not_pollute_headersz@TestCookieFromHeader.test_cookie_header_does_not_pollute_headersn   s   jk0vi00x00000x0000x00000000000i )5X5)X5555)X555)555X5555555i *9k9*k9999*k999*999k9999999r$   r>   )r@   rA   rB   rv   rz   rC   r$   r"   rl   rl   g   s    2:r$   rl   c                   ,    e Zd ZddZddZddZddZy)TestBCookieFlagNc                     t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nz,curl -b 'session=abc123' https://example.comr+   rr   rs   r
   r   r   r   r   r   r   s          r"   test_b_flag_single_cookiez)TestBCookieFlag.test_b_flag_single_cookiey   sd    JKi +7x7+x7777+x777+777x7777777r$   c                 &   t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}|d   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )Nz6curl -b 'session=abc123; user=xyz' https://example.comr+   rr   rs   r
   r   r   r   r   rt   ru   r   r   s          r"   test_b_flag_multiple_cookiesz,TestBCookieFlag.test_b_flag_multiple_cookies}   s    TUi +7x7+x7777+x777+777x7777777i (1E1(E1111(E111(111E1111111r$   c                     t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nz1curl --cookie 'token=mytoken' https://example.comr+   rx   mytokenr
   r   r   r   r   r   r   s          r"   test_cookie_long_flagz%TestBCookieFlag.test_cookie_long_flag   sd    OPi )6Y6)Y6666)Y666)666Y6666666r$   c                 &   t        d      }|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d
x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d
x}x}}y
)u1   -b 와 -H Cookie: 가 동시에 있으면 병합.z2curl -b 'a=1' -H 'Cookie: b=2' https://example.comr+   a1r
   r   r   r   r   Nb2r   r   s          r"   %test_b_flag_merges_with_cookie_headerz5TestBCookieFlag.test_b_flag_merges_with_cookie_header   s    PQi %,,%,,,,%,,,%,,,,,,,,,,i %,,%,,,,%,,,%,,,,,,,,,,r$   r>   )r@   rA   rB   r~   r   r   r   rC   r$   r"   r|   r|   x   s    82
7-r$   r|   c                       e Zd ZddZddZy)	TestProxyNc                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz;curl -x 'http://proxy.example.com:8080' https://example.comr2   zhttp://proxy.example.com:8080r
   r   r   r   r   r   r   s          r"   test_x_proxyzTestProxy.test_x_proxy   s_    YZgA"AA"AAAAA"AAAAAAA"AAAAAAAAr$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz@curl --proxy 'http://proxy.example.com:3128' https://example.comr2   zhttp://proxy.example.com:3128r
   r   r   r   r   r   r   s          r"   test_proxy_long_flagzTestProxy.test_proxy_long_flag   s_    ^_gA"AA"AAAAA"AAAAAAA"AAAAAAAAr$   r>   )r@   rA   rB   r   r   rC   r$   r"   r   r      s    BBr$   r   c                       e Zd ZddZddZy)TestMultilineCurlNc                 *   d}t        |      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )NzRcurl 'https://example.com' \
  -H 'Accept: text/html' \
  -H 'Accept-Language: ko'r   r	   r
   r   r   r   r   r*   r_   r`   rc   rd   r   r   curl_cmdr   r   r   r   r    r!   s           r"    test_backslash_line_continuationz2TestMultilineCurl.test_backslash_line_continuation   s   qH%e}5 55} 55555} 5555}555 55555555i *9k9*k9999*k999*999k9999999i !23;t;3t;;;;3t;;;3;;;t;;;;;;;r$   c                 6   d}t        |      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}y	)u9   실제 DevTools에서 복사한 멀티라인 curl 형식.zcurl 'https://api.example.com/data' \
  -X 'POST' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer token123' \
  -H 'Cookie: session=abc; csrf=xyz' \
  --data-raw '{"key": "value"}'r   zhttps://api.example.com/datar
   r   r   r   r   Nr   rG   r*   rV   rW   AuthorizationzBearer token123r+   rr   abccsrfru   r,   z{"key": "value"}r   r   s           r"   test_devtools_style_multilinez/TestMultilineCurl.test_devtools_style_multiline   sr   0 	 H%e}> >>} >>>>>} >>>>}>>> >>>>>>>>h)6)6))))6))))))6)))))))i 0F4FF04FFFFF04FFFF0FFF4FFFFFFFFi 1F5FF15FFFFF15FFFF1FFF5FFFFFFFFi +4u4+u4444+u444+444u4444444i (1E1(E1111(E111(111E1111111f~3!33~!33333~!3333~333!33333333r$   r>   )r@   rA   rB   r   r   rC   r$   r"   r   r      s    <4r$   r   c                       e Zd ZddZddZy)TestCompressedIgnoredNc                 d   t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}d	}||v}|st        j                  d
|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t	        t        j
                  |            d x}}|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )Nz'curl --compressed 'https://example.com'r   r	   r
   r   r   r   r   
compressedro   z%(py1)s not in %(py3)sr   rR   rT   rU   r   r   rX   	r   r   r   r   r   r    r!   rY   rZ   s	            r"   test_compressed_flag_ignoredz2TestCompressedIgnored.test_compressed_flag_ignored   s
   EFe}5 55} 55555} 5555}555 55555555)|6))))|6)))|))))))6)))6)))))))h(5(5((((5((((((5(((((((r$   c                 j   t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}|d	   d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}d}||v}|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t	        t        j
                  |            d x}}y )Nz>curl -H 'Accept: text/html' --compressed 'https://example.com'r   r	   r
   r   r   r   r   r*   r_   r`   r   ro   r   r   rR   rT   rU   rX   r   s	            r"    test_compressed_with_other_flagsz6TestCompressedIgnored.test_compressed_with_other_flags   s   \]e}5 55} 55555} 5555}555 55555555i *9k9*k9999*k999*999k9999999)|6))))|6)))|))))))6)))6)))))))r$   r>   )r@   rA   rB   r   r   rC   r$   r"   r   r      s    )*r$   r   c                   ,    e Zd ZddZddZddZddZy)TestErrorHandlingNc                 z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Ncurl)match pytestraises
ValueErrorr   r   s    r"   test_empty_string_raisesz*TestErrorHandling.test_empty_string_raises   s,    ]]:V4 	rN	 	 	s   1:c                 v    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)Nz   r   r   s    r"   test_whitespace_only_raisesz-TestErrorHandling.test_whitespace_only_raises   s+    ]]:& 	u	 	 	   /8c                 v    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)Nzcurl -H 'Accept: text/html'r   r   s    r"   test_no_url_raisesz$TestErrorHandling.test_no_url_raises   s,    ]]:& 	645	6 	6 	6r   c                 v    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)Nzwget https://example.comr   r   s    r"    test_missing_curl_command_raisesz2TestErrorHandling.test_missing_curl_command_raises   s,    ]]:& 	312	3 	3 	3r   r>   )r@   rA   rB   r   r   r   r   rC   r$   r"   r   r      s    63r$   r   c                   $    e Zd ZddZddZddZy)TestPutDeleteMethodNc                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz*curl -X PUT https://example.com/resource/1r   PUTr
   r   r   r   r   r   r   s          r"   test_put_methodz#TestPutDeleteMethod.test_put_method   s_    HIh(5(5((((5((((((5(((((((r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz-curl -X DELETE https://example.com/resource/1r   DELETEr
   r   r   r   r   r   r   s          r"   test_delete_methodz&TestPutDeleteMethod.test_delete_method   s_    KLh+8+8++++8++++++8+++++++r$   c                    t        d      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )	Nz1curl --request PUT https://example.com/resource/1r   r   r
   r   r   r   r   r   r   s          r"   test_request_long_flagz*TestPutDeleteMethod.test_request_long_flag   s_    OPh(5(5((((5((((((5(((((((r$   r>   )r@   rA   rB   r   r   r   rC   r$   r"   r   r      s    ),)r$   r   c                       e Zd ZddZy)TestComplexDevToolsOutputNc                 F
   d}t        |      }|d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d
   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}d}|d   }||v}|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}y	)u8   실제 DevTools 복사 스타일의 복잡한 명령어.ab  curl 'https://www.example.com/api/search?q=test&page=1' \
  -H 'authority: www.example.com' \
  -H 'accept: text/html,application/xhtml+xml' \
  -H 'accept-language: ko-KR,ko;q=0.9' \
  -H 'cookie: _ga=GA1.2.123456789; session_id=abcdef123456; csrftoken=xyz987' \
  -H 'referer: https://www.example.com/' \
  -H 'user-agent: Mozilla/5.0' \
  --compressedr   z0https://www.example.com/api/search?q=test&page=1r
   r   r   r   r   Nr   r   r*   acceptztext/html,application/xhtml+xmlzaccept-languagezko-KR,ko;q=0.9refererzhttps://www.example.com/z
user-agentri   cookiero   rq   r+   _gazGA1.2.123456789
session_idabcdef123456	csrftokenxyz987r   r   s           r"   test_full_devtools_curlz1TestComplexDevToolsOutput.test_full_devtools_curl   s    	 H%e}R RR} RRRRR} RRRR}RRR RRRRRRRRh(5(5((((5((((((5(((((((i *O.OO*.OOOOO*.OOOO*OOO.OOOOOOOOi !23G7GG37GGGGG37GGGG3GGG7GGGGGGGGi +I/II+/IIIII+/IIII+III/IIIIIIIIi .?-?.-????.-???.???-???????0vi00x00000x0000x00000000000i '<+<<'+<<<<<'+<<<<'<<<+<<<<<<<<i .@.@..@@@@..@@@.@@@.@@@@@@@i -99-9999-999-9999999999r$   r>   )r@   rA   rB   r   rC   r$   r"   r   r      s    :r$   r   )__doc__builtinsr4   _pytest.assertion.rewrite	assertionrewriter   syspathlibr   r   pathinsertstr__file__parentcurl_to_fetcherr   r   rE   r]   rl   r|   r   r   r   r   r   r   rC   r$   r"   <module>r      s    3   
   3tH~,,334 5 &+ +8G GH@ @,: :"- -0B B4 4>* *"3 3*) )": :r$   