ó
È{ZMc           @   s  d  Z  e Z d d l 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 m Z d d l m Z m Z d d l m Z d d l Z d d l m Z d d l m Z m Z m Z m Z m Z m Z m Z d d	 l m Z m Z d
 Z d e
 j  f d „  ƒ  YZ! d e
 j  f d „  ƒ  YZ" d e
 j  f d „  ƒ  YZ# d e
 j  f d „  ƒ  YZ$ d e
 j  f d „  ƒ  YZ% d e
 j  f d „  ƒ  YZ& d e& f d „  ƒ  YZ' d e& f d „  ƒ  YZ( d e
 j  f d „  ƒ  YZ) d e
 j  f d „  ƒ  YZ* d „  Z+ d S(    s   Tests for the Launchpad class.iÿÿÿÿ(   t   contextmanagerN(   t   ServiceRoot(   t   AccessTokent   Credentials(   t   uris(   t	   Launchpad(   t   assert_keyring_not_importedt   BadSaveKeyringt   fake_keyringt   FauxSocketModulet   InMemoryKeyringt   NoNetworkAuthorizationEnginet   NoNetworkLaunchpad(   t   KeyringCredentialStoret   UnencryptedFileCredentialStores   http://api.example.com/t   TestResourceTypeClassesc           B   s   e  Z d  Z d „  Z RS(   s<   launchpadlib must know about restfulclient's resource types.c         C   s;   x4 t  j j ƒ  D]# \ } } |  j t j | | ƒ q Wd  S(   N(   R   t   RESOURCE_TYPE_CLASSESt   itemst   assertEqualR   (   t   selft   namet   cls(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_resource_types<   s    (   t   __name__t
   __module__t   __doc__R   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR   9   s   t   TestNameLookupsc           B   sw   e  Z d  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z RS(   s0   Test the utility functions in the 'uris' module.c         C   s(   t  d d d d d d d g ƒ |  _ d  S(   Nt
   productiont	   qastagingt   stagingt   dogfoodt   devt   test_devt   edge(   t   sortedt   aliases(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   setUpF   s    c         c   s‚   t  j d t ƒ j } t  j d ƒ d  V|  j t | ƒ d ƒ | \ } |  j t | j t	 ƒ ƒ |  j d | j
 j
 k ƒ Wd  QXd  S(   Nt   recordt   alwaysi   s   no longer exists(   t   warningst   catch_warningst   Truet   simplefilterR   t   lent
   assertTruet
   issubclasst   categoryt   DeprecationWarningt   message(   R   t   caughtt   warning(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   edge_deprecation_errorK   s    	c         C   sH   |  j  t t j j ƒ  ƒ |  j ƒ |  j  t t j j ƒ  ƒ |  j ƒ d  S(   N(   R   R"   R   t   service_rootst   keysR#   t	   web_roots(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_short_namesX   s    "c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   NR!   R   (   R3   R   R   t   lookup_service_root(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt$   test_edge_service_root_is_production]   s    c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   NR!   R   (   R3   R   R   t   lookup_web_root(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR9   d   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R3   R   R   R8   t   EDGE_SERVICE_ROOT(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt-   test_edge_service_root_url_becomes_productionk   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R3   R   R   R:   t   EDGE_WEB_ROOT(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt)   test_edge_web_root_url_becomes_productionp   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R3   R   R   R8   R;   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt/   test_top_level_edge_constant_becomes_productionu   s    c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   Ns   https://api.edge.launchpad.net/R   (   R3   R   R   R8   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt5   test_edge_server_equivalent_string_becomes_productionz   s    c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   Ns   https://edge.launchpad.net/R   (   R3   R   R   R:   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt9   test_edge_web_server_equivalent_string_becomes_production€   s    c      
   C   sü   |  j  ƒ  9 x1 |  j D]& } |  j t j | ƒ t j | ƒ q WWd QX|  j  ƒ  9 x1 |  j D]& } |  j t j | ƒ t j | ƒ q^ WWd QXd } |  j t j | ƒ | ƒ |  j t j | ƒ | ƒ d } |  j t	 t j | ƒ |  j t	 t j | ƒ d S(   s=   Ensure that short service names turn into long service names.Ns   http://some-other-server.coms	   not-a-url(
   R3   R#   R   R   R8   R4   R:   R6   t   assertRaisest
   ValueError(   R   t   aliast
   other_roott	   not_a_url(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_lookups†   s    $$(   R   R   R   R$   R    R3   R7   R9   R<   R>   R?   R@   RA   RG   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR   C   s   									t"   TestServiceNameWithEmbeddedVersionc           B   s   e  Z d  Z d „  Z RS(   s3  Reject service roots that include the version at the end of the URL.

    If the service root is "http://api.launchpad.net/beta/" and the
    version is "beta", the launchpadlib constructor will raise an
    exception.

    This happens with scripts that were written against old versions
    of launchpadlib. The alternative is to try to silently fix it (the
    fix will eventually break as new versions of the web service are
    released) or to go ahead and make a request to
    http://api.launchpad.net/beta/beta/, and cause an unhelpful 404
    error.
    c      
   C   så   d } t  j d | } y  t d  d  d  d | d | ƒWn/ t k
 rh } |  j t | ƒ j d ƒ ƒ n Xt d ƒ ‚ | d 7} |  j	 t t d  d  d  d | d | ƒt
 j } t  j d | d } |  j	 t t d  d  d  d | ƒd  S(   Ns   version-fooR   t   service_roott   versionso   It looks like you're using a service root that incorporates the name of the web service version ("version-foo")s*   Expected a ValueError that was not thrown!t   /(   R   R4   R   t   NoneRC   R,   t   strt
   startswitht   AssertionErrorRB   R   t   DEFAULT_VERSION(   R   RJ   t   roott   et   default_version(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'   test_service_name_with_embedded_version°   s      	
	(   R   R   R   RT   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRH   ¡   s   t#   TestRequestTokenAuthorizationEnginec           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s4   Tests for the RequestTokenAuthorizationEngine class.c         C   s   |  j  t t t ƒ d  S(   N(   RB   RC   R   t   SERVICE_ROOT(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_app_must_be_identifiedÑ   s    c         C   s   t  t d d ƒd  S(   Nt   application_nameR   (   R   RV   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt$   test_application_name_identifies_appÕ   s    c         C   s   t  t d d ƒd  S(   Nt   consumer_nameR   (   R   RV   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt!   test_consumer_name_identifies_appØ   s    c         C   sB   |  j  t t t d d d d ƒ|  j  t t t d d d d ƒd  S(   NRX   t   name1RZ   t   name2R   (   RB   RC   R   RV   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt#   test_conflicting_app_identificationÛ   s    (   R   R   R   RW   RY   R[   R^   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRU   Î   s
   			t%   TestLaunchpadLoginWithCredentialsFilec           B   s    e  Z d  Z d „  Z d „  Z RS(   s9   Tests for Launchpad.login_with() with a credentials file.c         C   si   t  j ƒ  \ } } t j d d d | ƒ } t j | ƒ } |  j | j j | j	 j j ƒ t
 j | ƒ d  S(   NRX   s   not importantt   credentials_file(   t   tempfilet   mkstempR   t
   login_withR   t   load_from_patht   assertEqualst   consumert   keyt   credentialst   ost   remove(   R   t   ignoret   filenamet	   launchpadRh   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_filenameë   s    	c      	   C   sQ   t  j ƒ  \ } } t ƒ  } |  j t t j d d d | d | ƒt j | ƒ d  S(   NRX   s   not importantR`   t   credential_store(	   Ra   Rb   R   RB   RC   R   Rc   Ri   Rj   (   R   Rk   Rl   t   store(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt+   test_cannot_specify_both_filename_and_store÷   s    	(   R   R   R   Rn   Rq   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR_   è   s   	t   KeyringTestc           B   s    e  Z d  Z d „  Z d „  Z RS(   s*   Base class for tests that use the keyring.c         C   s   t  ƒ  t ƒ  t j _ d  S(   N(   R   R
   t   launchpadlibRh   t   keyring(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR$     s    c         C   s   t  j ` d  S(   N(   Rs   Rh   Rt   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   tearDown  s    (   R   R   R   R$   Ru   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRr     s   	t   TestLaunchpadLoginWithc           B   sÝ   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 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s!   Tests for Launchpad.login_with().c         C   s&   t  t |  ƒ j ƒ  t j ƒ  |  _ d  S(   N(   t   superRv   R$   Ra   t   mkdtempt   temp_dir(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR$     s    c         C   s'   t  t |  ƒ j ƒ  t j |  j ƒ d  S(   N(   Rw   Rv   Ru   t   shutilt   rmtreeRy   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRu     s    c         C   sÒ   t  j j |  j d ƒ } t j d d t d | ƒ|  j t  j j | ƒ ƒ t  j j | d ƒ } |  j t  j j | ƒ ƒ |  j t  j j t  j j | d ƒ ƒ ƒ t  j j | d ƒ } |  j	 t  j j | ƒ ƒ d  S(   NRs   s   not importantRI   t   launchpadlib_dirs   api.example.comt   cacheRh   (
   Ri   t   patht   joinRy   R   Rc   RV   R,   t   isdirt   assertFalse(   R   R|   t   service_patht   credentials_path(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_dirs_created  s    "c         C   sï   t  j j |  j d ƒ } t  j | ƒ t  j | d ƒ |  j t  j j | ƒ ƒ t  j | ƒ } t j	 | j
 ƒ } |  j | t j t j Bt j Bƒ t j d d t d | ƒt  j | ƒ } t j	 | j
 ƒ } |  j | t j t j Bt j Bƒ d  S(   NRs   ií  s   not importantRI   R|   (   Ri   R~   R   Ry   t   mkdirt   chmodR,   R€   t   statt   S_IMODEt   st_modet   assertNotEqualt   S_IWRITEt   S_IREADt   S_IEXECR   Rc   RV   R   (   R   R|   t   statinfot   mode(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'   test_dirs_created_are_changed_to_secure1  s    !c         C   s   t  j j |  j d ƒ } t j d d t d | ƒ|  j t  j j | ƒ ƒ t  j	 | ƒ } t	 j
 | j ƒ } |  j | t	 j t	 j Bt	 j Bƒ d  S(   NRs   s   not importantRI   R|   (   Ri   R~   R   Ry   R   Rc   RV   R,   R€   R‡   Rˆ   R‰   R   R‹   RŒ   R   (   R   R|   RŽ   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_dirs_created_are_secureB  s    c         C   sŒ   t  j j |  j d ƒ } t j d d t d | d d ƒ} |  j | j d d ƒ t j d d t d | d d ƒ} |  j | j d d ƒ d  S(   NRs   s   not importantRI   R|   RJ   t   foot   bar(	   Ri   R~   R   Ry   R   Rc   RV   Re   t   passed_in_args(   R   R|   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_version_is_propagatedM  s    c         C   s„   t  j j |  j d ƒ } t j d d t d | ƒ} |  j | j j	 j
 d ƒ t j d d t d | ƒ} |  j | j j	 j
 d ƒ d  S(   NRs   s   very importantRI   R|   (   Ri   R~   R   Ry   R   Rc   RV   Re   Rh   Rf   RX   (   R   R|   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt#   test_application_name_is_propagated`  s    		c         C   sI   t  t d ƒ } t j d | ƒ |  j | j d ƒ |  j | j d ƒ d  S(   Ns   application namet   authorization_enginei   (   R   RV   R   Rc   Re   t   request_tokens_obtainedt   access_tokens_obtained(   R   t   engine(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'   test_authorization_engine_is_propagatedw  s
    c         C   s   |  j  t t j ƒ d  S(   N(   RB   RC   R   Rc   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt)   test_login_with_must_identify_application  s    c         C   s   t  j d d ƒ d  S(   NRX   R   (   R   Rc   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRY   †  s    c         C   s   t  j d d ƒ d  S(   NRZ   R   (   R   Rc   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR[   ‹  s    c         C   s/   t  t d ƒ } |  j t t j d d | ƒd S(   s;   Catch an attempt to specify inconsistent application_names.s   application name1s   application name2R—   N(   R   RV   RB   RC   R   Rc   (   R   Rš   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt+   test_inconsistent_application_name_rejected  s
    c         C   s5   t  t d d d ƒ} |  j t t j d d | ƒd S(   s;   Catch an attempt to specify inconsistent application_names.RZ   t   consumer_name1t   consumer_name2R—   N(   R   RV   RL   RB   RC   R   Rc   (   R   Rš   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt(   test_inconsistent_consumer_name_rejected˜  s
    c      
   C   sJ   t  t d d d d g ƒ} |  j t t j d d d d d g d | ƒd S(   s=   Catch an attempt to specify inconsistent allow_access_levels.RZ   Rf   t   allow_access_levelst   FOOt   BARR—   N(   R   RV   RB   RC   R   Rc   RL   (   R   Rš   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt.   test_inconsistent_allow_access_levels_rejected¡  s    	c         C   sG   d „  } t  d | ƒ } d „  } |  j t t j d d | d | ƒd  S(   Nc           S   s   d  S(   N(    (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt	   callback1¯  s    t   credential_save_failedc           S   s   d  S(   N(    (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt	   callback2³  s    s   app nameRo   (   R   RB   RC   R   Rc   (   R   R¥   Rp   R§   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt(   test_inconsistent_credential_save_failed¬  s    		c         C   sj   t  j d d d d g ƒ } |  j | j j j d ƒ |  j | j j j d  ƒ |  j | j j	 d g ƒ d  S(   NRZ   Rf   R¡   R¢   (
   R   Rc   Re   Rh   Rf   Rg   RX   RL   R—   R¡   (   R   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_non_desktop_integration¹  s    	c         C   s5   t  j d d d g ƒ} |  j | j j d g ƒ d  S(   Ns   application nameR¡   R¢   t   DESKTOP_INTEGRATION(   R   Rc   Re   R—   R¡   (   R   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt<   test_desktop_integration_doesnt_happen_without_consumer_nameÅ  s    c         C   sà   t  ƒ  } t  ƒ  } t j d d |  j d t d | d | ƒ} |  j | j j j t	 j
 ƒ |  j | j j j d ƒ |  j | j j d g ƒ t d t d t j j |  j d d ƒ d | d | d	 t j ƒ } |  j | j | ƒ d  S(
   Ns   app nameR|   RI   t   timeoutt
   proxy_infoRª   R}   s   api.example.comRJ   (   t   objectR   Rc   Ry   RV   R   Rh   t   access_tokenRg   R   t   ACCESS_TOKEN_KEYRf   RX   Re   R—   R¡   t   dictRi   R~   R   RP   R”   (   R   R¬   R­   Rm   t   expected_arguments(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt*   test_no_credentials_creates_new_credentialÏ  s$    		

c         C   s‹   t  j d d |  j d t ƒ} |  j | j j j d ƒ |  j | j j j d ƒ t	 j
 j |  j d d d ƒ } |  j t	 j
 j | ƒ ƒ d S(   s)   Test the anonymous login helper function.s   anonymous accessR|   RI   t    s   api.example.comRh   N(   R   t   login_anonymouslyRy   RV   R   Rh   R¯   Rg   t   secretRi   R~   R   R   t   exists(   R   Rm   Rƒ   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_anonymous_loginç  s    			c         C   s0  t  j t  j j |  j d d ƒ ƒ t  j j |  j d d d ƒ } t d d d d t d d ƒ ƒ} | j | ƒ t ƒ  } t ƒ  } d	 } t	 j
 d d
 |  j d t d | d | d | ƒ} t d t d | d | d | d t  j j |  j d d ƒ ƒ } x7 | j ƒ  D]) \ } }	 | j | }
 |  j |
 |	 ƒ qÿ Wd  S(   Ns   api.example.comRh   s   app namet   consumer_secrets   consumer_secret:42R¯   s   access_key:84s   access_secret:168R’   R|   RI   R¬   R­   RJ   R}   (   Ri   t   makedirsR~   R   Ry   R   R   t   save_to_pathR®   R   Rc   RV   R±   R   R”   R   (   R   t   credentials_file_pathRh   R¬   R­   RJ   Rm   R²   Rg   t   expectedt   actual(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt-   test_existing_credentials_arguments_passed_onõ  s0    				c         C   sÁ   t  j d } |  j t  j d <t j d d t ƒ} | t  j d <| j d } t  j j t  j j	 | d d ƒ ƒ } |  j
 | t  j j	 |  j d ƒ ƒ |  j t  j j t  j j	 | d d ƒ ƒ ƒ d  S(   Nt   HOMEs   app nameRI   R}   s   ..s   .launchpadlibs   api.example.com(   Ri   t   environRy   R   Rc   RV   R”   R~   t   abspathR   R   R,   R·   (   R   t   old_homeRm   t	   cache_dirR|   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_None_launchpadlib_dir  s    	c         C   sƒ   t  j d d ƒ } |  j | j d d ƒ t  j d t j d ƒ } |  j | j d t j d ƒ d } |  j t t  j d d ƒ d  S(   Ns   app nameR   RI   s"   https://api.staging.launchpad.net/s   https://R’   (   s   app names   https://(   R   Rc   R   R”   R   R4   RB   RC   (   R   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_short_service_name$  s    

c         C   s   t  j d d d ƒd  S(   Ns   not importantt   max_failed_attemptsi   (   R   Rc   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt!   test_max_failed_attempts_accepted9  s    (   R   R   R   R$   Ru   R„   R   R‘   R•   R–   R›   Rœ   RY   R[   R   R    R¤   R¨   R©   R«   R³   R¸   R¿   RÅ   RÆ   RÈ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRv     s0   								
										
					t   TestDeprecatedLoginMethodsc           B   s    e  Z d  Z d „  Z d „  Z RS(   s2   Make sure the deprecated login methods still work.c         C   sn   t  j d t ƒ V } t  j d ƒ t j d d d ƒ } |  j t | ƒ d ƒ |  j | d j t	 ƒ Wd  QXd  S(   NR%   R&   Rf   t   tokenR¶   i   i    (
   R'   R(   R)   R*   R   t   loginRe   R+   R.   R/   (   R   R1   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_login_is_deprecatedC  s    c         C   sh   t  j d t ƒ P } t  j d ƒ t j d ƒ } |  j t | ƒ d ƒ |  j | d j t	 ƒ Wd  QXd  S(   NR%   R&   Rf   i   i    (
   R'   R(   R)   R*   R   t   get_token_and_loginRe   R+   R.   R/   (   R   R1   Rm   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt&   test_get_token_and_login_is_deprecatedL  s
    (   R   R   R   RÌ   RÎ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRÉ   @  s   		t!   TestCredenitialSaveFailedCallbackc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s"   t  ƒ  t j _ t j ƒ  |  _ d  S(   N(   R	   Rs   Rm   t   socketRa   Rx   Ry   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR$   Y  s    c         C   s    t  t j _  t j |  j ƒ d  S(   N(   RÐ   Rs   Rm   Rz   R{   Ry   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRu   `  s    c            s‚   g  ‰  ‡  f d †  } t  j j |  j d ƒ } d } t t ƒ  ƒ : t j d d | d | d | ƒ|  j t	 ˆ  ƒ d ƒ Wd  QXd  S(	   Nc              s   ˆ  j  d  ƒ d  S(   N(   t   appendRL   (    (   t   callback_called(    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   callbacki  s    Rs   s   http://api.example.com/s   not importantRI   R|   R¦   i   (
   Ri   R~   R   Ry   R   R   R   Rc   Re   R+   (   R   RÓ   R|   RI   (    (   RÒ   sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_credentials_save_failedd  s    c         C   sZ   t  j j |  j d ƒ } d } t t ƒ  ƒ ' |  j t t j	 d d | d | ƒWd  QXd  S(   NRs   s   http://api.example.com/s   not importantRI   R|   (
   Ri   R~   R   Ry   R   R   RB   t   RuntimeErrorR   Rc   (   R   R|   RI   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt:   test_default_credentials_save_failed_is_to_raise_exceptionw  s    (   R   R   R$   Ru   RÔ   RÖ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRÏ   U  s   			t   TestMultipleSitesc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s"   t  ƒ  t j _ t j ƒ  |  _ d  S(   N(   R	   Rs   Rm   RÐ   Ra   Rx   Ry   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR$   ‰  s    c         C   s    t  t j _  t j |  j ƒ d  S(   N(   RÐ   Rs   Rm   Rz   R{   Ry   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRu     s    c      
   C   sÃ   t  j j |  j d ƒ } t ƒ  } d } d } t | ƒ / t j | d | d | ƒ} | j j	 j
 } Wd  QX| j j ƒ  d d } |  j | | k ƒ |  j | | k ƒ |  j | | d | ƒ d  S(	   NRs   s   http://api.example.com/s   Super App 3000RI   R|   i    i   t   @(   Ri   R~   R   Ry   R
   R   R   Rc   Rh   Rf   Rg   t   dataR5   t   assert_Re   (   R   R|   Rt   RI   RX   Rm   RZ   t   application_key(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt"   test_components_of_application_key”  s    		c      
   C   sÜ   t  j j |  j d ƒ } t ƒ  } | j s4 t d ‚ t | ƒ 7 t j	 d d d d | ƒt j	 d d d d | ƒWd  QXt
 | j j ƒ  ƒ d k sš t ‚ | j j ƒ  d	 d
 } | j j ƒ  d
 d
 } |  j | | ƒ d  S(   NRs   s$   oops, a fresh keyring has data in its   application nameRI   s   http://alpha.example.com/R|   s   http://beta.example.com/i   i    i   (   Ri   R~   R   Ry   R
   RÙ   RO   R   R   Rc   R+   R5   RŠ   (   R   R|   Rt   t   application_key_1t   application_key_2(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_same_app_different_servers¬  s    	!(   R   R   R$   Ru   RÜ   Rß   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR×   „  s   			c           C   s   t  j ƒ  j t ƒ S(   N(   t   unittestt
   TestLoadert   loadTestsFromNameR   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt
   test_suiteÄ  s    (,   R   t   typet   __metaclass__t
   contextlibR    Ri   Rz   RÐ   R‡   Ra   Rà   R'   t   lazr.restfulclient.resourceR   t   launchpadlib.credentialsR   R   Rs   R   t   launchpadlib.launchpadR   t   launchpadlib.testing.helpersR   R   R   R	   R
   R   R   R   R   RV   t   TestCaseR   R   RH   RU   R_   Rr   Rv   RÉ   RÏ   R×   Rã   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   <module>   s:   4	
^-ÿ 1/@