+
    üÐjé)  ã                   óª   € R t ^ RIHt ^ RIHtHtHt ^ RIHtH	t	 ^ RI
Ht ^ RIHt  ! R R]4      t ! R R	]4      t ! R
 R]4      t ! R R]4      tR# )z+
Tests for L{twisted.words.im.ircsupport}.
)ÚStringTransport)ÚChatUIÚConversationÚGroupConversation)Ú
IRCAccountÚIRCProto)ÚOfflineError)ÚIRCTestCasec                   ó,   a € ] tR t^t o R tR tRtV tR# )ÚStubConversationc                ó   € R # ©N© ©Úselfs   &ÚD/usr/lib/python3/dist-packages/twisted/words/test/test_ircsupport.pyÚshowÚStubConversation.show   ó   € Ùó    c                ó   € Wn         W n        R # r   ©ÚmessageÚmetadata)r   r   r   s   &&&r   ÚshowMessageÚStubConversation.showMessage   s   € ØŒØ Žr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ò÷!ð !r   r   c                   ó6   a € ] tR t^t o R tR tRR ltRtV tR# )ÚStubGroupConversationc                ó   € Wn         W n        R # r   )ÚtopicÚ
topicSetBy)r   r'   Únicknames   &&&r   ÚsetTopicÚStubGroupConversation.setTopic   s   € ØŒ
Ø"Žr   c                ó   € R # r   r   r   s   &r   r   ÚStubGroupConversation.show   r   r   Nc                ó*   € W0n         W n        W0n         R # r   )r   Útext)r   Úsenderr/   r   s   &&&&r   ÚshowGroupMessageÚ&StubGroupConversation.showGroupMessage    s   € Ø ŒØŒ	Ø Žr   )r   r/   r'   r(   r   )	r   r   r   r   r*   r   r1   r    r!   r"   s   @r   r%   r%      s   ø‡ € ò#ò÷!ò !r   r%   c                   ó<   a € ] tR t^&t o ]^ 3R lt]^ 3R ltRtV t	R# )Ú
StubChatUIc                ó0   € \         P                  ! WW#4      # r   ©r   ÚgetGroupConversation©r   ÚgroupÚClassÚ
stayHiddens   &&&&r   ÚgetConversationÚStubChatUI.getConversation'   ó   € Ü×*Ò*¨4¸ÓJÐJr   c                ó0   € \         P                  ! WW#4      # r   r6   r8   s   &&&&r   r7   ÚStubChatUI.getGroupConversation*   r>   r   r   N)
r   r   r   r   r   r<   r%   r7   r    r!   r"   s   @r   r4   r4   &   s%   ø‡ € Ø+;Èô Kð 1FÐRS÷ Kò Kr   r4   c                   ó2  a € ] tR t^.t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR tV tR!# )"ÚIRCProtoTestsz
Tests for L{IRCProto}.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnNr   )Úformatr#   s   "€r   Ú__annotate__ÚIRCProtoTests.__annotate__3   s   ø€ ÷ +ñ +�tñ +r   c                ó–   € \        R RRRRR4      V n        \        V P                  \        4       R4      V n        \        4       V n        R# )zSome accountFÚaliceNzexample.comi  )r   Úaccountr   r4   Úprotor   Ú	transportr   s   &r   ÚsetUpÚIRCProtoTests.setUp3   s=   € Ü!Ø˜E 7¨D°-Àó
ˆŒô ˜dŸl™l¬J«L¸$Ó?ˆŒ
Ü(Ó*ˆŽr   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   :   s   ø€ ÷ 	
ñ 	
˜Dñ 	
r   c                ó¤   € V P                   P                  V P                  4       V P                  V P                  P	                  4       R4       R# )z€
When L{IRCProto} is connected to a transport, it sends I{NICK} and
I{USER} commands with the username from the account object.
z1NICK alice
USER alice foo bar :Twisted-IM user
N)rM   ÚmakeConnectionrN   ÚassertEqualBufferValueÚvaluer   s   &r   Ú
test_loginÚIRCProtoTests.test_login:   s;   € ð
 	�
