Ϫf# ddlmZddlmZddlmZddlmZmZm Z m Z ddl m Z dZ ee jGddZGd d ej ZGd d ej$ZGd dej$Zy)) implementer)defer)unittest)jidsaslsasl_mechanisms xmlstream)domish urn:ietf:params:xml:ns:xmpp-saslc.eZdZdZdZdZdZdZdZdZ y)DummySASLMechanisma Dummy SASL mechanism. This just returns the initialResponse passed on creation, stores any challenges and replies with the value of C{response}. @ivar challenge: Last received challenge. @type challenge: C{unicode}. @ivar initialResponse: Initial response to be returned when requested via C{getInitialResponse} or L{None}. @type initialResponse: C{unicode} NDUMMYc||_yNinitialResponse)selfrs D/usr/lib/python3/dist-packages/twisted/words/test/test_jabbersasl.py__init__zDummySASLMechanism.__init__"s .rc|jSrrrs rgetInitialResponsez%DummySASLMechanism.getInitialResponse%s###rc(||_|jSr) challengeresponse)rrs r getResponsezDummySASLMechanism.getResponse(s"}}r) __name__ __module__ __qualname____doc__rnamerrrrrrr r s' I DH/$rr ceZdZdZdZdZy)DummySASLInitiatingInitializerac Dummy SASL Initializer for initiating entities. This hardwires the SASL mechanism to L{DummySASLMechanism}, that is instantiated with the value of C{initialResponse}. @ivar initialResponse: The initial response to be returned by the dummy SASL mechanism or L{None}. @type initialResponse: C{unicode}. Nc8t|j|_yr)r r mechanismrs r setMechanismz+DummySASLInitiatingInitializer.setMechanism;s+D,@,@Ar)rrr r!rr(r#rrr%r%-s OBrr%cReZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy )SASLInitiatingInitializerTestsz5 Tests for L{sasl.SASLInitiatingInitializer} ctg|_tj|_tj|j|_|jj |j_|jj|jjdt|j|_ y)Ns) outputr Authenticator authenticator XmlStreamappendsendconnectionMade dataReceivedr%initrs rsetUpz$SASLInitiatingInitializerTests.setUpDs &446",,T-?-?@"kk00 %%' ## < 34>>B rctjd}|jdtjj _j j|jj j tjj j jfdj j S)zL Test that the SASL error condition is correctly extracted. )r failurenot-authorizedc<jd|jS)Nr8) assertEqual condition)ers rz?SASLInitiatingInitializerTests.test_onFailure..\sd&&'7Er) r Element addElementrDeferredr4 _deferred onFailure assertFailurer SASLAuthError addCallback)rr7s` rtest_onFailurez-SASLInitiatingInitializerTests.test_onFailureRs..!PQ+,#nn.  G$ 499..0B0BC '' E yy"""rcPd|j_|jj|jd}|j t |j |j d|j|j d|d|j dt|y)zH Test starting authentication with an initial response. sdummyrauthrr'zZHVtbXk=N) r4rstartr,r: NS_XMPP_SASLurir"strrrHs rtest_sendAuthInitialResponsez;SASLInitiatingInitializerTests.test_sendAuthInitialResponse`s|%- ! {{1~ txx0 + ${"34 SY/rcd|j_|jj|jd}|j dt |y)zK Test starting authentication without an initial response. Nrr4rrIr,r:rLrMs rtest_sendAuthNoInitialResponsez=SASLInitiatingInitializerTests.test_sendAuthNoInitialResponsels?%) ! {{1~ SY'rcd|j_|jj|jd}|j dt |y)zS Test starting authentication where the initial response is empty. rr=NrQrMs r!test_sendAuthEmptyInitialResponsez@SASLInitiatingInitializerTests.test_sendAuthEmptyInitialResponseus?%( ! {{1~ c$i(rc^|jj}tjtdf}|j d|jj ||jd|jjj|jjd|S)z5 Test receiving a challenge message. rbXkgY2hhbGxlbmdls my challengeN) r4rIr r>rJ addContent onChallenger:r'r onSuccessrdrs rtest_onChallengez/SASLInitiatingInitializerTests.test_onChallenge~s IIOO NNL+#>? /0 i( $))*=*=*G*GH D!rc|jj}tjtdf}|j dd|jj _|jj||jd}|jdt||jjd|S)zS A non-empty response gets encoded and included as character data. rrWsresponsez cmVzcG9uc2U=N) r4rIr r>rJrXr'rrYr,r:rLrZ)rr\rrs rtest_onChallengeResponsez7SASLInitiatingInitializerTests.test_onChallengeResponses IIOO NNL+#>? /0'2 $ i(;;q> X7 D!rc<|jj}tjtdf}|jj ||j d|jjj|jjd|S)z< Test receiving an empty challenge message. rrN) r4rIr r>rJrYr:r'rrZr[s rtest_onChallengeEmptyz4SASLInitiatingInitializerTests.test_onChallengeEmptysp IIOO NNL+#>?  i( dii11;;< D!rc|jj}tjtdf}|j d|jj ||j|tj|S)zJ Test receiving a challenge message with illegal padding. rzbXkg=Y2hhbGxlbmdl r4rIr r>rJrXrYrCrSASLIncorrectEncodingErrorr[s rtest_onChallengeIllegalPaddingz=SASLInitiatingInitializerTests.test_onChallengeIllegalPaddingc IIOO NNL+#>? 01 i( 1d==>rc|jj}tjtdf}|j d|jj ||j|tj|S)zM Test receiving a challenge message with illegal characters. rzbXkg*Y2hhbGxlbmdlrdr[s r!test_onChallengeIllegalCharactersz@SASLInitiatingInitializerTests.test_onChallengeIllegalCharactersrgrc|jj}tjtdf}|j d|jj ||j|tj|S)z? Test receiving a malformed challenge message. rardr[s rtest_onChallengeMalformedz8SASLInitiatingInitializerTests.test_onChallengeMalformedsb IIOO NNL+#>? S! i( 1d==>rN)rrr r!r5rFrNrRrUr]r`rbrfrirlr#rrr*r*?s? C # 0()      rr*c:eZdZdZdZdZdZdZdZdZ dZ y ) *SASLInitiatingInitializerSetMechanismTestszB Test for L{sasl.SASLInitiatingInitializer.setMechanism}. cg|_tj|_tj|j|_|jj |j_|jj|jjdtj|j|_ y)Nz) r,r r-r.r/r0r1r2r3rSASLInitiatingInitializerr4rs rr5z0SASLInitiatingInitializerSetMechanismTests.setUps &446",,T-?-?@"kk00 %%' ## ; 224>>B rc0tjtdf}|jd|||jj |j |jf<|jj|jjjS)zX Set up the XML Stream to have a SASL feature with the given mechanism. mechanismsr')content) r r>rJr?r featuresrKr"r4r(r')rr"features r _setMechanismz8SASLInitiatingInitializerSetMechanismTests._setMechanismsq.., !=>;5?Fgll ;<  yy""'''rctjd|j_d|j_d}|j ||j |y)zI Test setting ANONYMOUS as the authentication mechanism. example.comN ANONYMOUSrJIDr.passwordr:rvrr"s rtest_anonymousz9SASLInitiatingInitializerSetMechanismTests.test_anonymoussI"%!7&*# t11$78rctjd|j_d|j_d}|j ||j |y)zE Test setting PLAIN as the authentication mechanism. test@example.comsecretPLAINNrzr}s r test_plainz5SASLInitiatingInitializerSetMechanismTests.test_plainsJ"%);!<&.# t11$78rctjd|j_d|j_d}|j ||j |y)zJ Test setting DIGEST-MD5 as the authentication mechanism. rrz DIGEST-MD5Nrzr}s r test_digestz6SASLInitiatingInitializerSetMechanismTests.test_digestsJ"%);!<&.# t11$78rctjd|j_d|j_|j t j |jdy)zK Test using an unacceptable SASL authentication mechanism. rrSOMETHING_UNACCEPTABLENrr{r.r| assertRaisesrSASLNoAcceptableMechanismrvrs rtest_notAcceptablez=SASLInitiatingInitializerSetMechanismTests.test_notAcceptablesL "%);!<&.#   * *D,>,>@X rctjd|j_d|j_|j t j |jdy)zW Test using an unacceptable SASL authentication mechanism with no JID. rxrrNrrs rtest_notAcceptableWithoutUserzHSASLInitiatingInitializerSetMechanismTests.test_notAcceptableWithoutUsersK"%!7&.#   * *D,>,>@X rN) rrr r!r5rvr~rrrrr#rrrnrns+ C (999    rrnN)zope.interfacertwisted.internetr twisted.trialrtwisted.words.protocols.jabberrrrr twisted.words.xishr rJISASLMechanismr rpr%TestCaser*rnr#rrrs '""PP%1  _ + +,-:BT%C%CB$CX%6%6CLR 1B1BR r