bgN `dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z ddl mZddlmZmZmZmZmZmZmZmZmZddlmZmZddlmZddlmZm Z dd l!m"Z"ddl#Z#dd l$m%Z%m&Z&d d l'm(Z(m)Z)d d l m*Z*d dl+m,Z,d dl-m.Z.d dl/m0Z0d dl1m2Z2m3Z3d dl4m5Z5d dl6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>d dl?m@Z@erddlAmBZBndZBejCdko ejDdkZEejFfdeGdejHdejfdZIdeGdeJdejHdejfdZKdeJfdZLGdd e ZMGd!d"eMZNGd#d$eMZOGd%d&ZPGd'd(eZQd)ed*ed+edefd,ZRegejSfZTejUejVd-fd.eTd/eWdeejSfd0ZXejVfd.eTdejSfd1ZYdJd2ejSd/eWddfd3ZZdej[fd4Z\dKd5eeBdej]fd6Z^ dKe0e2d d d-de0e0e0e0dd7d8d9 d:eGd;eGde2d?eWd@edAedBedCedDed5eeBdEeJd2ede:fdFZ_e0e0fdGedHedefdIZ`dS)LzUtilities shared by tests.N)ABCabstractmethod) TracebackType) TYPE_CHECKINGAnyCallableIteratorListOptionalTypeUnioncast)IsolatedAsyncioTestCasemock)Signal) CIMultiDictCIMultiDictProxy)URL)_RequestContextManager_WSRequestContextManager) ClientSessionhdrs)AbstractCookieJar)ClientResponse)ClientWebSocketResponse)sentinel) HttpVersionRawRequestMessage)StrOrURL) Application AppRunner BaseRunnerRequestServer ServerRunnerSockSiteUrlMappingMatchInfo)_RequestHandler) SSLContextposixcygwinhostfamilyreturnc$t|d|S)Nr)get_port_socket)r-r.s e/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/aiohttp/test_utils.pyget_unused_port_socketr3=s 4F + ++portctj|tj}tr+|tjtjd|||f|S)Nr)socket SOCK_STREAM REUSE_ADDRESS setsockopt SOL_SOCKET SO_REUSEADDRbind)r-r5r.ss r2r1r1CsZ  ff011A@ V&(;Q???FFD$< Hr4c tjtjtj5}|dt t |dcdddS#1swxYwYdS)z1Return a port that is unused on the current host.) 127.0.0.1rrN)r7AF_INETr8r=rint getsockname)r>s r2 unused_portrDPs v~v'9 : :-a    C+,,------------------sAA99A=A=ceZdZdZeddddeddeeefde e j dede e d e d eee ejgejfd ed dfd Z dde e j d ed dfdZed ed efdZded efdZed e fdZed e fdZed efdZddZddZ de e!e"de e"de e#d dfdZ$ddZ%de e!e"de e"de e#d dfdZ&dS) BaseTestServerFNr@)schemeloopr-r5skip_url_assertssocket_factoryrGrHr-r5rIrJkwargsr/c ||_d|_d|_||_||_d|_||_||_||_dS)NF) _looprunner_rootr-r5_closedrGrIrJ)selfrGrHr-r5rIrJrKs r2__init__zBaseTestServer.__init__ZsK ,0 $(     0,r4cK|jrdS||_|dd|_|jdddi|d{V|_|jd{V|jsd|_ tj|j j }n#t$rd}YnwxYw|dkr tj n tj}||j |j|}|dd\|_ |_t#|j||j}|d{V|j}|J|j}|J|dd |_|jt,ur|jrd } nd } | |_t/|jd |j d |j|_dS)Nsslhandler_cancellationTr)sock ssl_contextrhttpshttpz://:)rNrMpop_ssl _make_runnersetupr5 ipaddress ip_addressr-version ValueErrorr7AF_INET6rArJrCr'start_serversocketsrGrrrO) rQrHrKrer._socksiteserverrjrGs r2 start_serverzBaseTestServer.start_serverqs ;  F JJud++ -D-RR4R6RRRRRRRR k!!!!!!!!!y DI *4955=GG   GGG $+qLLfn##DIty&AA$00222A26 49 %TYGGGjjll!!!."""AJ**,,Q/ ;( " "y   DKDKCCDICC CCDD s6B B$#B$c KdSNr^rQrKs r2razBaseTestServer._make_runners  r4pathc|jJt|}|js0|rJ|j|Stt |jt |zSrp)rOrrI is_absolutejoinstr)rQrrurls r2make_urlzBaseTestServer.make_urlsqz%%%$ii$ 4(( ( ((:??3'' 's4:T233 3r4c|jduSrp)rNrQs r2startedzBaseTestServer.starteds{$&&r4c|jSrp)rPrzs r2closedzBaseTestServer.closed |r4c8|j}|J|jJ|jSrp)rNrm)rQrNs r2handlerzBaseTestServer.handlers-!!!}(((}r4cK|jrF|jsA|jJ|jd{Vd|_d|_d|_dSdSdS)a`Close all fixtures created by the test client. After that point, the TestClient is no longer usable. This is an idempotent function: running close multiple times will not have any additional effects. close is also run when the object is garbage collected, and on exit when used as a context manager. NT)r{r}rNcleanuprOr5rPrzs r2closezBaseTestServer.closes| <   ;***+%%'' ' ' ' ' ' ' 'DJDIDLLL     r4c tdNzUse async with instead TypeErrorrzs r2 __enter__zBaseTestServer.__enter__0111r4exc_type exc_value tracebackcdSrpr^rQrrrs r2__exit__zBaseTestServer.__exit__  r4cLK||jd{V|SNrH)rnrMrzs r2 __aenter__zBaseTestServer.__aenter__s6TZ000000000 r4c>K|d{VdSrprrs r2 __aexit__zBaseTestServer.__aexit__. jjllr4rpr/N)r/rF)'__name__ __module__ __qualname____test__rr1r rvobjectr asyncioAbstractEventLooprBboolrr7 AddressFamilyrrRrnrr#rar rrxpropertyr{r}r%rrrr BaseExceptionrrrrr^r4r2rFrFWsH &.48"!& ---c6k"-w01 -  - sm --! #v+ ,fm ; -- ----0;?EEW67EJME EEEEB 3 :   ^ 4X4#4444''''X'XX    &2222 4 ./ M* M*       4 ./M*M*   r4rFc jeZdZeddddedeeefdedee de f fd Z de d e fd Z xZS) TestServerr@NrGr-r5apprGr-r5rKc P||_tjd|||d|dSNrr^)rsuperrR)rQrrGr-r5rK __class__s r2rRzTestServer.__init__s8GTGGGGGGGr4r/c*Kt|jfi|Srp)r"rrqs r2razTestServer._make_runners,,V,,,r4)rrrrr!r rvrr rBrrRr#ra __classcell__rs@r2rrs &." H H H  Hc6k" H  H sm H H H H H H H-3-:--------r4rc teZdZeddddedeeefdedee de d df fd Z dd e de d e fd ZxZS) RawTestServerr@NrrrGr-r5rKr/c P||_tjd|||d|dSr)_handlerrrR)rQrrGr-r5rKrs r2rRzRawTestServer.__init__s8  GTGGGGGGGr4TdebugcXKt|jf|j|d|}t|fd|i|S)N)rHrr)r%rrMr&)rQrrKsrvs r2razRawTestServer._make_runnersAT]K5KKFKKC77u7777r4)T)rrrrr)r rvrr rBrrRrr&rarrs@r2rrs &." H H H  Hc6k" H  H sm H H  H H H H H H888s8|88888888r4rc eZdZdZdZddddedeedeej de d df d Z d'd Z e d efd Ze d eefd Ze d efdZe d eefdZe d efdZded efdZdedede d efdZdedede d efdZdede d efdZdede d efdZdede d efdZ dede d efdZ!dede d efdZ"dede d efdZ#dede d efdZ$dede d e%fdZ&dede d e'fdZ(d'dZ)d'd Z*d!ee+e,d"ee,d#ee-d dfd$Z.d(d%Z/d!ee+e,d"ee,d#ee-d dfd&Z0dS)) TestClientzb A test client implementation. To write functional tests for aiohttp based servers. FN) cookie_jarrHrmrrHrKr/c t|tstdt|z||_||_|t jd|}td||d||_ d|_ g|_ g|_ dS)Nz2server must be TestServer instance, found type: %rT)unsaferH)rHrFr^) isinstancerFrtyperirMaiohttp CookieJarr_sessionrP _responses _websockets)rQrmrrHrKs r2rRzTestClient.__init__ s&.11 G$v,,V     *$TBBBJ%Q4JQQ&QQ  02:<r4cVK|j|jd{VdSr)rirnrMrzs r2rnzTestClient.start_servers9l''TZ'88888888888r4c|jjSrp)rir-rzs r2r-zTestClient.host! |  r4c|jjSrp)rir5rzs r2r5zTestClient.port%rr4c|jSrp)rirzs r2rmzTestClient.server)r~r4cjtttt|jddS)Nr)rr r!getattrrirzs r2rzTestClient.app-s%H[)74<+M+MNNNr4c|jS)zAn internal aiohttp.ClientSession. Unlike the methods on the TestClient, client session requests do not automatically include the host in the url queried, and will require an absolute path to the resource. )rrzs r2sessionzTestClient.session1s }r4rrc6|j|Srp)rirx)rQrrs r2rxzTestClient.make_url<s|$$T***r4methodcK|jj|||fi|d{V}|j||Srp)rrequestrxrappend)rQrrrrKresps r2_requestzTestClient._request?s_+T]*64==3F3FQQ&QQQQQQQQ t$$$ r4c :t|j||fi|S)zRoutes a request to tested http server. The interface is identical to aiohttp.ClientSession.request, except the loop kwarg is overridden by the instance used by the test server. )rr)rQrrrrKs r2rzTestClient.requestGs(&mdmFD&K&KF&K&KLLLr4c Nt|jtj|fi|S)zPerform an HTTP GET request.)rrrMETH_GETrQrrrKs r2getzTestClient.getS(%mdmDM4&R&R6&R&RSSSr4c Nt|jtj|fi|S)zPerform an HTTP POST request.)rrr METH_POSTrs r2postzTestClient.postW(%mdmDND&S&SF&S&STTTr4c Nt|jtj|fi|S)z Perform an HTTP OPTIONS request.)rrr METH_OPTIONSrs r2optionszTestClient.options[s)%mdmD4Et&V&Vv&V&VWWWr4c Nt|jtj|fi|S)zPerform an HTTP HEAD request.)rrr METH_HEADrs r2headzTestClient.head_rr4c Nt|jtj|fi|S)zPerform an HTTP PUT request.)rrrMETH_PUTrs r2putzTestClient.putcrr4c Nt|jtj|fi|SzPerform an HTTP PATCH request.)rrr METH_PATCHrs r2patchzTestClient.patchgs(%mdmDOT&T&TV&T&TUUUr4c Nt|jtj|fi|Sr)rrr METH_DELETErs r2deletezTestClient.deleteks)%mdmD4Dd&U&Uf&U&UVVVr4c 8t|j|fi|S)zjInitiate websocket connection. The api corresponds to aiohttp.ClientSession.ws_connect. )r _ws_connectrs r2 ws_connectzTestClient.ws_connectos( ((8(8(H(H(H(HIIIr4cK|jj||fi|d{V}|j||Srp)rrrxrr)rQrrrKwss r2rzTestClient._ws_connectws^,4=+DMM$,?,?JJ6JJ J J J J J J ### r4c*K|js|jD]}||jD]}|d{V|jd{V|jd{Vd|_dSdS)aHClose all fixtures created by the test client. After that point, the TestClient is no longer usable. This is an idempotent function: running close multiple times will not have any additional effects. close is also run on exit when used as a(n) (asynchronous) context manager. NT)rPrrrrri)rQrrs r2rzTestClient.close~s|    & ! !hhjj        -%%'' ' ' ' ' ' ' ',$$&& & & & & & & &DLLL  r4c tdrrrzs r2rzTestClient.__enter__rr4rexctbcdSrpr^rQrrrs r2rzTestClient.__exit__rr4c>K|d{V|Srp)rnrzs r2rzTestClient.__aenter__s/!!!!!!!!! r4c>K|d{VdSrprrs r2rzTestClient.__aexit__rr4r)r/r)1rrr__doc__rrFr rrrrrRrnrrvr-rBr5rmr!rrrr rrxrrrrrrrrrrrrrrrrrr rrrrrr^r4r2rrsH 3748 ====./ = w01 =  = ====*9999!c!!!X!!hsm!!!X!XOXk*OOOXOX+X+#++++!)58  M M!) M58 M  M M M MTTCT4JTTTTUUSU5KUUUUXHXX8NXXXXUUSU5KUUUUTTCT4JTTTTV(VcV6LVVVVW8WsW7MWWWWJxJ3J;SJJJJ(+     *2222 4 ./ m $  ] #       4 ./m $ ] #   r4rcjeZdZdZdefdZdefdZddZddZddZ dd Z d ede fd Z d e de fd ZdS)AioHTTPTestCaseaA base class to allow for unittest web applications using aiohttp. Provides the following: * self.client (aiohttp.test_utils.TestClient): an aiohttp test client. * self.loop (asyncio.BaseEventLoop): the event loop in which the application and server are running. * self.app (aiohttp.web.Application): the application returned by self.get_application() Note that the TestClient's methods are asynchronous: you have to execute function on the test client using asynchronous methods. r/c.K|S)zGet application. This method should be overridden to return the aiohttp.web.Application object to test. )get_apprzs r2get_applicationzAioHTTPTestCase.get_applications||~~r4c td)zqObsolete method used to constructing web application. Use .get_application() coroutine instead. z+Did you forget to define get_application()?) RuntimeErrorrzs r2rzAioHTTPTestCase.get_apps HIIIr4NcjKtj|_|d{VSrp)rget_running_looprH setUpAsyncrzs r2 asyncSetUpzAioHTTPTestCase.asyncSetUps8,.. __&&&&&&&&&r4cK|d{V|_||jd{V|_||jd{V|_|jd{VdSrp)rr get_serverrm get_clientclientrnrzs r2rzAioHTTPTestCase.setUpAsyncs--//////// OODH55555555  OODK88888888 k&&(((((((((((r4c:K|d{VSrp) tearDownAsyncrzs r2 asyncTearDownzAioHTTPTestCase.asyncTearDowns*'')))))))))r4cHK|jd{VdSrp)r rrzs r2r zAioHTTPTestCase.tearDownAsyncs2k!!!!!!!!!!!r4rc2Kt||jS)zReturn a TestServer instance.r)rrH)rQrs r2rzAioHTTPTestCase.get_servers#DI....r4rmc2Kt||jS)zReturn a TestClient instance.r)rrH)rQrms r2rzAioHTTPTestCase.get_clients&ty1111r4r)rrrrr!rrrrr r rrrrr^r4r2rrs  {JJJJJ''''))))****""""/K/J////2z2j222222r4rfuncargsrKc>tjdtd|S)zw A decorator dedicated to use with asynchronous AioHTTPTestCase test methods. In 3.8+, this does nothing. zBDecorator `@unittest_run_loop` is no longer needed in aiohttp 3.8+rX) stacklevel)warningswarnDeprecationWarning)rrrKs r2unittest_run_looprs-  ML Kr4F loop_factoryfastc#RKt|}|Vt||dS)zzA contextmanager that creates an event_loop, for test purposes. Handles the creation and cleanup of a test loop. )rN)setup_test_loopteardown_test_loop)rrrHs r2 loop_contextrs7 < ( (D JJJt$''''''r4cB|}tj||S)zCreate and return an asyncio.BaseEventLoop instance. The caller should also call teardown_test_loop, once they are done with the loop. )rset_event_loop)rrHs r2rrs% <>>D 4   Kr4rHc|}|sB||j|||st jtjddS)z>Teardown and cleanup an event_loop created by setup_test_loop.N) is_closed call_soonstop run_foreverrgccollectrr)rHrr}s r2rrsv ^^  F  ty!!!    4     r4c4dtdtdtfd}dtdtdtddfd}tjt}i|_||_||_d|_t||_ |j |S) Nrkeyr/c|j|Srp __app_dict)rr(s r2get_dictz"_create_app_mock..get_dicts~c""r4valuec||j|<dSrpr*)rr(r-s r2set_dictz"_create_app_mock..set_dict"s#sr4)specF) rrvr MagicMockr!r+ __getitem__ __setitem___debugron_response_preparefreeze)r,r/rs r2_create_app_mockr7s#c######$c$$C$D$$$$ .k * * *CCNCOCOCJ$SkkC""$$$ Jr4 sslcontextctj}dtdttffd }||j_|S)Nr(r/c|dkrSdS)Nr8r^)r(r8s r2get_extra_infoz)_create_transport..get_extra_info3s ,   4r4)rMockrvr r*r; side_effect)r8 transportr;s` r2_create_transportr?0sR ICHZ$8 ,:I( r4i.) match_inforeclosingrwriterprotocolr>payloadr8client_max_sizerHrrrheadersr@rerArrBrCr>rDrEc tj}| durtj} d| j_|t ddkrd}|rHt t |}td|D}nt t }d}d| tj d v}t||||||dd |t| }|t}| t urt#| } |t urtj}| |_|t urjtj}t'd|_t'd|_t'd|_t'd|_| |_| |_||_| t urtj} t3|| |||| | }t5|t urin|tj}||||_|S) zCreates mocked web.Request testing purposes. Useful in unit tests, when spinning full web server is overkill or specific conditions and errors are hard to trigger. .r^rTc3pK|]1\}}|d|dfV2dS)zutf-8N)encode).0kvs r2 z&make_mocked_request..]sT  7;q!QXXg   1 1 2      r4chunkedNF)rE)rr< create_future return_valuerrrtupleitemsrrTRANSFER_ENCODINGlowerrrr7rr?r>make_mocked_coro write_headerswrite write_eofdrainrBr$r(add_app _match_info)rrrrFr@rerArrBrCr>rDr8rErHtaskraw_hdrsrNmessagereqs r2make_mocked_requestra=sD, 9;;D s{{y{{*,'Q""""";w#7#788  ?F}}     #;==117;;t'=rBBHHJJJG    D   G {  H%j11 89;;& /55'-- +D11'-- $"HHO()++ (FD$   C%H$$*dikkJs CO Jr4rQraise_exceptionchdtdtdtffd }tj|S)zCreates a coroutine mock.rrKr/c^KturtjsSd{VdSrp)rinspect isawaitable)rrKrbrQs r2 mock_coroz#make_mocked_coro..mock_corosO ( * *! !"<00  r4)wraps)rrr<)rQrbrgs`` r2rVrVsQ scc 99 % % %%r4)Frp)arr contextlibr%rercosr7sysrabcrrtypesrtypingrrrr r r r r runittestrr aiosignalr multidictrryarlrraiohttp.clientrrrOrrr client_reqrepr client_wsrhelpersrr\rrtypedefsr webr!r"r#r$r%r&r'r( web_protocolr)rTr*nameplatformr9rArvrr3rBr1rDrFrrrrrr _LOOP_FACTORYcontextmanagernew_event_looprrrrr1r7r<r?rarVr^r4r2rs   ########                      3222222233333333KKKKKKKK!!!!!!!!""""""))))))......00000000                    *)))))J7"?s|x'? /5n,, ,+, ],,,,      "("6   ]     -S----BBBBBSBBBJ--------"88888N888$jjjjjjjjZ6262626262-626262r C  s s    W667  ")"8u ( ( (@D ( g'( ( ( ( (#*"8         ! !W6 !d !t ! ! ! !$.$  (:"6 $)     W &;q!,,'+"WWW W WW  W  WW W WWWW$WW W  !WWWWv! & & &36 & & & & & & &r4