‰
×!Ñ! $§.¡.Ô1Ø×#Ñ#Ø�N‰N× Ñ Ó"ØFö	
r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   E   s   ø€ ÷ 
ñ 
 4ñ 
r   c                óÆ   € RV P                   n        V P                  P                  V P                  4       V P                  V P                  P                  4       R4       R# )zz
If created with an account with a password, L{IRCProto} sends a
I{PASS} command before the I{NICK} and I{USER} commands.
Úsecretz>PASS secret
NICK alice
USER alice foo bar :Twisted-IM user
N)rL   ÚpasswordrM   rS   rN   rT   rU   r   s   &r   Útest_authenticateÚIRCProtoTests.test_authenticateE   sI   € ð
 !)ˆ�‰ÔØ�
‰
×!Ñ! $§.¡.Ô1Ø×#Ñ#Ø�N‰N× Ñ Ó"ð6ö	
r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   S   s   ø€ ÷ 
ñ 
˜tñ 
r   c                óÊ   € RR.V P                   n        V P                  P                  V P                  4       V P                  V P                  P                  4       R4       R# )zq
If created with an account with a list of channels, L{IRCProto}
joins each of those channels after registering.
ú#fooz#barzGNICK alice
USER alice foo bar :Twisted-IM user
JOIN #foo
JOIN #bar
N)rL   ÚchannelsrM   rS   rN   rT   rU   r   s   &r   Útest_channelsÚIRCProtoTests.test_channelsS   sN   € ð
 "(¨Ð 0ˆ�‰ÔØ�
‰
×!Ñ! $§.¡.Ô1Ø×#Ñ#Ø�N‰N× Ñ Ó"ðö	
r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   b   s   ø€ ÷ Fñ F˜tñ Fr   c                óð   € V P                   P                  V P                  4       V P                   P                  R4       V P	                  ^V P                   P
                  P                  R4      4       R# )z†
L{IRCProto} can interpret I{ISUPPORT} (I{005}) messages from the server
and reflect their information in its C{supported} attribute.
z3:irc.example.com 005 alice MODES=4 CHANLIMIT=#:20
ÚMODESN)rM   rS   rN   ÚdataReceivedÚassertEqualÚ	supportedÚ
getFeaturer   s   &r   Útest_isupportÚIRCProtoTests.test_isupportb   sR   € ð
 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ WÔXØ×Ñ˜˜DŸJ™J×0Ñ0×;Ñ;¸GÓDÖEr   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   k   s   ø€ ÷ 
9ñ 
9˜4ñ 
9r   c                óÀ  € V P                   P                  V P                  4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R4       V P	                  RV P                   P
                  4       V P                  RV P                   P
                  4       R# )z2
IRC NICK command changes the nickname of a user.
z:alice JOIN #group1
ú:alice1 JOIN #group1
z:alice1 NICK newnick
z:alice3 NICK newnick3
ÚnewnickÚalice1N©rM   rS   rN   rg   ÚassertInÚ	_ingroupsÚassertNotInr   s   &r   Ú	test_nickÚIRCProtoTests.test_nickk   s˜   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ 9Ô:Ø�
‰
×ÑÐ :Ô;Ø�
‰
×ÑÐ :Ô;Ø�
‰
×ÑÐ ;Ô<Ø�‰�i §¡×!5Ñ!5Ô6Ø×Ñ˜ 4§:¡:×#7Ñ#7Ö8r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   w   s   ø€ ÷ Cñ C˜4ñ Cr   c                ó�  € V P                   P                  V P                  4       V P                   P                  R4       V P	                  RV P                   P
                  R,          4       V P                  RV P                   P
                  R,          4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R4       V P                  RV P                   P
                  R,          4       V P                  RV P                   P
                  R,          4       R# )	z6
