Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/launchpadlib/tests/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyc


Nc@s
dZeZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZddlmZddlZddlmZddlmZmZmZmZmZmZmZdd	lmZd
Zde
jfdYZ d
e
jfdYZ!de
jfdYZ"de
jfdYZ#de
jfdYZ$de
jfdYZ%de%fdYZ&de%fdYZ'de
jfdYZ(de
jfdYZ)dZ*dS( sTests for the Launchpad class.i(tcontextmanagerN(tServiceRoot(tAccessTokentCredentials(turis(t	Launchpad(tassert_keyring_not_importedtBadSaveKeyringtfake_keyringtFauxSocketModuletInMemoryKeyringtNoNetworkAuthorizationEnginetNoNetworkLaunchpad(tKeyringCredentialStoreshttp://api.example.com/tTestResourceTypeClassescBseZdZdZRS(s<launchpadlib must know about restfulclient's resource types.cCs;x4tjjD]#\}}|jtj||qWdS(N(RtRESOURCE_TYPE_CLASSEStitemstassertEqualR(tselftnametcls((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_resource_types;s(t__name__t
__module__t__doc__R(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR8stTestNameLookupscBsweZdZdZedZdZdZdZdZdZ	dZ
d	Zd
ZdZ
RS(s0Test the utility functions in the 'uris' module.cCs(tdddddddg|_dS(Nt
productiont	qastagingtstagingtdogfoodtdevttest_devtedge(tsortedtaliases(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pytsetUpEsccstjdtj}tjddV|jt|d|\}|jt|jt	|jd|j
j
kWdQXdS(Ntrecordtalwaysisno longer exists(twarningstcatch_warningstTruetsimplefilterRtlent
assertTruet
issubclasstcategorytDeprecationWarningtmessage(Rtcaughttwarning((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pytedge_deprecation_errorJs
	cCsH|jttjj|j|jttjj|jdS(N(RR!Rt
service_rootstkeysR"t	web_roots(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_short_namesWs"cCs9|j'|jtjdtjdWdQXdS(NR R(R2RRtlookup_service_root(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt$test_edge_service_root_is_production\s
cCs9|j'|jtjdtjdWdQXdS(NR R(R2RRtlookup_web_root(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR8cs
cCs<|j*|jtjtjtjdWdQXdS(NR(R2RRR7tEDGE_SERVICE_ROOT(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt-test_edge_service_root_url_becomes_productionjs
cCs<|j*|jtjtjtjdWdQXdS(NR(R2RRR9t
EDGE_WEB_ROOT(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt)test_edge_web_root_url_becomes_productionos
cCs<|j*|jtjtjtjdWdQXdS(NR(R2RRR7R:(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt/test_top_level_edge_constant_becomes_productionts
cCs9|j'|jtjdtjdWdQXdS(Nshttps://api.edge.launchpad.net/R(R2RRR7(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt5test_edge_server_equivalent_string_becomes_productionys
cCs9|j'|jtjdtjdWdQXdS(Nshttps://edge.launchpad.net/R(R2RRR9(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt9test_edge_web_server_equivalent_string_becomes_productions
c
Cs|j9x1|jD]&}|jtj|tj|qWWdQX|j9x1|jD]&}|jtj|tj|q^WWdQXd}|jtj|||jtj||d}|jt	tj||jt	tj|dS(s=Ensure that short service names turn into long service names.Nshttp://some-other-server.coms	not-a-url(
R2R"RRR7R3R9R5tassertRaisest
ValueError(Rtaliast
other_roott	not_a_url((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_lookupss
$
$(RRRR#RR2R6R8R;R=R>R?R@RF(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRBs	
								t"TestServiceNameWithEmbeddedVersioncBseZdZdZRS(s3Reject 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
Csd}tjd|}y tdddd|d|Wn/tk
rh}|jt|jdn
Xtd|d7}|j	ttdddd|d|t
j}tjd|d}|j	ttdddd|dS(Nsversion-fooRtservice_roottversionsoIt 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/(RR3RtNoneRBR+tstrt
startswithtAssertionErrorRARtDEFAULT_VERSION(RRItroottetdefault_version((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'test_service_name_with_embedded_versions  	

	(RRRRS(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRGs
t#TestRequestTokenAuthorizationEnginecBs2eZdZdZdZdZdZRS(s4Tests for the RequestTokenAuthorizationEngine class.cCs|jtttdS(N(RARBRtSERVICE_ROOT(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_app_must_be_identifiedscCsttdddS(Ntapplication_nameR(RRU(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt$test_application_name_identifies_appscCsttdddS(Nt
consumer_nameR(RRU(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt!test_consumer_name_identifies_appscCsB|jtttdddd|jtttdddddS(NRWtname1RYtname2R(RARBRRU(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt#test_conflicting_app_identifications(RRRRVRXRZR](((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRTs
			t%TestLaunchpadLoginWithCredentialsFilecBs eZdZdZdZRS(s9Tests for Launchpad.login_with() with a credentials file.cCsitj\}}tjddd|}tj|}|j|jj|j	jjt
j|dS(NRWs
not importanttcredentials_file(ttempfiletmkstempRt
login_withRtload_from_pathtassertEqualstconsumertkeytcredentialstostremove(Rtignoretfilenamet	launchpadRg((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt
test_filenames	c	CsQtj\}}t}|jttjddd|d|tj|dS(NRWs
not importantR_tcredential_store(	R`RaR
RARBRRbRhRi(RRjRktstore((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt+test_cannot_specify_both_filename_and_stores	(RRRRmRp(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR^s	tKeyringTestcBs eZdZdZdZRS(s*Base class for tests that use the keyring.cCstttj_dS(N(RR
tlaunchpadlibRgtkeyring(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#scCs
tj`dS(N(RrRgRs(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttearDown
s(RRRR#Rt(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRqs	tTestLaunchpadLoginWithcBseZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZRS(s!Tests for Launchpad.login_with().cCs&tt|jtj|_dS(N(tsuperRuR#R`tmkdtempttemp_dir(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#scCs'tt|jtj|jdS(N(RvRuRttshutiltrmtreeRx(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRtscCstjj|jd}tjddtd||jtjj|tjj|d}|jtjj||jtjjtjj|dtjj|d}|j	tjj|dS(NRrs
not importantRHtlaunchpadlib_dirsapi.example.comtcacheRg(
RhtpathtjoinRxRRbRUR+tisdirtassertFalse(RR{tservice_pathtcredentials_path((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_dirs_createds"cCstjj|jd}tj|tj|d|jtjj|tj|}tj	|j
}|j|tjtj
BtjBtjddtd|tj|}tj	|j
}|j|tjtj
BtjBdS(NRris
not importantRHR{(RhR}R~RxtmkdirtchmodR+RtstattS_IMODEtst_modetassertNotEqualtS_IWRITEtS_IREADtS_IEXECRRbRUR(RR{tstatinfotmode((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'test_dirs_created_are_changed_to_secure0s
!cCstjj|jd}tjddtd||jtjj|tj	|}t	j
|j}|j|t	j
t	jBt	jBdS(NRrs
not importantRHR{(RhR}R~RxRRbRUR+RRRRRRRR(RR{RR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_dirs_created_are_secureAscCstjj|jd}tjddtd|dd}|j|jddtjddtd|dd}|j|jdddS(NRrs
not importantRHR{RItfootbar(	RhR}R~RxRRbRURdtpassed_in_args(RR{Rl((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_version_is_propagatedLscCstjj|jd}tjddtd|}|j|jj	j
dtjddtd|}|j|jj	j
ddS(NRrsvery importantRHR{(RhR}R~RxRRbRURdRgReRW(RR{Rl((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt#test_application_name_is_propagated_s		cCsIttd}tjd||j|jd|j|jddS(Nsapplication nametauthorization_enginei(RRURRbRdtrequest_tokens_obtainedtaccess_tokens_obtained(Rtengine((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt'test_authorization_engine_is_propagatedvs
cCs|jttjdS(N(RARBRRb(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt)test_login_with_must_identify_applicationscCstjdddS(NRWR(RRb(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRXscCstjdddS(NRYR(RRb(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRZscCs/ttd}|jttjdd|dS(s;Catch an attempt to specify inconsistent application_names.sapplication name1sapplication name2RN(RRURARBRRb(RR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt+test_inconsistent_application_name_rejecteds
cCs5ttddd}|jttjdd|dS(s;Catch an attempt to specify inconsistent application_names.RYtconsumer_name1tconsumer_name2RN(RRURKRARBRRb(RR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt(test_inconsistent_consumer_name_rejecteds
c
CsJttddddg}|jttjdddddgd|dS(s=Catch an attempt to specify inconsistent allow_access_levels.RYRetallow_access_levelstFOOtBARRN(RRURARBRRbRK(RR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt.test_inconsistent_allow_access_levels_rejecteds	cCsGd}td|}d}|jttjdd|d|dS(NcSsdS(N((((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt	callback1stcredential_save_failedcSsdS(N((((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt	callback2ssapp nameRn(R
RARBRRb(RRRoR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt(test_inconsistent_credential_save_faileds		cCsjtjddddg}|j|jjjd|j|jjjd|j|jj	dgdS(NRYReRR(
RRbRdRgReRfRWRKRR(RRl((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_non_desktop_integrations	cCs5tjdddg}|j|jjdgdS(Nsapplication nameRRtDESKTOP_INTEGRATION(RRbRdRR(RRl((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt<test_desktop_integration_doesnt_happen_without_consumer_namescCst}t}tjdd|jdtd|d|}|j|jjjt	j
|j|jjjd|j
|jjdgtdtdtjj|jddd|d|d	tj}|j|j|dS(
Nsapp nameR{RHttimeoutt
proxy_infoRR|sapi.example.comRI(tobjectRRbRxRURRgtaccess_tokenRfRtACCESS_TOKEN_KEYReRWRdRRtdictRhR}R~ROR(RRRRltexpected_arguments((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt*test_no_credentials_creates_new_credentials$		

cCstjdd|jdt}|j|jjjd|j|jjjdt	j
j|jddd}|jt	j
j
|dS(s)Test the anonymous login helper function.sanonymous accessR{RHtsapi.example.comRgN(Rtlogin_anonymouslyRxRURRgRRftsecretRhR}R~Rtexists(RRlR((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_anonymous_logins			cCs0tjtjj|jddtjj|jddd}tddddtdd}|j|t}t}d	}t	j
dd
|jdtd|d
|d|}tdtd|d
|d|dtjj|jdd}x7|j
D])\}}	|j|}
|j|
|	qWdS(Nsapi.example.comRgsapp nametconsumer_secretsconsumer_secret:42Rs
access_key:84saccess_secret:168RR{RHRRRIR|(RhtmakedirsR}R~RxRRtsave_to_pathRRRbRURRRR(Rtcredentials_file_pathRgRRRIRlRRftexpectedtactual((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt-test_existing_credentials_arguments_passed_ons0	
			
cCstjd}|jtjd<tjddt}|tjd<|jd}tjjtjj	|dd}|j
|tjj	|jd|jtjjtjj	|dddS(NtHOMEsapp nameRHR|s..s
.launchpadlibsapi.example.com(
RhtenvironRxRRbRURR}tabspathR~RR+R(Rtold_homeRlt	cache_dirR{((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_None_launchpadlib_dirs


	cCstjdd}|j|jddtjdtjd}|j|jdtjdd}|jttjdddS(Nsapp nameRRHs"https://api.staging.launchpad.net/shttps://R(sapp nameshttps://(RRbRRRR3RARB(RRl((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_short_service_name#s

cCstjddddS(Ns
not importanttmax_failed_attemptsi(RRb(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt!test_max_failed_attempts_accepted8s(RRRR#RtRRRRRRRRXRZRRRRRRRRRRRR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRus0								
								
		
					tTestDeprecatedLoginMethodscBs eZdZdZdZRS(s2Make sure the deprecated login methods still work.cCsltjdtT}tjdtjddd|jt|d|j|djt	WdQXdS(NR$R%RettokenRii(
R&R'R(R)RtloginRdR*R-R.(RR0((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_login_is_deprecatedBs

cCsftjdtN}tjdtjd|jt|d|j|djt	WdQXdS(NR$R%Reii(
R&R'R(R)Rtget_token_and_loginRdR*R-R.(RR0((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt&test_get_token_and_login_is_deprecatedJs


(RRRRR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR?s	t!TestCredenitialSaveFailedCallbackcBs,eZdZdZdZdZRS(cCs"ttj_tj|_dS(N(R	RrRltsocketR`RwRx(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#WscCs ttj_tj|jdS(N(RRrRlRyRzRx(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRt^scsgfd}tjj|jd}d}tt:tjdd|d|d||jt	dWdQXdS(	NcsjddS(N(tappendRK((tcallback_called(sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pytcallbackgsRrshttp://api.example.com/s
not importantRHR{Ri(
RhR}R~RxRRRRbRdR*(RRR{RH((RsE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_credentials_save_failedbscCsZtjj|jd}d}tt'|jttj	dd|d|WdQXdS(NRrshttp://api.example.com/s
not importantRHR{(
RhR}R~RxRRRAtRuntimeErrorRRb(RR{RH((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt:test_default_credentials_save_failed_is_to_raise_exceptionus(RRR#RtRR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRSs			tTestMultipleSitescBs,eZdZdZdZdZRS(cCs"ttj_tj|_dS(N(R	RrRlRR`RwRx(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyR#scCs ttj_tj|jdS(N(RRrRlRyRzRx(R((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRtsc
Cstjj|jd}t}d}d}t|/tj|d|d|}|jj	j
}WdQX|jjdd}|j
||k|j
||k|j||d|dS(	NRrshttp://api.example.com/sSuper App 3000RHR{iit@(RhR}R~RxR
RRRbRgReRftdataR4tassert_Rd(RR{RsRHRWRlRYtapplication_key((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt"test_components_of_application_keys	
	c
Cstjj|jd}t}|js7tdt|7tj	dddd|tj	dddd|WdQXt
|jjdkst|jjd	d
}|jjd
d
}|j||dS(NRrs$oops, a fresh keyring has data in itsapplication nameRHshttp://alpha.example.com/R{shttp://beta.example.com/iii(
RhR}R~RxR
RRNRRRbR*R4R(RR{Rstapplication_key_1tapplication_key_2((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyttest_same_app_different_serverss	

!(RRR#RtRR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyRs			cCstjjtS(N(tunittestt
TestLoadertloadTestsFromNameR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt
test_suites(+Rttypet
__metaclass__t
contextlibRRhRyRRR`RR&tlazr.restfulclient.resourceRtlaunchpadlib.credentialsRRRrRtlaunchpadlib.launchpadRtlaunchpadlib.testing.helpersRRRR	R
RRR
RUtTestCaseRRRGRTR^RqRuRRRR(((sE/usr/lib/python2.7/dist-packages/launchpadlib/tests/test_launchpad.pyt<module>s:4	
^-1/@