ó
ç'ÊUc           @@  sÛ   d  d l  m Z d  d l Z d  d l m Z 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 m Z d  d
 l m Z d  d l m Z d e j f d „  ƒ  YZ d S(   i    (   t   absolute_importN(   t   reactort   error(   t   Deferred(   t   failure(   t   unittest(   t   RobotsTxtMiddleware(   t   IgnoreRequestt   NotConfigured(   t   Requestt   Response(   t   Settings(   t   mockt   RobotsTxtMiddlewareTestc           B@  sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         @  sa   ˆ j  ƒ  ‰  ˆ j t d ƒ ˆ  ƒ ‡  ‡ f d †  } t ƒ  } | j | ƒ t j | j d  ƒ | S(   Ns   http://site.localc         @  sF   ˆ j  t d ƒ ˆ  ƒ ˆ j t d ƒ ˆ  ƒ ˆ j t d ƒ ˆ  ƒ d  S(   Ns   http://site.local/alloweds   http://site.local/admin/mains   http://site.local/static/(   t   assertNotIgnoredR	   t   assertIgnored(   t   r(   t
   middlewaret   self(    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   test   s    (	   t   _get_middlewareR   R	   R   t   addCallbackR   t   callFromThreadt   callbackt   None(   R   R   t   deferred(    (   R   R   sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   test_robotstxt   s    	c         @  sw   i t  d 6‰  ˆ j ƒ  ‰ ˆ j t d d ˆ  ƒˆ ƒ ‡  ‡ ‡ f d †  } t ƒ  } | j | ƒ t j | j d  ƒ | S(   Nt   dont_obey_robotstxts   http://site.localt   metac         @  sX   ˆ j  t d d ˆ  ƒˆ ƒ ˆ j  t d d ˆ  ƒˆ ƒ ˆ j  t d d ˆ  ƒˆ ƒ d  S(   Ns   http://site.local/allowedR   s   http://site.local/admin/mains   http://site.local/static/(   R   R	   (   R   (   R   R   R   (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyR   $   s    (
   t   TrueR   R   R	   R   R   R   R   R   R   (   R   R   R   (    (   R   R   R   sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   test_robotstxt_meta    s    	c         @  sÔ   t  j ƒ  } t ƒ  | _ | j j d t ƒ t  j ƒ  | j _ t j	 d ƒ ‰  ‡  f d †  } | | j j _
 t | ƒ ‰ t  j ƒ  ˆ _ ˆ j t d ƒ d  ƒ t ƒ  } | j ‡ ‡ f d †  ƒ t j | j d  ƒ | S(   Nt   ROBOTSTXT_OBEYs   Robotstxt address not foundc         @  s)   t  ƒ  } t j | j t j ˆ  ƒ ƒ | S(   N(   R   R   R   t   errbackR   t   Failure(   t   requestt   spiderR   (   t   err(    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   return_failure3   s    	s   http://site.localc         @  s   ˆ j  ˆ  j j ƒ  ƒ S(   N(   t   assertIsNonet	   _logerrort   assert_any_call(   t   _(   R   R   (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   <lambda>=   s    (   R   t	   MagicMockR   t   settingst   setR   t   enginet   downloadR   t   DNSLookupErrort   side_effectR   R'   t   process_requestR	   R   R   t
   addErrbackR   R   R   (   R   t   crawlerR%   R   (    (   R$   R   R   sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   test_robotstxt_error-   s    	c         C@  s#   d  } |  j | j | | ƒ ƒ d  S(   N(   R   R&   R2   (   R   R"   R   R#   (    (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyR   A   s    c         C@  s#   d  } |  j t | j | | ƒ d  S(   N(   R   t   assertRaisesR   R2   (   R   R"   R   R#   (    (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyR   E   s    c         @  s¬   t  j ƒ  } t ƒ  | _ | j j d d ƒ |  j t t | ƒ | j j d t ƒ t  j ƒ  | j	 _
 t j d d d ƒ } t d d | ƒ‰  ‡  f d	 †  } | | j	 j
 _ | S(
   Nt
   USER_AGENTt   CustomAgentR   s   ^\s+(?m)t    sT   
        User-Agent: *
        Disallow: /admin/
        Disallow: /static/
        s   http://site.local/robots.txtt   bodyc         @  s    t  ƒ  } t j | j ˆ  ƒ | S(   N(   R   R   R   R   (   R"   R#   R   (   t   response(    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   return_responseV   s    	(   R   R+   R   R,   R-   R6   R   R   R   R.   R/   t   ret   subR
   R1   (   R   R4   t   ROBOTSR<   (    (   R;   sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   _get_crawlerI   s    	c         C@  s   |  j  ƒ  } t | ƒ S(   N(   R@   R   (   R   R4   (    (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyR   ]   s    (	   t   __name__t
   __module__R   R   R5   R   R   R@   R   (    (    (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyR      s   						(   t
   __future__R    R=   t   twisted.internetR   R   t   twisted.internet.deferR   t   twisted.pythonR   t   twisted.trialR   t&   scrapy.downloadermiddlewares.robotstxtR   t   scrapy.exceptionsR   R   t   scrapy.httpR	   R
   t   scrapy.settingsR   t   testsR   t   TestCaseR   (    (    (    sM   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_robotstxt.pyt   <module>   s   