IRC PART command removes a user from an IRC channel.
ro   Úgroup1rq   Úgroup2z:alice PART #group1
z:alice1 PART #group1
z:alice1 PART #group2
Nrr   r   s   &r   Ú	test_partÚIRCProtoTests.test_partw   sà   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ :Ô;Ø�‰�h §
¡
× 4Ñ 4°XÕ >Ô?Ø×Ñ˜ 4§:¡:×#7Ñ#7¸Õ#AÔBØ�
‰
×ÑÐ 9Ô:Ø�
‰
×ÑÐ :Ô;Ø�
‰
×ÑÐ :Ô;Ø×Ñ˜ 4§:¡:×#7Ñ#7¸Õ#AÔBØ×Ñ˜ 4§:¡:×#7Ñ#7¸Õ#AÖBr   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   …   s   ø€ ÷ 4ñ 4˜4ñ 4r   c                ó¦  € V P                   P                  V P                  4       V P                   P                  R4       V P	                  RV P                   P
                  R,          4       V P                  RV P                   P
                  R,          4       V P                   P                  R4       V P	                  RV P                   P
                  R,          4       V P                   P                  R4       V P                  \        V P                   P
                  R,          4      ^ 8H  4       V P                   P                  R4       R	# )
z8
IRC QUIT command removes a user from all IRC channels.
ro   rz   rq   r{   z:alice1 JOIN #group3
Úgroup3z:alice1 QUIT
z:alice3 QUIT
N)	rM   rS   rN   rg   rs   rt   ru   Ú
assertTrueÚlenr   s   &r   Ú	test_quitÚIRCProtoTests.test_quit…   sä   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ :Ô;Ø�‰�h §
¡
× 4Ñ 4°XÕ >Ô?Ø×Ñ˜ 4§:¡:×#7Ñ#7¸Õ#AÔBØ�
‰
×ÑÐ :Ô;Ø�‰�h §
¡
× 4Ñ 4°XÕ >Ô?Ø�
‰
×ÑÐ 2Ô3Ø�‰œ˜DŸJ™J×0Ñ0°Õ:Ó;¸qÑ@ÔAØ�
‰
×ÑÐ 2Ö3r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   “   s   ø€ ÷ 	Añ 	A˜Dñ 	Ar   c                ób  € V P                   P                  V P                  4       V P                   P                  R4       V P                   P                  R4       V P                   P	                  R4      pV P                  VP                  R4       V P                  VP                  R4       R# )z8
IRC TOPIC command changes the topic of an IRC channel.
ro   z :alice1 TOPIC #group1 newtopic
rz   Únewtopicrq   N)rM   rS   rN   rg   r7   rh   r'   r(   )r   ÚgroupConversations   & r   Ú
test_topicÚIRCProtoTests.test_topic“   sƒ   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ :Ô;Ø�
‰
×ÑÐ DÔEØ ŸJ™J×;Ñ;¸HÓEÐØ×ÑÐ*×0Ñ0°*Ô=Ø×ÑÐ*×5Ñ5°xÖ@r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   ž   s   ø€ ÷ ;ñ ;˜dñ ;r   c                óh  € V P                   P                  V P                  4       V P                   P                  R4       V P                   P                  P                  V P                   P                  R4      4      pV P                  VP                  R4       V P                   P                  R4       V P                   P                  R4      pV P                  VP                  R4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R	4      pV P                  \        VR
4      4       V P                   P                  P                  V P                   P                  R4      4      pV P                  \        VR4      4       R# )z7
PRIVMSG sends a private message to a user or channel.
z#:alice1 PRIVMSG t2 test_message_1
rq   Útest_message_1z(:alice1 PRIVMSG #group1 test_message_2
rz   Útest_message_2rK   z$:alice PRIVMSG #foo test_message_3
Úfoor/   r   N©rM   rS   rN   rg   Úchatr<   Ú	getPersonrh   r   r7   r/   ÚsetNickÚassertFalseÚhasattr©r   Úconversationrˆ   s   &  r   Útest_privmsgÚIRCProtoTests.test_privmsgž   s7  € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ GÔHØ—z‘z—‘×6Ñ6°t·z±z×7KÑ7KÈHÓ7UÓVˆØ×Ñ˜×-Ñ-Ð/?Ô@à�
‰
×ÑÐ LÔMØ ŸJ™J×;Ñ;¸HÓEÐØ×ÑÐ*×/Ñ/Ð1AÔBà�
‰
×Ñ˜7Ô#Ø�
‰
×ÑÐ HÔIØ ŸJ™J×;Ñ;¸EÓBÐØ×ÑœÐ!2°FÓ;Ô<Ø—z‘z—‘×6Ñ6°t·z±z×7KÑ7KÈGÓ7TÓUˆØ×Ñœ ¨yÓ9Ö:r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   ²   s   ø€ ÷ ;ñ ;˜Tñ ;r   c                óh  € V P                   P                  V P                  4       V P                   P                  R4       V P                   P                  P                  V P                   P                  R4      4      pV P                  VP                  R4       V P                   P                  R4       V P                   P                  R4      pV P                  VP                  R4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R	4      pV P                  \        VR
4      4       V P                   P                  P                  V P                   P                  R4      4      pV P                  \        VR4      4       R# )z#
CTCP ACTION to a user or channel.
z):alice1 PRIVMSG alice1 :ACTION smiles
rq   Úsmilesz*:alice1 PRIVMSG #group1 :ACTION laughs
rz   ÚlaughsrK   z(:alice PRIVMSG #group1 :ACTION cries
r�   r/   r   Nr�   r–   s   &  r   Útest_actionÚIRCProtoTests.test_action²   s5  € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ QÔRØ—z‘z—‘×6Ñ6°t·z±z×7KÑ7KÈHÓ7UÓVˆØ×Ñ˜×-Ñ-¨xÔ8à�
‰
×ÑÐ RÔSØ ŸJ™J×;Ñ;¸HÓEÐØ×ÑÐ*×/Ñ/°Ô:à�
‰
×Ñ˜7Ô#Ø�
‰
×ÑÐ PÔQØ ŸJ™J×;Ñ;¸EÓBÐØ×ÑœÐ!2°FÓ;Ô<Ø—z‘z—‘×6Ñ6°t·z±z×7KÑ7KÈGÓ7TÓUˆØ×Ñœ ¨yÓ9Ö:r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   Æ   s   ø€ ÷ Oñ O $ñ Or   c           
     óF  € V P                   P                  V P                  4       V P                   P                  R4       RR.RR.RR.RR.RR./pR. R
O/pV P	                  WP                   P
                  4       V P	                  W P                   P                  4       V P                   P                  R4       V P	                  / V P                   P                  4       V P                   P                  R4      pV P	                  VR,          VP                  4       R	# )z¸
RPL_NAMREPLY server response (353) lists all the users in a channel.
RPL_ENDOFNAMES server response (363) is sent at the end of RPL_NAMREPLY
to indicate that there are no more names.
z>:example.com 353 z3p = #bnl :pSwede Dan- SkOyg @MrOp +MrPlus
úDan-ÚbnlÚpSwedeÚSkOygÚMrOpÚMrPlusz1:example.com 366 alice #bnl :End of /NAMES list
N)r¤   r¢   r¥   r¦   r§   )	rM   rS   rN   rg   rh   rt   Ú_namrepliesr7   Úmembers)r   ÚexpectedInGroupsÚexpectedNamRepliesrˆ   s   &   r   Útest_rplNamreplyÚIRCProtoTests.test_rplNamreplyÆ   sû   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑØNô	
ð �U�GØ�u�gØ�e�WØ�U�GØ�u�gð
Ðð $Ò%RÐSÐØ×ÑÐ)¯:©:×+?Ñ+?Ô@Ø×ÑÐ+¯Z©Z×-CÑ-CÔDà�
‰
×ÑÐ UÔVØ×Ñ˜˜TŸZ™Z×3Ñ3Ô4Ø ŸJ™J×;Ñ;¸EÓBÐØ×ÑÐ+¨EÕ2Ð4E×4MÑ4MÖNr   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   à   s   ø€ ÷ Iñ I˜tñ Ir   c                óà   € V P                   P                  V P                  4       V P                   P                  R4       V P	                  RV P                   P
                  R,          4       R# )zK
