ó
Y[c           @   s”   d  Z  d d l Z d d l Z d d l m Z d Z d e j f d „  ƒ  YZ d Z d Z	 d Z
 d Z d Z d Z d Z e d k r e j ƒ  n  d S(   s   Tests for ocsp.pyiÿÿÿÿN(   t   errorss;   Missing = in header key=value
ocsp: Use -help for summary.
t   OCSPTestc           B   sÅ   e  Z d  „  Z d „  Z e j d ƒ e j d ƒ e j d ƒ d „  ƒ ƒ ƒ Z e j d ƒ e j d ƒ d „  ƒ ƒ Z e j d ƒ e j d ƒ d	 „  ƒ ƒ Z e j d
 ƒ e j d ƒ d „  ƒ ƒ Z	 RS(   c      
   C   sƒ   d d l  m } t j d ƒ ^ } t j d ƒ F } t j ƒ  } d  t f | j _ | | _ t	 | _ | j
 ƒ  |  _ Wd  QXWd  QXd  S(   Niÿÿÿÿ(   t   ocsps   certbot.ocsp.Popens   certbot.util.exe_exists(   t   certbotR   t   mockt   patcht	   MagicMockt   Nonet   outt   communicatet   return_valuet   Truet   RevocationCheckert   checker(   t   selfR   t
   mock_popent   mock_existst   mock_communicate(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   setUp   s    		c         C   s   d  S(   N(    (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   tearDown   s    s   certbot.ocsp.logger.infos   certbot.ocsp.Popens   certbot.util.exe_existsc         C   s3  t  j ƒ  } d  t f | j _ | | _ t | _ d d l m } | j	 ƒ  } |  j
 | j d ƒ |  j
 | j d ƒ d g ƒ d  t j d ƒ d f | j _ | j	 ƒ  } |  j
 | j d ƒ d d g ƒ |  j
 | j t ƒ t | _ d	 | _ | j	 ƒ  } |  j
 | j d	 ƒ |  j
 | j d ƒ |  j
 | j t ƒ d  S(
   Niÿÿÿÿ(   R   i   t   xs   Host=xs   
i   t   Hosti    (   R   R   R   R   R	   R
   R   R   R   R   t   assertEqualt
   call_countt	   host_argst	   partitiont   brokent   False(   R   R   R   t   mock_logR   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt	   test_init   s$    				s4   certbot.ocsp.RevocationChecker.determine_ocsp_servers   certbot.util.run_scriptc         C   sõ   t  |  j _ d | _ |  j |  j j d d ƒ t ƒ t |  j _ t t d ƒ | _ |  j |  j j d d ƒ t ƒ |  j | j	 d ƒ d | _ |  j |  j j d d	 ƒ t ƒ t
 j d
 ƒ | _ |  j |  j j d d ƒ t ƒ |  j | j	 d ƒ d  S(   Nt    R   t   yi   i    s   http://x.cos   x.cos   blah.pems	   chain.pems#   Unable to load certificate launcheri   (   R   R   (   s   http://x.cos   x.co(   R   R   R   R
   R   t   ocsp_revokedR   t   tuplet   openssl_happyR   R    t   SubprocessErrort   side_effect(   R   t   mock_runt   mock_determine(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   test_ocsp_revoked8   s    		c         C   s»   d } d } | d f | _  |  j |  j j d ƒ | | f ƒ d | d d f | _  |  j |  j j d ƒ d	 ƒ |  j | j d ƒ d } t j | ƒ | _ |  j |  j j d ƒ d
 ƒ d  S(   Ns'   http://ocsp.stg-int-x1.letsencrypt.org/s   ocsp.stg-int-x1.letsencrypt.orgR   t   beeps   ftp:/t   /i   t	   confusion(   NN(   NN(	   R
   R   R   t   determine_ocsp_serverR   R   R    R#   R$   (   R   R%   t	   mock_infot   urit   hostt   c(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   test_determine_ocsp_serverK   s    "s   certbot.ocsp.loggerc         C   s”  t  | _ d d l m } |  j | j t Œ  t ƒ |  j | j t  Œ  t ƒ |  j | j j	 d ƒ |  j | j
 j	 d ƒ d | j _	 |  j | j t Œ  t ƒ |  j | j j	 d ƒ |  j | j
 j	 d ƒ |  j | j t Œ  t ƒ |  j | j j	 d ƒ |  j | j t Œ  t ƒ |  j | j
 j	 d ƒ d | j _	 |  j | j t Œ  t ƒ |  j | j j	 d ƒ |  j | j t Œ  t ƒ |  j | j j	 d ƒ d  S(   Niÿÿÿÿ(   R   i   i    i   (   t   openssl_confusedR
   R   R   R   t   _translate_ocsp_queryR"   R   t   debugR   t   warnt   openssl_unknownt   openssl_expired_ocspt   openssl_brokent   infot   openssl_revokedR   t   openssl_expired_ocsp_revoked(   R   R%   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   test_translate_ocspZ   s&    	(
   t   __name__t
   __module__R   R   R   R   R   R'   R0   R;   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyR      s   	
	R   s€   
/etc/letsencrypt/live/example.org/cert.pem: good
	This Update: Dec 17 00:00:00 2016 GMT
	Next Update: Dec 24 00:00:00 2016 GMT
s´   
Response Verify Failure
139903674214048:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get local issuer certificate
s   blah.pems^   
blah.pem: good
	This Update: Dec 20 18:00:00 2016 GMT
	Next Update: Dec 27 18:00:00 2016 GMT
s   Response verify OKsŒ   
blah.pem: revoked
	This Update: Dec 20 01:00:00 2016 GMT
	Next Update: Dec 27 01:00:00 2016 GMT
	Revocation Time: Dec 20 01:46:34 2016 GMT
sa   
blah.pem: unknown
	This Update: Dec 20 18:00:00 2016 GMT
	Next Update: Dec 27 18:00:00 2016 GMT
t	   tentaclessÜ   
blah.pem: WARNING: Status times invalid.
140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372:
good
	This Update: Apr  6 00:00:00 2016 GMT
	Next Update: Apr 13 00:00:00 2016 GMT
sß   
blah.pem: WARNING: Status times invalid.
140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372:
revoked
	This Update: Apr  6 00:00:00 2016 GMT
	Next Update: Apr 13 00:00:00 2016 GMT
t   __main__(   R   s€   
/etc/letsencrypt/live/example.org/cert.pem: good
	This Update: Dec 17 00:00:00 2016 GMT
	Next Update: Dec 24 00:00:00 2016 GMT
s´   
Response Verify Failure
139903674214048:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get local issuer certificate
(   s   blah.pems^   
blah.pem: good
	This Update: Dec 20 18:00:00 2016 GMT
	Next Update: Dec 27 18:00:00 2016 GMT
s   Response verify OK(   s   blah.pemsŒ   
blah.pem: revoked
	This Update: Dec 20 01:00:00 2016 GMT
	Next Update: Dec 27 01:00:00 2016 GMT
	Revocation Time: Dec 20 01:46:34 2016 GMT
s   Response verify OK(   s   blah.pemsa   
blah.pem: unknown
	This Update: Dec 20 18:00:00 2016 GMT
	Next Update: Dec 27 18:00:00 2016 GMT
s   Response verify OK(   R   R>   s   Response verify OK(   s   blah.pemsÜ   
blah.pem: WARNING: Status times invalid.
140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372:
good
	This Update: Apr  6 00:00:00 2016 GMT
	Next Update: Apr 13 00:00:00 2016 GMT
s   Response verify OK(   s   blah.pemsß   
blah.pem: WARNING: Status times invalid.
140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372:
revoked
	This Update: Apr  6 00:00:00 2016 GMT
	Next Update: Apr 13 00:00:00 2016 GMT
s   Response verify OK(   t   __doc__t   unittestR   R   R    R   t   TestCaseR   R1   R"   R9   R5   R7   R6   R:   R<   t   main(    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/ocsp_test.pyt   <module>   s4   f            