ó
ç'ÊUc           @   s'  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z m Z d  d l m Z d  d l m Z m Z d  d	 l m Z d
 e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   TestCase(   t
   LogCapture(   t   defer(   t   get_crawler(   t
   MockServer(   t   Responset   Request(   t   Spider(   t   HttpErrorMiddlewaret	   HttpError(   t   Settingst   _HttpErrorSpiderc           B   sM   e  Z d  Z d d d d g Z e ƒ  Z d „  Z d „  Z d „  Z d „  Z	 RS(	   t	   httperrors"   http://localhost:8998/status?n=200s"   http://localhost:8998/status?n=404s"   http://localhost:8998/status?n=402s"   http://localhost:8998/status?n=500c         O   sA   t  t |  ƒ j | | Ž  t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ d  S(   N(   t   superR   t   __init__t   sett   failedt   skippedt   parsed(   t   selft   argst   kwargs(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR      s    c         c   s2   x+ |  j  D]  } t | |  j d |  j ƒVq
 Wd  S(   Nt   errback(   t
   start_urlsR   t   parset   on_error(   R   t   url(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   start_requests   s    c         C   s   |  j  j | j d ƒ d  S(   Niýÿÿÿ(   R   t   addR   (   R   t   response(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR   #   s    c         C   sx   t  | j t ƒ rW | j j } | j |  j k rW |  j j | j d ƒ |  j	 | ƒ Sn  |  j
 j | j j j d ƒ | S(   Niýÿÿÿ(   t
   isinstancet   valueR	   R   t   statust   bypass_status_codesR   R   R   R   R   (   R   t   failureR   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR   &   s    (
   t   __name__t
   __module__t   nameR   R   R!   R   R   R   R   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR      s   					c         C   sF   g  } x9 | D]1 } t  |  j d | ƒ} |  | _ | j | ƒ q W| S(   NR    (   R   R   t   requestt   append(   R&   t   status_codest	   responsest   codeR   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt
   _responses2   s    	t   TestHttpErrorMiddlewarec           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s[   t  d ƒ |  _ t t i  ƒ ƒ |  _ t d ƒ |  _ t |  j d d g ƒ \ |  _ |  _	 d  S(   Nt   foos   http://scrapytest.orgiÈ   i”  (
   R   t   spiderR   R
   t   mwR   t   reqR+   t   res200t   res404(   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   setUp=   s    c         C   sK   |  j  d  |  j j |  j |  j ƒ ƒ |  j t |  j j |  j |  j ƒ d  S(   N(	   t   assertEqualst   NoneR/   t   process_spider_inputR1   R.   t   assertRaisesR	   R2   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_process_spider_inputC   s    		c         C   s`   |  j  g  |  j j |  j t |  j ƒ |  j ƒ ƒ |  j  d  |  j j |  j t ƒ  |  j ƒ ƒ d  S(   N(   R4   R/   t   process_spider_exceptionR2   R	   R.   R5   t	   Exception(   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_process_spider_exceptionI   s    		c         C   sˆ   |  j  j ƒ  } t d d i d g d 6ƒ| _ |  j d  |  j j | |  j ƒ ƒ d g |  j _	 |  j d  |  j j |  j  |  j ƒ ƒ d  S(   Ns   http://scrapytest.orgt   metai”  t   handle_httpstatus_list(
   R2   t   copyR   R&   R4   R5   R/   R6   R.   R=   (   R   t   res(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_handle_httpstatus_listQ   s    			(   R#   R$   R3   R8   R;   R@   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR,   ;   s   			t   TestHttpErrorMiddlewareSettingsc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s   Similar test, but with settingsc         C   sk   t  d ƒ |  _ t t i d d 6ƒ ƒ |  _ t d ƒ |  _ t |  j d d d g ƒ \ |  _ |  _	 |  _
 d  S(   NR-   i’  t   HTTPERROR_ALLOWED_CODESs   http://scrapytest.orgiÈ   i”  (   i’  (   R   R.   R   R
   R/   R   R0   R+   R1   R2   t   res402(   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR3   `   s    c         C   sp   |  j  d  |  j j |  j |  j ƒ ƒ |  j t |  j j |  j |  j ƒ |  j  d  |  j j |  j	 |  j ƒ ƒ d  S(   N(
   R4   R5   R/   R6   R1   R.   R7   R	   R2   RC   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR8   f   s    			c         C   s‘   t  d d i d g d 6ƒ} |  j j ƒ  } | | _ |  j j ƒ  } | | _ |  j d  |  j j | |  j	 ƒ ƒ |  j
 t |  j j | |  j	 ƒ d  S(   Ns   http://scrapytest.orgR<   i”  R=   (   R   R2   R>   R&   RC   R4   R5   R/   R6   R.   R7   R	   (   R   R&   R2   RC   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_meta_overrides_settingsn   s    					c         C   sZ   d g |  j  _ |  j d  |  j j |  j |  j  ƒ ƒ |  j t |  j j |  j	 |  j  ƒ d  S(   Ni”  (
   R.   R=   R4   R5   R/   R6   R2   R7   R	   RC   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_spider_override_settings{   s
    		(   R#   R$   t   __doc__R3   R8   RD   RE   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyRA   ]   s
   			t    TestHttpErrorMiddlewareHandleAllc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sk   t  d ƒ |  _ t t i t d 6ƒ ƒ |  _ t d ƒ |  _ t |  j d d d g ƒ \ |  _	 |  _
 |  _ d  S(   NR-   t   HTTPERROR_ALLOW_ALLs   http://scrapytest.orgiÈ   i”  i’  (   R   R.   R   R
   t   TrueR/   R   R0   R+   R1   R2   RC   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR3   …   s    c         C   sN   |  j  d  |  j j |  j |  j ƒ ƒ |  j  d  |  j j |  j |  j ƒ ƒ d  S(   N(   R4   R5   R/   R6   R1   R.   R2   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR8   ‹   s    		c         C   s‘   t  d d i d g d 6ƒ} |  j j ƒ  } | | _ |  j j ƒ  } | | _ |  j d  |  j j | |  j	 ƒ ƒ |  j
 t |  j j | |  j	 ƒ d  S(   Ns   http://scrapytest.orgR<   i”  R=   (   R   R2   R>   R&   RC   R4   R5   R/   R6   R.   R7   R	   (   R   R&   R2   RC   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyRD   ‘   s    					(   R#   R$   R3   R8   RD   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyRG   ƒ   s   		t$   TestHttpErrorMiddlewareIntegrationalc           B   s>   e  Z d  „  Z d „  Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C   s   t  ƒ  |  _ |  j j ƒ  d  S(   N(   R   t
   mockservert	   __enter__(   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyR3       s    c         C   s   |  j  j d  d  d  ƒ d  S(   N(   RK   t   __exit__R5   (   R   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   tearDown¤   s    c         c   sr   t  t ƒ } | j ƒ  V| j j s6 t | j j ƒ ‚ |  j | j j d h ƒ |  j | j j d d d h ƒ d  S(   Nt   200t   404t   402t   500(	   R   R   t   crawlR.   R   t   AssertionErrort   assertEqualR   R   (   R   t   crawler(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_middleware_works§   s
    c         c   sß   t  t ƒ } t ƒ   } | j d d h ƒ VWd  QX|  j | j j d d h ƒ |  j | j j d h ƒ |  j | j j d d h ƒ |  j	 d t
 | ƒ ƒ |  j	 d t
 | ƒ ƒ |  j d	 t
 | ƒ ƒ |  j d
 t
 | ƒ ƒ d  S(   NR!   i’  RO   RQ   RP   RR   s   Ignoring response <404s   Ignoring response <500s   Ignoring response <200s   Ignoring response <402(   R   R   R   RS   RU   R.   R   R   R   t   assertInt   strt   assertNotIn(   R   RV   t   log(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   test_logging¯   s    (   R#   R$   R3   RN   R   t   inlineCallbacksRW   R\   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyRJ   Ÿ   s   		N(   t   unittestR    t   testfixturesR   t   twisted.trial.unittestt   TrialTestCaset   twisted.internetR   t   scrapy.utils.testR   t   tests.mockserverR   t   scrapy.httpR   R   t   scrapy.spidersR   t"   scrapy.spidermiddlewares.httperrorR   R	   t   scrapy.settingsR
   R   R+   R,   RA   RG   RJ   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_spidermiddleware_httperror.pyt   <module>   s   #		"&