ó
µÌØNc           @   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 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   KeyringCredentialStores   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   8   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   setUpE   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_errorJ   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_namesW   s    "c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   NR    R   (   R2   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   (   R2   R   R   t   lookup_web_root(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR8   c   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R2   R   R   R7   t   EDGE_SERVICE_ROOT(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt-   test_edge_service_root_url_becomes_productionj   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R2   R   R   R9   t   EDGE_WEB_ROOT(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt)   test_edge_web_root_url_becomes_productiono   s    c         C   s<   |  j  ƒ  * |  j t j t j ƒ t j d ƒ ƒ Wd  QXd  S(   NR   (   R2   R   R   R7   R:   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt/   test_top_level_edge_constant_becomes_productiont   s    c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   Ns   https://api.edge.launchpad.net/R   (   R2   R   R   R7   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt5   test_edge_server_equivalent_string_becomes_productiony   s    c         C   s9   |  j  ƒ  ' |  j t j d ƒ t j d ƒ ƒ Wd  QXd  S(   Ns   https://edge.launchpad.net/R   (   R2   R   R   R9   (   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(
   R2   R"   R   R   R7   R3   R9   R5   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    R2   R6   R8   R;   R=   R>   R?   R@   RF   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR   B   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   R3   R   t   NoneRB   R+   t   strt
   startswitht   AssertionErrorRA   R   t   DEFAULT_VERSION(   R   RI   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   RS   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRG       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(   RA   RB   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   RU   (   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   RU   (   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(   NRW   t   name1RY   t   name2R   (   RA   RB   R   RU   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt#   test_conflicting_app_identificationÚ   s    (   R   R   R   RV   RX   RZ   R]   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRT   Í   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(   NRW   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	   launchpadRg   (    (    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(   NRW   s   not importantR_   t   credential_store(	   R`   Ra   R   RA   RB   R   Rb   Rh   Ri   (   R   Rj   Rk   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   Rm   Rp   (    (    (    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   launchpadlibRg   t   keyring(   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#     s    c         C   s   t  j ` d  S(   N(   Rr   Rg   Rs   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   tearDown
  s    (   R   R   R   R#   Rt   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRq      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   superRu   R#   R`   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(   Rv   Ru   Rt   t   shutilt   rmtreeRx   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRt     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(   NRr   s   not importantRH   t   launchpadlib_dirs   api.example.comt   cacheRg   (
   Rh   t   patht   joinRx   R   Rb   RU   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(   NRr   ií  s   not importantRH   R{   (   Rh   R}   R~   Rx   t   mkdirt   chmodR+   R   t   statt   S_IMODEt   st_modet   assertNotEqualt   S_IWRITEt   S_IREADt   S_IEXECR   Rb   RU   R   (   R   R{   t   statinfot   mode(    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'   test_dirs_created_are_changed_to_secure0  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(   NRr   s   not importantRH   R{   (   Rh   R}   R~   Rx   R   Rb   RU   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_secureA  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(   NRr   s   not importantRH   R{   RI   t   foot   bar(	   Rh   R}   R~   Rx   R   Rb   RU   Rd   t   passed_in_args(   R   R{   Rl   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_version_is_propagatedL  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(   NRr   s   very importantRH   R{   (   Rh   R}   R~   Rx   R   Rb   RU   Rd   Rg   Re   RW   (   R   R{   Rl   (    (    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   RU   R   Rb   Rd   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_propagatedv  s
    c         C   s   |  j  t t j ƒ d  S(   N(   RA   RB   R   Rb   (   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(   NRW   R   (   R   Rb   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRX   …  s    c         C   s   t  j d d ƒ d  S(   NRY   R   (   R   Rb   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRZ   Š  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   RU   RA   RB   R   Rb   (   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.RY   t   consumer_name1t   consumer_name2R–   N(   R   RU   RK   RA   RB   R   Rb   (   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.RY   Re   t   allow_access_levelst   FOOt   BARR–   N(   R   RU   RA   RB   R   Rb   RK   (   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 nameRn   (   R   RA   RB   R   Rb   (   R   R¤   Ro   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(   NRY   Re   R    R¡   (
   R   Rb   Rd   Rg   Re   Rf   RW   RK   R–   R    (   R   Rl   (    (    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   Rb   Rd   R–   R    (   R   Rl   (    (    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{   RH   t   timeoutt
   proxy_infoR©   R|   s   api.example.comRI   (   t   objectR   Rb   Rx   RU   R   Rg   t   access_tokenRf   R   t   ACCESS_TOKEN_KEYRe   RW   Rd   R–   R    t   dictRh   R}   R~   RO   R“   (   R   R«   R¬   Rl   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{   RH   t    s   api.example.comRg   N(   R   t   login_anonymouslyRx   RU   R   Rg   R®   Rf   t   secretRh   R}   R~   R€   t   exists(   R   Rl   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.comRg   s   app namet   consumer_secrets   consumer_secret:42R®   s   access_key:84s   access_secret:168R‘   R{   RH   R«   R¬   RI   R|   (   Rh   t   makedirsR}   R~   Rx   R   R   t   save_to_pathR­   R   Rb   RU   R°   R   R“   R   (   R   t   credentials_file_pathRg   R«   R¬   RI   Rl   R±   Rf   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 nameRH   R|   s   ..s   .launchpadlibs   api.example.com(   Rh   t   environRx   R   Rb   RU   R“   R}   t   abspathR~   R   R+   R¶   (   R   t   old_homeRl   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   RH   s"   https://api.staging.launchpad.net/s   https://R‘   (   s   app names   https://(   R   Rb   R   R“   R   R3   RA   RB   (   R   Rl   (    (    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   Rb   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt!   test_max_failed_attempts_accepted8  s    (   R   R   R   R#   Rt   Rƒ   R   R   R”   R•   Rš   R›   RX   RZ   Rœ   RŸ   R£   R§   R¨   Rª   R²   R·   R¾   RÄ   RÅ   RÇ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRu     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   sl   t  j d t ƒ T } t  j d ƒ t j d d d ƒ |  j t | ƒ d ƒ |  j | d j t	 ƒ Wd  QXd  S(   NR$   R%   Re   t   tokenRµ   i   i    (
   R&   R'   R(   R)   R   t   loginRd   R*   R-   R.   (   R   R0   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_login_is_deprecatedB  s
    c         C   sf   t  j d t ƒ N } t  j d ƒ t j d ƒ |  j t | ƒ d ƒ |  j | d j t	 ƒ Wd  QXd  S(   NR$   R%   Re   i   i    (
   R&   R'   R(   R)   R   t   get_token_and_loginRd   R*   R-   R.   (   R   R0   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt&   test_get_token_and_login_is_deprecatedJ  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	   Rr   Rl   t   socketR`   Rw   Rx   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#   W  s    c         C   s    t  t j _  t j |  j ƒ d  S(   N(   RÏ   Rr   Rl   Ry   Rz   Rx   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRt   ^  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   appendRK   (    (   t   callback_called(    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   callbackg  s    Rr   s   http://api.example.com/s   not importantRH   R{   R¥   i   (
   Rh   R}   R~   Rx   R   R   R   Rb   Rd   R*   (   R   RÒ   R{   RH   (    (   RÑ   sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   test_credentials_save_failedb  s    c         C   sZ   t  j j |  j d ƒ } d } t t ƒ  ƒ ' |  j t t j	 d d | d | ƒWd  QXd  S(   NRr   s   http://api.example.com/s   not importantRH   R{   (
   Rh   R}   R~   Rx   R   R   RA   t   RuntimeErrorR   Rb   (   R   R{   RH   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt:   test_default_credentials_save_failed_is_to_raise_exceptionu  s    (   R   R   R#   Rt   RÓ   RÕ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRÎ   S  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	   Rr   Rl   RÏ   R`   Rw   Rx   (   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Ï   Rr   Rl   Ry   Rz   Rx   (   R   (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRt   Ž  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(	   NRr   s   http://api.example.com/s   Super App 3000RH   R{   i    i   t   @(   Rh   R}   R~   Rx   R
   R   R   Rb   Rg   Re   Rf   t   dataR4   t   assert_Rd   (   R   R{   Rs   RH   RW   Rl   RY   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 s7 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(   NRr   s$   oops, a fresh keyring has data in its   application nameRH   s   http://alpha.example.com/R{   s   http://beta.example.com/i   i    i   (   Rh   R}   R~   Rx   R
   RØ   RN   R   R   Rb   R*   R4   R‰   (   R   R{   Rs   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#   Rt   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    Rh   Ry   RÏ   R†   R`   Rß   R&   t   lazr.restfulclient.resourceR   t   launchpadlib.credentialsR   R   Rr   R   t   launchpadlib.launchpadR   t   launchpadlib.testing.helpersR   R   R   R	   R
   R   R   R   RU   t   TestCaseR   R   RG   RT   R^   Rq   Ru   RÈ   RÎ   RÖ   Râ   (    (    (    sE   /usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt   <module>   s:   4	
^-ÿ 1/@