
    V                    L    d dl mZ d dlZd dlmZmZmZmZmZm	Z	  G d d      Z
y)    )annotationsN)RequestFieldformat_header_paramformat_header_param_html5format_header_param_rfc2231format_multipart_header_paramguess_content_typec                  \   e Zd Zej                  j                  ddddgfddgfddgfg      	 	 	 	 	 	 dd       Zdd	Zdd
ZddZ	ddZ
ej                  j                  dddg      	 	 	 	 	 	 dd       ZddZej                  j                  dg d      	 	 	 	 	 	 dd       ZddZddZy)TestRequestFieldzfilename, content_typesz	image.jpgz
image/jpegzimage/pjpegnotsureapplication/octet-streamNc                "    t        |      |v sJ y )N)r	   )selffilenamecontent_typess      7platform/gsutil/third_party/urllib3/test/test_fields.pytest_guess_content_typez(TestRequestField.test_guess_content_type   s     "(+}<<<    c                    t        dd      }|j                         dk(  sJ t        ddd      }|j                         dk(  sJ t        ddddi      }|j                         d	k(  sJ y )
Nsomenamedataz
zsomefile.txt)r   zContent-Length4)headerszContent-Length: 4

)r   render_headers)r   simple_fieldfilename_fieldheaders_fields       r   test_createzTestRequestField.test_create   s{    #J7**,666%j&>R,,.&888$)93(?
 ++-1LLLLr   c                l    t        dd      }|j                  dd       |j                         dk(  sJ y )Nr   r   z	image/jpgz/test)content_typecontent_locationzeContent-Disposition: form-data; name="somename"
Content-Type: image/jpg
Content-Location: /test

r   make_multipartr   r   fields     r   test_make_multipartz$TestRequestField.test_make_multipart'   sA    Z0+P  "	
r   c                l    t        ddd      }|j                  d       |j                         dk(  sJ y )Nr   r    r   )r    zhContent-Disposition: form-data; name="somename"; filename=""
Content-Type: application/octet-stream

r"   r$   s     r   "test_make_multipart_empty_filenamez3TestRequestField.test_make_multipart_empty_filename2   sB    Z4*DE  "	
r   c                    t        dd      }|j                  ddd      }d|v sJ d|v sJ |j                  ddg      }|d	k(  sJ y )
Nr   r   value)namer   zname="value"zfilename="value")r,   r+   )r   r+   zname="value"; filename="value")r   _render_parts)r   r%   partss      r   test_render_partsz"TestRequestField.test_render_parts<   se    Z0##W'$JK&&&!U***##%68M$NO8888r   )r+   expect)   nämezfilename*=utf-8''n%C3%A4me)s   namezfilename="name"c                    t        j                  d      5  t        d|      }d d d        |k(  sJ y # 1 sw Y   xY w)Nurllib3 v2\.1\.0matchr   )pytestdeprecated_callr   r   r+   r0   params       r   +test_format_header_param_rfc2231_deprecatedz<TestRequestField.test_format_header_param_rfc2231_deprecatedD   s;     ##*=>/
EBE ?  ?>s   4=c                    t        j                  d      5  t        dd      }d d d        t        j                  d      5  t        dd      }d d d        k(  sJ y # 1 sw Y   <xY w# 1 sw Y   xY w)Nr3   r4   r   r,   )r6   r7   r   r   )r   param2param1s      r   )test_format_header_param_html5_deprecatedz:TestRequestField.test_format_header_param_html5_deprecatedP   sf    ##*=>.z6BF ? ##*=>(V<F ?  ?> ?>s   AA+A(+A4))r,   r,   )r1   r1   )s   nämer1   )   ski ⛷.txtr?   )control r@   )backslash \rA   )z	quotes '"zquotes '%22)z
newline 
znewline %0A%0Dc                2    t        d|      }|d| dk(  sJ y )Nr   z
filename="")r   r8   s       r   "test_format_multipart_header_paramz3TestRequestField.test_format_multipart_header_paramY   s'      .j%@*VHA....r   c                \    t        j                  dd      }|j                  d   }|dk(  sJ y )Nfile)u   スキー旅行.txtr   Content-Dispositionu6   form-data; name="file"; filename="スキー旅行.txt")r   from_tuplesr   r   r%   cds      r   test_from_tuplesz!TestRequestField.test_from_tuplesl   s3    ((1PQ]]01MMMMr   c                    t        j                  d      5  t        j                  ddt              }d d d        j
                  d   }|dk(  sJ y # 1 sw Y    xY w)Nr3   r4   rF   )r1   r   )header_formatterrG   z2form-data; name="file"; filename*=utf-8''n%C3%A4me)r6   r7   r   rH   r   r   rI   s      r   test_from_tuples_rfc2231z)TestRequestField.test_from_tuples_rfc2231q   sX    ##*=> ,,)<WE ?
 ]]01KKKK ?>s   AA)r   z
str | Noner   z	list[str]returnNone)rO   rP   )r+   zbytes | strr0   strrO   rP   )__name__
__module____qualname__r6   markparametrizer   r   r&   r)   r/   r:   r>   rD   rK   rN    r   r   r   r      s   [[!<78345./0	
="=3<=	==
M	

9 [[	02NO *-		  [[		
/ /*-/	//N
Lr   r   )
__future__r   r6   urllib3.fieldsr   r   r   r   r   r	   r   rW   r   r   <module>rZ      s#    "  iL iLr   