RPL_TOPIC server response (332) is sent when a channel's topic is changed
z1:example.com 332 alice, #foo :Some random topic
zSome random topicr�   N)rM   rS   rN   rg   rh   Ú_topicsr   s   &r   Útest_rplTopicÚIRCProtoTests.test_rplTopicà   sM   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø�
‰
×ÑÐ UÔVØ×ÑÐ,¨d¯j©j×.@Ñ.@ÀÕ.GÖHr   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   è   s   ø€ ÷ 
ñ 
 $ñ 
r   c                ó€  € V P                   P                  V P                  4       V P                   P                  R4      pV P	                  \
        VP                  R4       V P                   VP                  n        V P                  P                  4        VP                  R4       V P                  V P                  P                  P                  4       R4       V P                  P                  4        VP                  RRR/4       V P                  V P                  P                  P                  4       R4       R	# )
z
L{IRCPerson.sendMessage}
rK   úSome messageúSome message 2s   PRIVMSG alice :Some message 2
rœ   ÚstyleÚemotes    PRIVMSG alice :ACTION smiles
N)rM   rS   rN   r’   ÚassertRaisesr   ÚsendMessagerL   ÚclientÚclearrh   ÚioÚgetvalue)r   Úpersons   & r   Útest_sendMessageÚIRCProtoTests.test_sendMessageè   sê   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø—‘×%Ñ% gÓ.ˆØ×Ñœ,¨×(:Ñ(:¸NÔKà $§
¡
ˆ�‰ÔØ�‰×ÑÔØ×ÑÐ+Ô,Ø×ÑØ�N‰N×Ñ×&Ñ&Ó(Ð*Nô	
ð 	�‰×ÑÔØ×Ñ˜8 g¨wÐ%7Ô8Ø×ÑØ�N‰N×Ñ×&Ñ&Ó(Ð*Uö	
r   c                ó   <€ V ^8„  d   QhRR/# rD   r   )rG   r#   s   "€r   rH   rI   ý   s   ø€ ÷ 
ñ 
 tñ 
r   c                óª  € V P                   P                  V P                  4       V P                   P                  P	                  RV P                   4      pV P                  \        VP                  R4       V P                   VP                  n	        V P                  P                  4        VP                  R4       V P                  V P                  P                  P                  4       R4       V P                  P                  4        VP                  RRR/4       V P                  V P                  P                  P                  4       R4       R	# )
z
L{IRCGroup.sendGroupMessage}
r`   rµ   r¶   s   PRIVMSG #foo :Some message 2
rœ   r·   r¸   s   PRIVMSG #foo :ACTION smiles
N)rM   rS   rN   r‘   ÚgetGroupr¹   r   ÚsendGroupMessagerL   r»   r¼   rh   r½   r¾   )r   r9   s   & r   Útest_sendGroupMessageÚ#IRCProtoTests.test_sendGroupMessageý   sô   € ð 	�
‰
×!Ñ! $§.¡.Ô1Ø—
‘
—‘×(Ñ(¨°·±Ó<ˆØ×Ñœ,¨×(>Ñ(>ÀÔOà#Ÿz™zˆ�‰ÔØ�‰×ÑÔØ×ÑÐ/Ô0Ø×ÑØ�N‰N×Ñ×&Ñ&Ó(Ð*Mô	
ð 	�‰×ÑÔØ×Ñ˜x¨'°7Ð);Ô<Ø×ÑØ�N‰N×Ñ×&Ñ&Ó(Ð*Tö	
r   )rL   rM   rN   N)r   r   r   r   Ú__doc__rO   rV   r\   rb   rk   rv   r|   rƒ   r‰   r˜   rž   r¬   r±   rÀ   rÆ   r    r!   r"   s   @r   rB   rB   .   sª   ø‡ € ñ÷+ð +÷	
ð 	
÷
ð 
÷
ð 
÷Fð F÷
9ð 
9÷Cð C÷4ð 4÷	Að 	A÷;ð ;÷(;ð ;÷(Oð O÷4Ið I÷
ð 
÷*
ö 
r   rB   N)rÈ   Útwisted.internet.testingr   Útwisted.words.im.basechatr   r   r   Útwisted.words.im.ircsupportr   r   Útwisted.words.im.localsr   Útwisted.words.test.test_ircr	   r   r%   r4   rB   r   r   r   Ú<module>rÎ      sS   ðñõ 5ß MÑ Mß <Ý 0Ý 3ô!�|ô !ô!Ð-ô !ôK�ô Kôb
�Kö b
r   