;
Ìâ"Ic               @   sM  d  Z  d d l m Z m Z m Z m Z 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 Z d d l Z d d l Z d d l m Z Gd „  d ƒ Z Gd „  d e j ƒ Z Gd	 „  d
 e j ƒ Z Gd „  d e ƒ Z Gd „  d e ƒ Z d Z d Z Gd „  d e ƒ Z d d „ Z e d k o e ƒ  n d S(   u±   Unittests for the various HTTPServer modules.

Written by Cody A.W. Somerville <cody-somerville@ubuntu.com>,
Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest.
i    (   u   BaseHTTPRequestHandleru
   HTTPServeru   SimpleHTTPRequestHandleru   CGIHTTPRequestHandlerN(   u   supportc             B   s#   |  Ee  Z d  „  Z d d „ Z d S(   c             G   s   d  S(   N(    (   u   selfu   args(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   log_message   s    c             C   s   d S(   Nu    (    (   u   selfu   n(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   read   s    N(   u   __name__u
   __module__u   log_messageu   Noneu   read(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   NoLogRequestHandler   s   
	u   NoLogRequestHandlerc             B   s)   |  Ee  Z d  „  Z d „  Z d „  Z d S(   c             C   s6   t  j j |  ƒ | |  _ | |  _ |  j j j ƒ  d  S(   N(   u	   threadingu   Threadu   __init__u   request_handleru   test_objectu   locku   acquire(   u   selfu   test_objectu   request_handler(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   __init__    s    		c             C   sg   t  d |  j ƒ |  _ |  j j j ƒ  d |  j _ |  j j j ƒ  z |  j j	 ƒ  Wd  |  j j
 ƒ  Xd  S(   Nu    i    i   (   u    i    (   u
   HTTPServeru   request_handleru   serveru   socketu   getsocknameu   test_objectu   PORTu   locku   releaseu   serve_foreveru   server_close(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   run&   s    c             C   s   |  j  j ƒ  d  S(   N(   u   serveru   shutdown(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   stop/   s    N(   u   __name__u
   __module__u   __init__u   runu   stop(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   TestServerThread   s   
			u   TestServerThreadc             B   s2   |  Ee  Z d  „  Z d „  Z d d i  d „ Z d S(   c             C   sB   t  j ƒ  |  _ t |  |  j ƒ |  _ |  j j ƒ  |  j j ƒ  d  S(   N(   u	   threadingu   Locku   locku   TestServerThreadu   request_handleru   threadu   startu   acquire(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   setUp4   s    c             C   s   |  j  j ƒ  |  j j ƒ  d  S(   N(   u   locku   releaseu   threadu   stop(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   tearDown:   s    u   GETc             C   sA   t  j j d |  j ƒ |  _ |  j j | | | | ƒ |  j j ƒ  S(   Nu	   localhost(   u   httpu   clientu   HTTPConnectionu   PORTu
   connectionu   requestu   getresponse(   u   selfu   uriu   methodu   bodyu   headers(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   request>   s    N(   u   __name__u
   __module__u   setUpu   tearDownu   Noneu   request(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   BaseTestCase3   s   
		u   BaseTestCasec             B   s«   |  Ee  Z Gd  „  d e 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 S(   c             B   s>   |  Ee  Z d  Z d  Z d „  Z d „  Z d „  Z d „  Z d S(   u   HTTP/1.1c             C   s;   |  j  d ƒ |  j d d ƒ |  j d d ƒ |  j ƒ  d  S(   NiÌ   u   Content-Typeu	   text/htmlu
   Connectionu   close(   u   send_responseu   send_headeru   end_headers(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   do_TESTI   s    c             C   s;   |  j  d ƒ |  j d d ƒ |  j d d ƒ |  j ƒ  d  S(   NiÌ   u   Content-Typeu	   text/htmlu
   Connectionu
   keep-alive(   u   send_responseu   send_headeru   end_headers(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   do_KEEPO   s    c             C   s   |  j  d ƒ d  S(   Niç  (   u
   send_error(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   do_KEYERRORU   s    c             C   s;   |  j  d ƒ |  j d d ƒ |  j d d ƒ |  j ƒ  d  S(   Niç  u   Content-Typeu	   text/htmlu
   Connectionu   close(   u   send_responseu   send_headeru   end_headers(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu	   do_CUSTOMX   s    N(   u   __name__u
   __module__u   protocol_versionu   default_request_versionu   do_TESTu   do_KEEPu   do_KEYERRORu	   do_CUSTOM(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   request_handlerE   s   
			u   request_handlerc             C   s9   t  j |  ƒ t j j d |  j ƒ |  _ |  j j ƒ  d  S(   Nu	   localhost(   u   BaseTestCaseu   setUpu   httpu   clientu   HTTPConnectionu   PORTu   conu   connect(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   setUp^   s    c             C   s9   |  j  j d d ƒ |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   GETu   /iõ  (   u   conu   requestu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_commandc   s    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu	   HTTP/1.1
u   GETu   /iõ  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_request_line_trimmingh   s
    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   FUBARu   GETu   /i  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_version_boguso   s
    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu
   HTTP/9.9.9u   GETu   /i  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_version_digitsv   s
    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu    u   GETu   /iõ  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_version_none_get}   s
    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu    u   PUTu   /i  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_version_none„   s
    c             C   s^   d |  j  _ d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nic   u   HTTP/9.9u   GETu   /iù  (   u   conu	   _http_vsnu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_version_invalid‹   s    c             C   sR   d |  j  _ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu    i  (   u   conu   _http_vsn_stru
   putrequestu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_send_blank“   s
    c             C   sY   |  j  j d d ƒ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   GETu   /u
   Connectionu   closeiõ  (   u   conu
   putrequestu	   putheaderu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_header_closeš   s
    c             C   se   d |  j  _ |  j  j d d ƒ |  j  j d d ƒ |  j  j ƒ  |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   HTTP/1.1u   GETu   /u
   Connectionu
   keep-aliveiõ  (   u   conu   _http_vsn_stru
   putrequestu	   putheaderu
   endheadersu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_head_keep_alive¡   s    c             C   s9   |  j  j d d ƒ |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   TESTu   /iÌ   (   u   conu   requestu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_handler©   s    c             C   sR   |  j  j d d ƒ |  j  j ƒ  } |  j | j d ƒ d ƒ |  j  j d d ƒ d  S(   Nu   KEEPu   /u
   Connectionu
   keep-aliveu   TEST(   u   conu   requestu   getresponseu   assertEqualsu	   getheader(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_return_header_keep_alive®   s    c             C   s9   |  j  j d d ƒ |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   KEYERRORu   /iç  (   u   conu   requestu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_internal_key_error´   s    c             C   s9   |  j  j d d ƒ |  j  j ƒ  } |  j | j d ƒ d  S(   Nu   CUSTOMu   /iç  (   u   conu   requestu   getresponseu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_return_custom_status¹   s    N(   u   __name__u
   __module__u   NoLogRequestHandleru   BaseHTTPRequestHandleru   request_handleru   setUpu   test_commandu   test_request_line_trimmingu   test_version_bogusu   test_version_digitsu   test_version_none_getu   test_version_noneu   test_version_invalidu   test_send_blanku   test_header_closeu   test_head_keep_aliveu   test_handleru   test_return_header_keep_aliveu   test_internal_key_erroru   test_return_custom_status(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   BaseHTTPServerTestCaseD   s    
														u   BaseHTTPServerTestCasec             B   s]   |  Ee  Z Gd  „  d e e ƒ Z d „  Z d „  Z d d „ Z d „  Z	 d „  Z
 d „  Z d S(	   c             B   s   |  Ee  Z d  S(   N(   u   __name__u
   __module__(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   request_handlerÀ   s   
u   request_handlerc             C   sª   t  j |  ƒ t j ƒ  |  _ t j ƒ  } t j | ƒ d |  _ t j	 d | ƒ |  _
 t j j |  j
 ƒ |  _ t t j j |  j
 d ƒ d ƒ } | j |  j ƒ | j ƒ  d  S(   Ns   We are the knights who say Ni!u   diru   testu   wb(   u   BaseTestCaseu   setUpu   osu   getcwdu   cwdu   tempfileu
   gettempdiru   chdiru   datau   mkdtempu   tempdiru   pathu   basenameu   tempdir_nameu   openu   joinu   writeu   close(   u   selfu   basetempdiru   temp(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   setUpÃ   s    	!c             C   sH   z3 t  j |  j ƒ y t j |  j ƒ Wn Yn XWd  t j |  ƒ Xd  S(   N(   u   osu   chdiru   cwdu   shutilu   rmtreeu   tempdiru   BaseTestCaseu   tearDown(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   tearDownÏ   s    	c             C   sa   | j  ƒ  } |  j | ƒ |  j | j | ƒ |  j | j d  k ƒ | o |  j | | ƒ n d  S(   N(   u   readu   assert_u   assertEqualsu   statusu   reasonu   Noneu   assertEqual(   u   selfu   responseu   statusu   datau   body(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   check_status_and_reasonÙ   s    c             C   sd  |  j  |  j d ƒ } |  j | d d |  j ƒ|  j  |  j d ƒ } |  j | d ƒ |  j  |  j ƒ } |  j | d ƒ |  j  d ƒ } |  j | d ƒ |  j  d ƒ } |  j | d ƒ t t j j |  j d	 ƒ d
 ƒ } |  j  d |  j d ƒ } |  j | d ƒ t j d k oP t j	 |  j
 d ƒ |  j  |  j d ƒ } |  j | d ƒ t j	 |  j
 d ƒ n d  S(   Nu   /testiÈ   u   datau   /i-  u   /ThisDoesNotExisti”  u   ThisDoesNotExistu
   index.htmlu   wu   posixi    ií  u   /ThisDoesNotExistu   /ThisDoesNotExist/(   u   requestu   tempdir_nameu   check_status_and_reasonu   datau   openu   osu   pathu   joinu   nameu   chmodu   tempdir(   u   selfu   responseu   f(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_getá   s$    !c             C   sq   |  j  |  j d d d ƒ} |  j | d ƒ |  j | j d ƒ t t |  j ƒ ƒ ƒ |  j | j d ƒ d ƒ d  S(   Nu   /testu   methodu   HEADiÈ   u   content-lengthu   content-typeu   application/octet-stream(   u   requestu   tempdir_nameu   check_status_and_reasonu   assertEqualu	   getheaderu   stru   lenu   data(   u   selfu   response(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu	   test_head÷   s    c             C   ss   |  j  d d d ƒ} |  j | d ƒ |  j  d d d ƒ} |  j | d ƒ |  j  d d d ƒ} |  j | d ƒ d  S(   Nu   /u   methodu   FOOiõ  u   getu   GETs(   u   requestu   check_status_and_reason(   u   selfu   response(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_invalid_requests   s    N(   u   __name__u
   __module__u   NoLogRequestHandleru   SimpleHTTPRequestHandleru   request_handleru   setUpu   tearDownu   Noneu   check_status_and_reasonu   test_getu	   test_headu   test_invalid_requests(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   SimpleHTTPServerTestCase¿   s   
		
			u   SimpleHTTPServerTestCaseuD   #!%s

print("Content-type: text/html")
print()
print("Hello World")
uÃ   #!%s
import cgi

print("Content-type: text/html")
print()

form = cgi.FieldStorage()
print("%%s, %%s, %%s" %% (form.getfirst("spam"), form.getfirst("eggs"),              form.getfirst("bacon")))
c             B   sZ   |  Ee  Z Gd  „  d e e ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d S(	   c             B   s   |  Ee  Z d  S(   N(   u   __name__u
   __module__(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   request_handler  s   
u   request_handlerc             C   s\  t  j |  ƒ t j ƒ  |  _ t j j |  j d ƒ |  _ t j	 |  j ƒ t j j |  j d ƒ |  _
 t |  j
 d ƒ j } j ƒ  } z! | ~ } | j t t j ƒ Wd  | ~ QXt j |  j
 d ƒ t j j |  j d ƒ |  _ t |  j d ƒ j } j ƒ  } z! | ~ } | j t t j ƒ Wd  | ~ QXt j |  j d ƒ t j ƒ  |  _ t j |  j ƒ d  S(   Nu   cgi-binu   file1.pyu   wiÿ  u   file2.py(   u   BaseTestCaseu   setUpu   tempfileu   mkdtempu
   parent_diru   osu   pathu   joinu   cgi_diru   mkdiru
   file1_pathu   openu   __exit__u	   __enter__u   writeu	   cgi_file1u   sysu
   executableu   chmodu
   file2_pathu	   cgi_file2u   getcwdu   cwdu   chdir(   u   selfu   _[2]u   _[1]u   file1u   _[4]u   _[3]u   file2(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   setUp"  s    + + c          	   C   si   zT t  j |  j ƒ t  j |  j ƒ t  j |  j ƒ t  j |  j ƒ t  j |  j ƒ Wd  t	 j
 |  ƒ Xd  S(   N(   u   osu   chdiru   cwdu   removeu
   file1_pathu
   file2_pathu   rmdiru   cgi_diru
   parent_diru   BaseTestCaseu   tearDown(   u   self(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   tearDown5  s    c             C   s>   |  j  d ƒ } |  j d | j ƒ  | j d ƒ | j f ƒ d  S(   Nu   /cgi-bin/file1.pys   Hello World
u	   text/htmliÈ   u   Content-type(   s   Hello World
u	   text/htmliÈ   (   u   requestu   assertEqualsu   readu	   getheaderu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_headers_and_content?  s    	c             C   sf   t  j j i d d 6d d 6d d 6ƒ } i d d 6} |  j d	 d
 | | ƒ } |  j | j ƒ  d ƒ d  S(   Ni   u   spamu   pythonu   eggsi@â u   baconu!   application/x-www-form-urlencodedu   Content-typeu   /cgi-bin/file2.pyu   POSTs   1, python, 123456
(   u   urllibu   parseu	   urlencodeu   requestu   assertEqualsu   read(   u   selfu   paramsu   headersu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu	   test_postD  s
    	c             C   s0   |  j  d ƒ } | j ƒ  |  j | j d ƒ d  S(   Nu   /cgi-bin/invalidi”  (   u   requestu   readu   assertEqualsu   status(   u   selfu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_invaliduriL  s    
c             C   sa   i d t  j d ƒ d 6} |  j d d d | ƒ} |  j d | j ƒ  | j d
 ƒ | j f ƒ d  S(   Ns   Basic s   username:passs   Authorizationu   /cgi-bin/file1.pyu   GETu   headerss   Hello World
u	   text/htmliÈ   u   Content-type(   s   Hello World
u	   text/htmliÈ   (   u   base64u	   b64encodeu   requestu   assertEqualsu   readu	   getheaderu   status(   u   selfu   headersu   res(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   test_authorizationQ  s
    	N(   u   __name__u
   __module__u   NoLogRequestHandleru   CGIHTTPRequestHandleru   request_handleru   setUpu   tearDownu   test_headers_and_contentu	   test_postu   test_invaliduriu   test_authorization(   u
   __locals__(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   CGIHTTPServerTestCase  s   
		
			u   CGIHTTPServerTestCasec          
   C   s8   z# t  j ƒ  } t j t t t ƒ Wd  t  j | ƒ Xd  S(   N(   u   osu   getcwdu   supportu   run_unittestu   BaseHTTPServerTestCaseu   SimpleHTTPServerTestCaseu   CGIHTTPServerTestCaseu   chdir(   u   verboseu   cwd(    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu	   test_mainY  s    	u   __main__(    u   __doc__u   http.serveru   BaseHTTPRequestHandleru
   HTTPServeru   SimpleHTTPRequestHandleru   CGIHTTPRequestHandleru   osu   sysu   base64u   shutilu   urllib.parseu   urllibu   http.clientu   httpu   tempfileu	   threadingu   unittestu   testu   supportu   NoLogRequestHandleru   Threadu   TestServerThreadu   TestCaseu   BaseTestCaseu   BaseHTTPServerTestCaseu   SimpleHTTPServerTestCaseu	   cgi_file1u	   cgi_file2u   CGIHTTPServerTestCaseu   Noneu	   test_mainu   __name__(    (    (    u2   /mit/python/lib/python3.0/test/test_httpservers.pyu   <module>   s,   "	{Q;
