/usr/lib/python2.6/site-packages/keystoneclient/tests/unit
NameSizeModeActions
apiclient/-0755rm
auth/-0755rm
generic/-0755rm
v2_0/-0755rm
v3/-0755rm
client_fixtures.py263360644editdlrm
client_fixtures.pyc161520644editdlrm
test_auth_token_middleware.py799550644editdlrm
test_auth_token_middleware.pyc863840644editdlrm
test_base.py65000644editdlrm
test_base.pyc75220644editdlrm
test_cms.py66850644editdlrm
test_cms.pyc82650644editdlrm
test_discovery.py301950644editdlrm
test_discovery.pyc310730644editdlrm
test_ec2utils.py118980644editdlrm
test_ec2utils.pyc99850644editdlrm
test_fixtures.py98850644editdlrm
test_fixtures.pyc85620644editdlrm
test_hacking_checks.py18700644editdlrm
test_hacking_checks.pyc23530644editdlrm
test_http.py82990644editdlrm
test_http.pyc91130644editdlrm
test_https.py41860644editdlrm
test_https.pyc40440644editdlrm
test_keyring.py81500644editdlrm
test_keyring.pyc71860644editdlrm
test_memcache_crypt.py43420644editdlrm
test_memcache_crypt.pyc45930644editdlrm
test_s3_token_middleware.py112030644editdlrm
test_s3_token_middleware.pyc129890644editdlrm
test_session.py377180644editdlrm
test_session.pyc435120644editdlrm
test_shell.py242970644editdlrm
test_shell.pyc213180644editdlrm
test_utils.py84310644editdlrm
test_utils.pyc124350644editdlrm
utils.py68400644editdlrm
utils.pyc89170644editdlrm
__init__.py00644editdlrm
__init__.pyc1680644editdlrm
Edit: /usr/lib/python2.6/site-packages/keystoneclient/tests/unit/test_auth_token_middleware.pyc (86384B)
fd4YZ?d5e?ei@fd6YZAd7e?ei@fd8YZBd9e?fd:YZCd;e?fd<YZDd=e?ei@fd>YZEd?e;fd@YZFdAe?ei@fdBYZGdCeGfdDYZHdEZIdFe?eFei@fdGYZJdHe?ei@fdIYZKdJe?eFei@fdKYZLdLei>fdMYZMdNe?fdOYZNdPe?fdQYZOdRZPdS(SiN(t jsonutils(t timeutils(tfixture(tparse(tmatchers(taccess(tcms(t exceptions(t auth_token(t memorycache(tclient_fixtures(tutilst ConfirmedtHTTP_X_IDENTITY_STATUSt tenant_id1tHTTP_X_TENANT_IDt tenant_name1tHTTP_X_TENANT_NAMEtuser_id1tHTTP_X_USER_IDt user_name1tHTTP_X_USER_NAMEs role1,role2t HTTP_X_ROLESt HTTP_X_USERt HTTP_X_TENANTt HTTP_X_ROLEs!https://keystone.example.com:1234s %s/testadmint admin_token2tids2022-10-03T16:58:01ZtexpiresttokenRthreftv3t 7ae290c2a06244c4b41692eb4e9225f2slocalhost:11211c Cs{tdjojyJddk}|it}|idddd|iddjaWqwtj o taqwXntS(s7Do a sanity check against memcached. Returns ``True`` if the following conditions are met (otherwise, returns ``False``): - ``python-memcached`` is installed - a usable ``memcached`` instance is available via ``MEMCACHED_SERVERS`` - the client is able to set and get a key/value pair iNtpingtpongttimei( tMEMCACHED_AVAILABLEtNonetmemcachetClienttMEMCACHED_SERVERStsettgett ImportErrortFalse(R&tc((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytmemcached_availableOs  cCs+yti|Wntj onXdS(N(tostremovetOSError(tfilename((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytcleanup_revoked_filehstTimezoneFixturecBs2eZedZdZdZdZRS(cCs ttdS(Nttzset(thasattrR#(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt supportedpscCs5tt|i||_tiid|_dS(NtTZ(tsuperR4t__init__ttzR/tenvironR*told_tz(tselftnew_tz((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:us cCs^tt|i|iptdn|itid((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@zs   cCsP|idj o|itid((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRCs (t__name__t __module__t staticmethodR7R:R@RC(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR4os  t TimeFixturecBseZedZdZRS(cCs`tt|it|tioti|}n|oti|}n||_ dS(N( R9RGR:t isinstancetsixt string_typesRt parse_isotimetnormalize_timetnew_time(R>RMt normalize((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:s cCs7tt|iti|i|itidS(N(R9RGR@Rtset_time_overrideRMRBtclear_time_override(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@s(RDREtTrueR:R@(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRGs tFakeAppcBs)eZdZdZddZdZRS(sBThis represents a WSGI app protected by the auth_token middleware.tSUCCESScCs.tt|_|o|ii|ndS(N(tdictt EXPECTED_V2_DEFAULT_ENV_RESPONSEt expected_envtupdate(R>RV((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:scCsnxF|iiD]5\}}|||jptd|||fqWti}ti|_|||S(Ns%s != %s(RVtitemstAssertionErrortwebobtResponseRRRStbody(R>tenvtstart_responsetktvtresp((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt__call__s  -  N(RDREt__doc__RSR%R:Rb(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRRs t v3FakeAppcBseZdZddZRS(sEThis represents a v3 WSGI app protected by the auth_token middleware.cCsbhdd6dd6dd6dd6dd 6dd 6}|o|i|ntt|i|dS( NRtHTTP_X_PROJECT_IDRtHTTP_X_PROJECT_NAMEt domain_id1tHTTP_X_PROJECT_DOMAIN_IDt domain_name1tHTTP_X_PROJECT_DOMAIN_NAMEtHTTP_X_USER_DOMAIN_IDtHTTP_X_USER_DOMAIN_NAME(RWR9RdR:(R>RVtv3_default_env_additions((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:s N(RDRERcR%R:(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRdstBaseAuthTokenMiddlewareTestcBsAeZdZddddZdddZdZdZRS(sBase test class for auth_token middleware. All the tests allow for running with auth_token configured for receiving v2 or v3 tokens, with the choice being made by passing configuration data into setUp(). The base class will, by default, run all the tests expecting v2 token formats. Child classes can override this to specify, for instance, v3 format. cCstt|i|iti|pt|_|pt|_ d|_ hdd6ti d6|d6dd6|_ ||_d|_d|_|iti|_dS(Ns,https://keystone.example.com:1234/testadmin/t identity_urit signing_dirt auth_versions!https://keystone.example.com:1234tauth_uri(R9RnR@t useFixtureR t DeprecationsRTRVRRtfake_appR%t middlewaretCERTDIRtconfRqtresponse_statustresponse_headerst mock_fixturetFixturet requests_mock(R>RVRqRu((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@s      cCs|o|ii|n|o|ii|nti|i|i|i|_t|i_t i d|ii dt i i}z |~}WdQX|i|i_|it|iitihgd6dd6|i_dS(sConfigure the class ready to call the auth_token middleware. Set up the various fake items needed to run the middleware. Individual tests that need to further refine these can call this function to override the class defaults. tdirtdeleteNtrevokedtsuccesstextra(RxRWRVRt AuthProtocolRuRvtiso8601t_iso8601ttempfiletNamedTemporaryFiletsigning_dirnameR,t__exit__t __enter__tnametrevoked_file_nameRBR3Rtdumpsttoken_revocation_list(R>RVRxt_[1]tf((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytset_middlewares    cCs2t|iddd|_t||_dS(Nt ii(tinttsplitRyRTRz(R>tstatustheaders((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytstart_fake_responsescCsM|o/ti|iii}|i||in|i|iidS(N(turlparseR}t last_requestturlt assertEqualtpatht assertIsNone(R>Rtparts((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytassertLastPathsN(RDRERcR%R@RRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRns   t MultiStepAuthTokenMiddlewareTestcBs#eZdeifgZdZRS(texamplescCs|i|iidtdt|ii}|iidtdhdd6h|d6gti |i i }|i ||ii |i t|iiddS(Ns%s/v2.0/tokensttexts%s/v2.0/tokens/revokedt response_listit status_codei(RR}tposttBASE_URItFAKE_ADMIN_TOKENRtSIGNED_REVOCATION_LISTR*RtloadsRvtfetch_revocation_listRtREVOCATION_LISTtlentrequest_history(R>Rt fetched_list((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt&test_fetch_revocation_list_with_expires   (RDRER tEXAMPLES_RESOURCEt resourcesR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRstDiabloAuthTokenMiddlewareTestcBs,eZdeifgZdZdZRS(RcCshdd6dd6dd6}tt|id||iidtdtdd |iid tdt|i i |_ |i i |i }d t|i f}|ii|d||i dS( NRRRRRVs%s/RRi,s%s/v2.0/tokenss%s/v2.0/tokens/%s(R9RR@R}R*RtVERSION_LIST_v2RRRtVALID_DIABLO_TOKENttoken_idtJSON_TOKEN_RESPONSESR(R>RVttoken_responseR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@.s  cCsbtiid}|i|id<|i|i|i|i|i d|i d|idS(Nt/s X-Auth-Tokeniskeystone.token_info( RZtRequesttblankRRRvR<RRRytassertIn(R>treq((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_valid_diablo_responseIs (RDRER RRR@R(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR(s tNoMemcacheAuthTokencBs eZdZdZdZRS(s8These tests will not have the memcache module available.cCs-tt|i|itiddS(NR&(R9RR@RsR tDisableModuleFixture(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@TscCs@hdd6dd6dd6td6dd 6}tit|dS( Nt admin_token1t admin_tokenskeystone.example.comt auth_hostit auth_porttmemcached_serverss!https://keystone.example.com:1234Rr(R(RRRR(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_nomemcacheXs (RDRERcR@R(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRQs t CachePoolTestcBs,eZdZdZdZdZRS(cCshdd6}hdd6}|id||iii||iiiiii}z|~}|i|dWdQXdS(sxIf `swift.cache` is set in the environment and `cache` is set in the config then the env cache is used. t CACHE_TESTs swift.cachetcacheRxN( RRvt _token_cachet initializet _cache_pooltreserveRRR(R>R]RxRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_use_cache_from_enves  ,cCsp|ihdd6}|iii||iiiiii}z|~}|i|dWdQXdS(s~If `swift.cache` is set in the environment but `cache` isn't set in the config then the env cache isn't used. Rs swift.cacheN( RRvRRRRRRtassertNotEqual(R>R]RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_not_use_cache_from_envrs   ,c Cs|i|ii}h}|i|g}|iiii}z|~}|i|WdQX|iiii}z|~}|i|WdQX|i |d|d|i t |t |idS(Nii( RRvRRRRRRtappendtassertIsRR)(R>t token_cacheR]tcachesRRt_[2]((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt2test_multiple_context_managers_share_single_client|s   &&c Cs|ih}|iii||ii}|iiii}zI|~}|iiii}z|~}|i||WdQXWdQX|i t ||gt |idS(N( RRvRRRRRRRRR)(R>R]RRt outer_cacheRt inner_cache((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt4test_nested_context_managers_create_multiple_clientss  &&(RDRERRRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRds tGeneralAuthTokenMiddlewareTestcBseZdZdeifgZdZdZdZdZ dZ e i e ddZe i e dd Ze i e dd Zd Zd Zd ZdZRS(s^These tests are not affected by the token format (see CommonAuthTokenMiddlewareTest). RcCsntiitidd}|iti|tiitidd}|iti|dS(Ntsecondsi i((tdatetimetutcnowt timedeltat assertTrueRtwill_expire_soont assertFalse(R>t tensecondst fortyseconds((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_will_expire_soons   cCs6|ii}|ii|}|iti|dS(N(RtUUID_TOKEN_DEFAULTtTOKEN_RESPONSESRRt _token_is_v2(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_token_is_v2_accepts_v2s cCs6|ii}|ii|}|iti|dS(N(Rtv3_UUID_TOKEN_DEFAULTRRRR(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_token_is_v2_rejects_v3s cCs6|ii}|ii|}|iti|dS(N(RRRRRt _token_is_v3(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_token_is_v3_rejects_v2s cCs6|ii}|ii|}|iti|dS(N(RRRRRR(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_token_is_v3_accepts_v3s smemcached not availablecCshtd6dd6dd6}|id|d}titidd }ti|}d |f}|ii }|i h|i |||i |i ||d dS( NRtencrypttmemcache_security_strategytmysecrettmemcache_secret_keyRxtmy_tokenthoursit this_datai(R(RRRRRt client_utilststrtimeRvRRt _cache_storeRt _cache_get(R>RxRtsome_time_laterRtdataR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_encrypt_cache_datas    cCshtd6dd6dd6}|id|d}titidd }ti|}d |f}|ii }|i h|i |||i |i ||d dS( NRtmacRRRRxRRiRi(R(RRRRRRRRvRRRRR(R>RxRRRRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_sign_cache_datas    cCshtd6dd6}|id|d}titidd}ti|}d|f}|ii }|i h|i |||i |i ||d dS( NRRRRxRRiRi(R(RRRRRRRRvRRRRR(R>RxRRRRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_no_memcache_protections    cCshtd6dd6}|iti|id|htd6dd6}|iti|id|htd6dd6}|iti|id|htd6dd6dd6}|iti|id|htd6d d6dd6}|iti|id|dS( NRtEncryptRRxtwhateverRtRtmAc(R(t assertRaisesRtConfigurationErrorR(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt,test_assert_valid_memcache_protection_configs6     cCsLhdd6dd6}ti|i|}|i|itidddS(Nitrevocation_cache_times!https://keystone.example.com:1234RrR(RRRuRt#token_revocation_list_cache_timeoutRR(R>RxRv((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt$test_config_revocation_cache_timeouts   cCshdd6dd6dd6dd6}ti|i|}|itidd |i|it|i|id|i |id|i ddS( Nt24Rs!https://keystone.example.com:1234Rot0tinclude_service_catalogtnonexsit_optionRi( RRRuRRRRR,R RoRx(R>RxRv((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_conf_values_type_convert s    cCs0hdd6}|ititi|i|dS(Nt123R (RRRRRu(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_conf_values_type_convert_with_wrong_value0s  (RDRERcR RRRRRRRt testtoolst skipUnlessR.RRRRRR R(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRs      % tCommonAuthTokenMiddlewareTestcBseZdZdZdZedZdZdZdQdZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdQdQdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#e$i%e&i'd d!Z(d"Z)d#Z*d$Z+d%Z,d&Z-d'Z.d(Z/d)Z0d*Z1d+Z2d,Z3d-Z4d.Z5d/d0Z6d1Z7d2Z8d3Z9dQd/d4Z:d5Z;d6Z<d7Z=hhd8Z>d9Z?d:Z@d;ZAd<ZBeed=ZCd>ZDd?ZEd@ZFdAZGdBZHdCZIdDZJdEZKdFZLdGZMdHZNdIZOdJZPdKZQdLZRdMZSdNZTdOZUdPZVRS(RsCThese tests are run once using v2 tokens and again using v3 tokens.cCs.hdd6}|id||iddS(NiRRx(RRR%(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_init_does_not_call_http;s cCs\|id=hdd6dd6dd6dd6}|id |d }|i||iidS( NRos2001:2013:1:f101::1RiRthttpt auth_protocolRrRxs!http://[2001:2013:1:f101::1]:1234(RxR%RRRvRr(R>Rxtexpected_auth_uri((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_init_by_ipv6Addr_auth_hostBs  cCstiid}||id<|i|i|i}|i|id|o|i |ii dn|i d|i|i|t i g|id|i|S(NRs X-Auth-TokenisX-Service-Catalogskeystone.token_info(RZRRRRvR<RRRyRR*t assertNotInRRRSR(R>Rt with_catalogRR\((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytassert_valid_request_200Ns cCsBx;tdD]-}|id}|i||i|q WdS(Nituuid_token_default(tranget token_dictRtassert_valid_last_url(R>t_R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_valid_uuid_request[s    cCst|id=d|id((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt+test_valid_uuid_request_with_auth_fragmentsas      cCst|i_tiid}||id<|i|i|i|i d|i |i d|p|g|i_ |i|i|i|i d|i dS(NRs X-Auth-Tokenit token_idsi( RQRvtcheck_revocations_for_cachedRZRRRR<RRRytget_revocation_list_jsonR(R>Rt revoked_formR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt_test_cache_revokedks   cCs|i|iddS(NR(R'R(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_cached_revoked_uuid|scCs<x5tdD]'}|i|id|idq WdS(Nitsigned_token_scoped(RRRRR%(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_valid_signed_requests  cCs%|i|id|iddS(Ntsigned_token_scoped_pkiz(RRRR%(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt$test_valid_signed_compressed_requestscCse|i|i_tiid}|id|id<|i|i|i |i |i ddS(NRt revoked_tokens X-Auth-Tokeni( R%RvRRZRRRRR<RRRy(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_revoked_token_receives_401s cCsddg|id<|i|idd|i_tiid}|id|i d<|i|i |i |i |i ddS( Ntsha256tmd5thash_algorithmstmodeRR-s X-Auth-Tokeni(RxRR%RvRRZRRRRR<RRRy(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt&test_revoked_token_receives_401_sha256s cCs0|id}ti|}|i||dS(NR)(RRtcms_hash_tokenR'(R>RR&((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_cached_revoked_pkis cCs0|id}ti|}|i||dS(NR+(RRR4R'(R>RR&((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_cached_revoked_pkizs cCsddg|id<|i|i|i_tiid}|id|i d<|i|i |i |i |i ddS(NR/R0R1RR-s X-Auth-Tokeni(RxRR%RvRRZRRRRR<RRRy(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt-test_revoked_token_receives_401_md5_secondarys cCsddg|idt token_keyRt token_hashedR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt_test_revoked_hashed_tokens      cCs|iddS(NR)(R:(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_revoked_hashed_pki_tokenscCs|iddS(NR+(R:(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_revoked_hashed_pkiz_tokenscCs|djo0d|o d|nd}|i|g}nhg}|D]!}|h|d6tid6qK~d6}ti|S(Ntrevoked_token_hashRRRRR(R%RRRRR(R>R#R2tkeyRtxtrevocation_list((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR%s   2cCsPtihgd6dd6|i_|ii|idg}|i|dS(NRRRR=(RRRvRtis_signed_token_revokedRR(R>tresult((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*test_is_signed_token_revoked_returns_falses  cCs?|i|i_|ii|idg}|i|dS(NR=(R%RvRRARR(R>RB((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt)test_is_signed_token_revoked_returns_trues cCsbddg|id<|i|idd|i_|ii|idg}|i|dS(NR/R0R1R2trevoked_token_hash_sha256(RxRR%RvRRARR(R>RB((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt0test_is_signed_token_revoked_returns_true_sha256s   cCsF|i|i_|iti|ii|id|idgdS(NR-R=(R%RvRRRtInvalidUserTokentverify_signed_tokenR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt;test_verify_signed_token_raises_exception_for_revoked_tokens    cCssddg|id<|i|idd|i_|iti|ii|i d|i d|i dgdS(NR/R0R1R2R-RER=( RxRR%RvRRRRGRHR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt@test_verify_signed_token_raises_exception_for_revoked_token_s256s     cCsF|ii|i_|iti|ii|id|idgdS(Ntrevoked_token_pkiztrevoked_token_pkiz_hash( RtREVOKED_TOKEN_PKIZ_LIST_JSONRvRRRRGtverify_pkiz_tokenR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt@test_verify_signed_token_raises_exception_for_revoked_pkiz_token s    cCsti|dS(N(tjsonR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytassertIsValidJSONscCsI|i|i_|ii|id|idg}|i|dS(NR)tsigned_token_scoped_hash(R%RvRRHRRQ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt5test_verify_signed_token_succeeds_for_unrevoked_tokens   cCsI|i|i_|ii|id|idg}|i|dS(NR+RR(R%RvRRNRRQ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt@test_verify_signed_compressed_token_succeeds_for_unrevoked_tokens   cCsvddg|id<|i|idd|i_|ii|id|id|idg}|i|dS(NR/R0R1R2R)tsigned_token_scoped_hash_sha256RR(RxRR%RvRRHRRQ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt<test_verify_signed_token_succeeds_for_unrevoked_token_sha256&s    cCstii}d|}d|fd|i_d|ii|i_|ii|iti i |ii|iti |iiti |i ti|iiiti|i titi|iiititi|dS(Ns/tmp/%ss /tmp/%s/%sis %s/test.pem(tuuidtuuid4thexRvRtsigning_cert_file_nametverify_signing_dirRR/RtisdirRtW_OKRtstattst_uidtgetuidtS_IMODEtst_modetS_IRWXUtshutiltrmtree(R>ttmp_namettest_parent_signing_dir((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt,test_verify_signing_dir_create_while_missing1s  "  cCs8d|i_d|i_|i|iitiidS(NR(R%Rvt"token_revocation_list_fetched_timeRRRtmin(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt7test_get_token_revocation_list_fetched_time_returns_minBs  cCsPd|i_tii|ii}tii|}|i ||iidS(N( R%RvRiR/RtgetmtimeRRtutcfromtimestampR(R>tmtimet fetched_time((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt9test_get_token_revocation_list_fetched_time_returns_mtimeHs   sTimezoneFixture not supportedcCsntdiizPti|ii|i_d|i_ |ii }|i t i |dWdQXdS(NsUTC-1i(R4RRRRRRRvRR%RiRRtis_soon(R>Ro((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt7test_get_token_revocation_list_fetched_time_returns_utcOs   cCs&|ii}|i|ii|dS(N(Rvt#_token_revocation_list_fetched_timeRRi(R>texpected((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt9test_get_token_revocation_list_fetched_time_returns_valueYs cCs?d|i_ti|ii|i|ii|ii dS(N( R%RvRiR/R0RRRRR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt-test_get_revocation_list_returns_fetched_list^s cCs |i|ii|iidS(N(RRvRt_token_revocation_list(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt9test_get_revocation_list_returns_current_list_from_memoryfscCs2|ii}d|i_|i|ii|dS(N(RvRR%RwR(R>tin_memory_list((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt7test_get_revocation_list_returns_current_list_from_diskjs  cCs7|iidtdd|iti|iidS(Ns%s/v2.0/tokens/revokedRs{}(R}R*RRRt ServiceErrorRvR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt1test_invalid_revocation_list_raises_service_erroros cCs2ti|ii}|i||iidS(N(RRRvRRRR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_fetch_revocation_listuscCsdt}|ii|ddddtiid}d|id<|i|i|i |i |i d |i |i d d dS( Ns%s/v2.0/tokens/invalid-tokenRRRiRs invalid-tokens X-Auth-TokenisWWW-Authenticates0Keystone uri='https://keystone.example.com:1234'( RR}R*RZRRRRvR<RRRyRz(R>t invalid_uriR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_request_invalid_uuid_token{s  cCsitiid}|ii|id<|i|i|i|i d|i |i d|i ddS(NRs X-Auth-Tokenis0Keystone uri='https://keystone.example.com:1234'sWWW-Authenticate( RZRRRtINVALID_SIGNED_TOKENRRvR<RRRyRz(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt!test_request_invalid_signed_tokens  cCsitiid}|ii|id<|i|i|i|i d|i |i d|i ddS(NRs X-Auth-Tokenis0Keystone uri='https://keystone.example.com:1234'sWWW-Authenticate( RZRRRtINVALID_SIGNED_PKIZ_TOKENRRvR<RRRyRz(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt&test_request_invalid_signed_pkiz_tokens  cCsVtiid}|i|i|i|i|id|i|idddS(NRisWWW-Authenticates0Keystone uri='https://keystone.example.com:1234'( RZRRRvR<RRRyRz(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_request_no_tokens cCs}dtfdY}||i_t|i_|iti|iih|i |iii |i |iii dS(NtFakeLogcBs)eZdZddZddZRS(cSsd|_d|_dS(N(R%tmsgtdebugmsg(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:s c_s ||_dS(N(R(R>Rtargstkwargs((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytwarningsc_s ||_dS(N(R(R>RRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytdebugsN(RDRER:R%RR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRs  ( tobjectRvtLOGR,tdelay_auth_decisionRRRGt_get_user_token_from_headertassertIsNotNoneRR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt!test_request_no_token_log_messages   cCstiiddhdd6}|i|i|i|i}|i|id|i|i dd|i|dgdS( NRR<tHEADtREQUEST_METHODisWWW-Authenticates0Keystone uri='https://keystone.example.com:1234'R( RZRRRRvR<RRRyRz(R>RR\((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_request_no_token_https cCsctiid}d|id<|i|i|i|i|id|i|i dddS(NRRs X-Auth-TokenisWWW-Authenticates0Keystone uri='https://keystone.example.com:1234'( RZRRRRvR<RRRyRz(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_request_blank_tokens  R0cCs(ti|d|}|iii|S(NR2(RR4RvRR(R>RR2R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt_get_cached_tokenscCs\tiid}|id}||id<|i|i|i|i|i |dS(NRR)s X-Auth-Token( RZRRRRRvR<RRR(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_memcaches   cCsYtiid}|id}||id<|i|i|i|i|i ddS(NRtsigned_token_scoped_expireds X-Auth-Tokeni( RZRRRRRvR<RRRy(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_expireds   cCsxdt}|ii|ddtiid}d}||id<|i|i|i |i t i |i |dS(Ns%s/v2.0/tokens/invalid-tokenRiRs invalid-tokens X-Auth-Token(RR}R*RZRRRRvR<RRRRGR(R>R~RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_memcache_set_invalid_uuids   cCstiid}|id}||id<|o||id<|in|i|i|i |i t i |i |d|dS(NRRs X-Auth-TokenR1R2(RZRRRRRxRRvR<RRRRGR(R>R1texp_modeRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt!_test_memcache_set_invalid_signeds    cCs|idS(N(R(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_memcache_set_invalid_signedscCs&ddg}|id|dddS(NR/R0R1R(R(R>R1((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt+test_memcache_set_invalid_signed_sha256_md5s cCs#dg}|id|dddS(NR/R1R(R(R>R1((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt'test_memcache_set_invalid_signed_sha256s cCsd}h|d6tid6}|i||id|tiid}|id}||id<|i i|t i i }|i t ||i|i |i|i|i|ti||i|i|dS(Ni ttoken_cache_timeRpRxRR)s X-Auth-Token(R RwRWRRZRRRRR<RRRsRGRvRRRRtadvance_time_secondsR(R>t extra_conft extra_environRRxRRtnow((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_memcache_set_expireds      cCs4hdd6}htid6}|i||dS(Ns swift.cacheR(R R'R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_swift_memcache_set_expireds cCshtiid}t|idR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_http_error_not_cached_tokens   cCsd}tiid}t|idt times_retryRRxRtmock_obj((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_http_request_max_retries!s  &cCs;htd6}|id||i|iddtdS(NR RxRR(R,RRR(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_nocatalog/s  cCs)h|d6|id6}|id|tiid}||id<|oB|tjo|ii|i dRt bind_levelt use_kerberosRRxRR\((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytassert_kerberos_bind7s(    c CsAx:ttgD],}|i|idddd|dtq WdS(Ntuuid_token_bindRtdisabledRR(RQR,RR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt,test_uuid_bind_token_disabled_with_kerb_userWs  cCs*|i|iddddddtdS(NRRtkerberosRsronald@MCDONALDS.COMR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt3test_uuid_bind_token_disabled_with_incorrect_ticket^scCs*|i|iddddtdtdS(NRRt permissiveRR(RRRQ(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_uuid_bind_token_permissive_with_kerb_userdscCs*|i|iddddtdtdS(NRRRRR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt1test_uuid_bind_token_permissive_without_kerb_userjsc CsG|id}x3ttgD]%}|i|ddd|dtqWdS(Ntuuid_token_unknown_bindRRRR(RRQR,R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt1test_uuid_bind_token_permissive_with_unknown_bindps   cCs*|i|iddddddtdS(NRRRRsronald@MCDONALDS.COMR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt5test_uuid_bind_token_permissive_with_incorrect_ticketyscCs*|i|iddddtdtdS(NRRtstrictRR(RRRQ(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*test_uuid_bind_token_strict_with_kerb_userscCs*|i|iddddtdtdS(NRRRRR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt-test_uuid_bind_token_strict_with_kerbout_usersc CsG|id}x3ttgD]%}|i|ddd|dtqWdS(NRRRRR(RRQR,R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt-test_uuid_bind_token_strict_with_unknown_binds   cCs*|i|iddddtdtdS(NRRtrequiredRR(RRRQ(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt,test_uuid_bind_token_required_with_kerb_userscCs*|i|iddddtdtdS(NRRRRR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt/test_uuid_bind_token_required_without_kerb_usersc CsG|id}x3ttgD]%}|i|ddd|dtqWdS(NRRRRR(RRQR,R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt/test_uuid_bind_token_required_with_unknown_binds   c CsAx:ttgD],}|i|idddd|dtq WdS(NRRRRR(RQR,RR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*test_uuid_bind_token_required_without_binds  cCs*|i|iddddtdtdS(NRRRRR(RRRQ(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt2test_uuid_bind_token_named_kerberos_with_kerb_userscCs*|i|iddddtdtdS(NRRRRR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt5test_uuid_bind_token_named_kerberos_without_kerb_usersc CsG|id}x3ttgD]%}|i|ddd|dtqWdS(NRRRRR(RRQR,R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt5test_uuid_bind_token_named_kerberos_with_unknown_binds   c CsAx:ttgD],}|i|idddd|dtq WdS(NRRRRR(RQR,RR(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt0test_uuid_bind_token_named_kerberos_without_binds  cCs*|i|iddddddtdS(NRRRRsronald@MCDONALDS.COMR(RRR,(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt9test_uuid_bind_token_named_kerberos_with_incorrect_ticketsc CsG|id}x3ttgD]%}|i|ddd|dtqWdS(NRRtFOORR(RRQR,R(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt+test_uuid_bind_token_with_unknown_named_FOOs   N(WRDRERcRRRQRRR"R%R'R(R*R,R.R3R5R6R7R:R;R<R%RCRDRFRIRJRORQRSRTRVRhRkRpRRR4R7RrRuRvRxRzR|R}RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR8s                                                        tV2CertDownloadMiddlewareTestcBsYeZdeifgZdZdZdZdZdZ dZ dZ RS(RcOsAtt|i||d|_d|_d|_d|_dS(Nsv2.0s/v2.0/certificates/cas/v2.0/certificates/signing(R9RR:RqR%Rutca_patht signing_path(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:s    cCstt|id|id|iti|_|it i |it i i |id|_t i|itih|id6|id6}|id|dS(NRqRutcertsRpRx(R9RR@RqRuRtmkdtemptbase_dirRBRdReR/Rtjointcert_dirtmakedirsR^RcR(R>Rx((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@s    cCsti|iidt|ifdddt|if}|ii|dd|iti |i i |i i |i igdS(Ns%s%sRi(Rt_ensure_subprocessR}R*RRRRRtCertificateConfigErrorRvRHRtSIGNED_TOKEN_SCOPEDtSIGNED_TOKEN_SCOPED_HASH(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_request_no_token_dummys    cCsd}dt|if}|ii|d||iit|iidii }z#|~}|i |i |WdQX|i d|idS(Ns FAKE CERTs%s%sRtrs /testadmin%s( RRR}R*Rvtfetch_signing_certtopenRZRRRtreadR(R>RRRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_fetch_signing_certs ,cCsd}|iidt|ifd||iit|iidii }z#|~}|i |i |WdQX|i d|idS(NsFAKE CAs%s%sRRs /testadmin%s( R}R*RRRvt fetch_ca_certRtsigning_ca_file_nameRRRRR(R>RRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_fetch_signing_cas # ,cCs|id=d|idR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_prefix_trailing_slashs       cCs|id=d|id((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_without_prefix0s       ( RDRER RRR:R@RRRRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRs   tV3CertDownloadMiddlewareTestcBseZdZRS(cOsAtt|i||d|_t|_d|_d|_dS(Nsv3.0s/v3/OS-SIMPLE-CERT/cas/v3/OS-SIMPLE-CERT/certificates(R9RR:RqRdRuRR(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR:Is    (RDRER:(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRGscCstiddS(NsNetwork connection error.(Rt NetworkError(tmethodturiR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytnetwork_error_responseQstv2AuthTokenMiddlewareTestcBsqeZdZdeifgZdZdZdZdZ dZ dZ dZ d Z d ZRS( s[v2 token specific tests. There are some differences between how the auth-token middleware handles v2 and v3 tokens over and above the token formats, namely: - A v3 keystone server will auto scope a token to a user's default project if no scope is specified. A v2 server assumes that the auth-token middleware will do that. - A v2 keystone server may issue a token without a catalog, even with a tenant The tests below were originally part of the generic AuthTokenMiddlewareTest class, but now, since they really are v2 specific, they are included here. RcCstt|ih|iid6|iid6|iid6|iid6|iid6|ii d6|ii d6|ii d6|ii d 6|ii d 6|iid 6|iid 6|iid 6|iid6|_|iidtdtdd|iidtdt|iidtd|iix}|ii|ii|ii|ii|ii|ii|iifD]6}|ii|}|iidt|fd|qrW|iidttfdt|i dS(NRtuuid_token_unscopedRRR)R+RRRURR-RKRLR=REs%s/RRi,s%s/v2.0/tokenss%s/v2.0/tokens/revokeds%s/v2.0/tokens/%s(!R9RR@RRtUUID_TOKEN_UNSCOPEDtUUID_TOKEN_BINDtUUID_TOKEN_UNKNOWN_BINDRtSIGNED_TOKEN_SCOPED_PKIZRtSIGNED_TOKEN_SCOPED_HASH_SHA256tSIGNED_TOKEN_SCOPED_EXPIREDt REVOKED_TOKENtREVOKED_TOKEN_PKIZtREVOKED_TOKEN_PKIZ_HASHtREVOKED_TOKEN_HASHtREVOKED_TOKEN_HASH_SHA256RR}R*RRRRRtUUID_TOKEN_NO_SERVICE_CATALOGtSIGNED_TOKEN_SCOPED_KEYtSIGNED_TOKEN_SCOPED_PKIZ_KEYRRRR(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@jsJ                      cCswtiid}||id<|i|i|i}|i|id|i|t i g|i d|idS(s}Unscoped v2 requests with a default tenant should "auto-scope." The implied scope is the user's tenant ID. Rs X-Auth-Tokeniskeystone.token_infoN( RZRRRRvR<RRRyRRRSR(R>RRR\((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*assert_unscoped_default_tenant_auto_scopess  cCs|id|dS(Ns/testadmin/v2.0/tokens/%s(R(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRscCs|i|iidS(N(RRR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_default_tenant_uuid_tokenscCs|i|iidS(N(RRR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_default_tenant_signed_tokenscCsctiid}||id<|i|i|i|i|id|i|i dddS(s?Unscoped requests with no default tenant ID should be rejected.Rs X-Auth-TokenisWWW-Authenticates0Keystone uri='https://keystone.example.com:1234'N( RZRRRRvR<RRRyRz(R>RR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt"assert_unscoped_token_receives_401s  cCs|i|iidS(N(RRR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt%test_unscoped_uuid_token_receives_401scCs|i|iidS(N(RRtSIGNED_TOKEN_UNSCOPED(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt$test_unscoped_pki_token_receives_401scCstiid}d|id<|ii|id<|i|i|i}|i |i d|i |ii d|i |t igdS(NRs[]sX-Service-Catalogs X-Auth-Tokeni(RZRRRRRRvR<RRRyRR*RRRS(R>RR\((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_request_prevent_service_catalog_injections (RDRERcR RRR@RRRRRRR R (((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRUs 2     t#CrossVersionAuthTokenMiddlewareTestcBs#eZdeifgZdZRS(RcCs htid6dd6}|iidtdtdd|iidtdt|ii }d t|f}|ii |}|ii|d||i d |t i id }|ii |id <|i|i|i|i|id |id|ii dS(sxTest forcing auth_token to use lower api version. By installing the v3 http hander, auth_token will be get a version list that looks like a v3 server - from which it would normally chose v3.0 as the auth version. However, here we specify v2.0 in the configuration - which should force auth_token to use that version instead. Rpsv2.0Rqs%s/RRi,s%s/v2.0/tokenss%s/v2.0/tokens/%sRxRs X-Auth-Tokenis/testadmin/v2.0/tokens/%sN(R RwR}R*RtVERSION_LIST_v3RRRRRRRZRRRRvR<RRRyR(R>RxRRt response_bodyR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt%test_valid_uuid_request_forced_to_2_0s&     (RDRER RRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR stv3AuthTokenMiddlewareTestcBsVeZdZdeifgZdZdZdZdZ dZ dZ RS(sTest auth_token middleware with v3 tokens. Re-execute the AuthTokenMiddlewareTest class tests, but with the auth_token middleware configured to expect v3 tokens back from a keystone server. This is done by configuring the AuthTokenMiddlewareTest class via its Setup(), passing in v3 style data that will then be used by the tests themselves. This approach has been used to ensure we really are running the same tests for both v2 and v3 tokens. There a few additional specific test for v3 only: - We allow an unscoped token to be validated (as unscoped), where as for v2 tokens, the auth_token middleware is expected to try and auto-scope it (and fail if there is no default tenant) - Domain scoped tokens Since we don't specify an auth version for auth_token to use, by definition we are thefore implicitely testing that it will use the highest available auth version, i.e. v3.0 RcCs_tt|idddth|iid6|iid6|iid6|iid6|ii d6|ii d 6|ii d 6|ii d 6|ii d 6|iid 6|iid6|iid6|iid6|iid6|_|iitdtdd|iidtdt|iidtd|ii|iidtd|i|idS(NRqsv3.0RuRRRRR)R+RRRURR-RKR=RERLRRi,s%s/v2.0/tokenss%s/v2.0/tokens/revokeds%s/v3/auth/tokens(R9RR@RdRRtv3_UUID_TOKEN_UNSCOPEDtv3_UUID_TOKEN_BINDtv3_UUID_TOKEN_UNKNOWN_BINDtSIGNED_v3_TOKEN_SCOPEDtSIGNED_v3_TOKEN_SCOPED_PKIZtSIGNED_v3_TOKEN_SCOPED_HASHt"SIGNED_v3_TOKEN_SCOPED_HASH_SHA256RtREVOKED_v3_TOKENtREVOKED_v3_TOKEN_PKIZtREVOKED_v3_TOKEN_HASHtREVOKED_v3_TOKEN_HASH_SHA256tREVOKED_v3_PKIZ_TOKEN_HASHRR}R*RR RRRRR(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@s4               cCs|iid}|iid}|i|td}|tjotidny|ii|}Wnt j od|_ nX|S(Ns X-Auth-TokensX-Subject-TokenRsNetwork connection error.i( RR*RtFAKE_ADMIN_TOKEN_IDRRRRRtKeyErrorR(R>trequesttcontexttauth_idRtresponse((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRFs cCs|iddS(Ns/testadmin/v3/auth/tokens(R(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRWscCsh dd6dd6dd6dd6dd6dd6dd6dd 6dd 6}|id ||i|iid t|id dS(NReRfRhRjRRRRRRRVRs/testadmin/v3/auth/tokens(R%RRRRR,R(R>tdelta_expected_env((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_valid_unscoped_uuid_requestZs cCsyh dd6dd6dd6dd6dd6dd6dd 6dd 6dd 6}|id ||i|ii|id dS(NRgtHTTP_X_DOMAIN_IDRitHTTP_X_DOMAIN_NAMEReRfRhRjRRRRVs/testadmin/v3/auth/tokens(R%RRRtv3_UUID_TOKEN_DOMAIN_SCOPEDR(R>R#((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_domain_scoped_uuid_requestls  cCs|i|i|ii}ti|id}xS|D]K}xB|dD]6}|id||id||id|qMWq<WdS(NsX-Service-Catalogt endpointstadminURLt publicURL(RRRRRRRR(R>Rtcatalogtservicetendpoint((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_gives_v2_catalog~s  ( RDRERcR RRR@RRR$R(R/(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRs -    tTokenEncodingTestcBs#eZdZdZdZRS(cCs*tt|i|itidS(N(R9R0R@RsR Rt(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@scCs|idtiddS(Ns foo%20barsfoo bar(RRt safe_quote(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_unquoted_tokenscCs|idtiddS(Ns foo%20bar(RRR1(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_quoted_tokens(RDRER@R2R3(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR0s  tTokenExpirationTestcBseZdZddZddZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZRS(cCstt|iti|_tidd|_t i |i|idt |_ t i |i|idt |_ dS(NRit subsecond(R9R4R@RRRRRtdeltaRtisotimeRQt one_hour_agotone_hour_earlier(R>((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR@s cCs|hhhdd6|p|id6hdd6dd6d6d6hd d6d d6hd d6hd d6gd 6d6hd6d6}|S(NtblahRRRRRttenantRRRtrole1trole2trolestusertserviceCatalogR(R9(R>Rt v2_fixture((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytcreate_v2_token_fixtures cCshh|p|id6hdd6dd6hdd6dd6d6d 6hd d6d d6hdd6dd6d6d 6hd d6dd6hdd6dd6gd6hd6d6}|S(Nt expires_atRRRRRgRitdomainR?RRtprojectR<tRole1R=tRole2R>R,R(R9(R>Rt v3_fixture((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytcreate_v3_token_fixtures&cCs#h}|ititi|dS(N(RRRGtconfirm_token_not_expired(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_no_datas cCs*hdd6}|ititi|dS(Ntwootmy_happy_token_dict(RRRGRJ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt test_bad_datas  cCsA|i}|ddd}ti|}|i||dS(NRRR(RBRRJR(R>Rtexpected_expirestactual_expires((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_v2_token_not_expireds cCs2|id|i}|ititi|dS(NR(RBR8RRRGRJ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_v2_token_expireds cCsN|itd|idd}d}ti|}|i||dS(Ns2000-01-01T00:01:10.000123ZRs 2000-01-01T00:05:10.000123-05:00s2000-01-01T05:05:10.000123Z(RsRGRBRRJR(R>RRORP((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_v2_token_with_timezone_offset_not_expireds   cCsT|itd|idd}d|ddd<|ititi|dS(Ns2000-01-01T00:01:10.000123ZRs 2000-01-01T00:05:10.000123+05:00RR(RsRGRBRRRGRJ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*test_v2_token_with_timezone_offset_expireds   cCs=|i}|dd}ti|}|i||dS(NRRC(RIRRJR(R>RRORP((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_v3_token_not_expireds cCs2|id|i}|ititi|dS(NR(RIR8RRRGRJ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_v3_token_expired s cCsN|itd|idd}d}ti|}|i||dS(Ns2000-01-01T00:01:10.000123ZRs 2000-01-01T00:05:10.000123-05:00s2000-01-01T05:05:10.000123Z(RsRGRIRRJR(R>RRORP((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_v3_token_with_timezone_offset_not_expireds   cCsB|itd|idd}|ititi|dS(Ns2000-01-01T00:01:10.000123ZRs 2000-01-01T00:05:10.000123+05:00(RsRGRIRRRGRJ(R>R((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt*test_v3_token_with_timezone_offset_expireds    cCsd}d}|i|iiihtid|i|i}|}|iii||||i |iii ||dS(NtmytokenRtat( RRvRRRRRR6tstoreRR(R>RRRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_cached_token_not_expired!s cCsd}d}|i|ii}|ih|i|i}ti|i}|i ||||i |i |dS(sEnsure we cannot retrieve a token from the cache. Getting a token from the cache should return None when the token data in the cache stores the expires time as a \*nix style timestamp. RYRN( RRvRRRR6tcalendarttimegmt timetupleR[RR(R>RRRRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt:test_cached_token_not_expired_with_old_style_nix_timestamp+s   csdd}iiiihtidii}|}iii||i fdt i t i dS(NRYRRZcsiiiS((RvRR((R>R(sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pytEs(RRvRRRRRR6R[t assertThatRtraisesRRG(R>Rtsome_time_earlierR((R>Rsc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_cached_token_expired=s cCsd}d}|i|iiihtidd}|i||i}ti |d}|iii ||||i |iii ||dS(NRYRRis-02:00( RRvRRRRRR6RRR[RR(R>RRttimezone_offsetRR((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt2test_cached_token_with_timezone_offset_not_expiredHs csdd}iiiihtidd}i|i}ti |d}iii ||i fdt i tidS(NRYRRis-02:00csiiiS((RvRR((R>R(sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRa\s(RRvRRRRRR6RRR[RbRRcRRG(R>RRfRdR((RR>sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt.test_cached_token_with_timezone_offset_expiredSs N(RDRER@R%RBRIRKRNRQRRRSRTRURVRWRXR\R`ReRgRh(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyR4s$            tCatalogConversionTestscBs>eZdZdZdZdZdZdZdZdZ RS(shttp://server:5000/v2.0shttp://admin:35357/v2.0shttp://internal:5000/v2.0t RegionOnet RegionTwot RegionThreec CsQti}|idd}|id|id|id|id|iti i d|}|i i }t i|}|idt||d }|idt|d |d d }|id|d|id t||i|i|d |i|i|d |i|i|d|i|i|ddS(NttypetidentitytpublictadmintinternaltregionR\iiR)iR+R*t internalURL(RtV3Tokent add_servicetadd_standard_endpointst PUBLIC_URLt ADMIN_URLt INTERNAL_URLt REGION_ONERt AccessInfotfactorytservice_catalogtget_dataRt_v3_to_v2_catalogRR(R>Rtstauth_reft catalog_dataR,R-R)((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_basic_convertjs&     c Cscti}|idd}|id|id|i|id|id|i|id|id|i t i i d|}|i i}ti|}|idt||d }h|id 6|id6h|id 6|id6h|id 6|i d6g}|id|d|id t|dx|D]}|i||qEWdS(NRmRnRqRrRoRpR\iiRsR+R*iR)(RRtRut add_endpointRyRzRwt REGION_TWORxt REGION_THREERR{R|R}R~RRRRR( R>RRRRR,R-Rtte((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyttest_multi_regions*       ( RDRERwRxRyRzRRRR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyRi`s cCs ti|S(N(t testresourcestOptimisingTestSuite(tloadertteststpattern((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyt load_testss(QR]RRPR/RdR^RR#RWtfixturesRRtoslo_serializationRt oslo_utilsRtrequests_mock.contribRR{RItsix.moves.urllibRRRRRRZtkeystoneclientRtkeystoneclient.commonRRtkeystoneclient.middlewareRtkeystoneclient.openstack.commonR tkeystoneclient.tests.unitR R RRURRRRRt DiscoveryListR,RR RR(R%R$R.R3R|R4RGRRRRdtTestCaseRntResourcedTestCaseRRRRRRRRRRR RR0R4RiR(((sc/tmp/pip-build-cD3xZi/python-keystoneclient/keystoneclient/tests/unit/test_auth_token_middleware.pyts                      L(8j y+ ?