%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/twisted/words/test/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/twisted/words/test/__pycache__/test_service.cpython-312.pyc

�

Ϫ�f�o���dZddlZddlmZmZmZddlmZmZm	Z	ddl
mZmZm
Z
mZddlmZddlmZddlmZdd	lmZmZdd
lmZGd�dej4�ZGd
�d�ZGd�dej4�ZGd�dej<�Zej@eejB�Gd�dej4�Z"y)z%
Tests for L{twisted.words.service}.
�N)�checkers�credentials�portal)�address�defer�reactor)�Deferred�DeferredList�
maybeDeferred�succeed)�pb)�
proto_helpers)�unittest)�ewords�service)�ircc�B�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�
RealmTestsc���tjd�}d|j�z}t|d|j	�z�}t|d|j	�z�}d|j	�zdz}tt
d|j	�z�}tt
d|j	�z�}|j
||��}	|j||	j�|j||��j|�t||d�|j
|d	|j�z��}	|jd	|j�z|	j�|j
|d	|j�z��}
|j|	|
�t||d
�|j|d|j�z��j|�y)N�	realmname�test�create�get�	OnRequest�	Duplicate�NoSuchT�newF�another)
r�InMemoryWordsRealm�lower�getattr�titler�successResultOf�assertEqual�name�failureResultOf�trap�setattr�assertIdentical)�self�kind�realmr%rr�flag�dupExc�	noSuchExc�p�newps           �A/usr/lib/python3/dist-packages/twisted/words/test/test_service.py�_entityCreationTestzRealmTests._entityCreationTests����*�*�;�7����
�
��$�����4�:�:�<� 7�8���e�U�T�Z�Z�\�1�2���$�*�*�,�&��4�����t�z�z�|�!;�<���F�H�t�z�z�|�$;�<�	�
� � ����.������q�v�v�&�	
���V�D�\�*�/�/��7�	��t�T�"�� � ��U�T�Z�Z�\�%9�!:�;����������-�q�v�v�6��#�#�C���
�
��(<�$=�>�����Q��%�	��t�U�#����S��T�Z�Z�\�!9�:�;�@�@��K�c�$�|jd�S)N�User�r3�r*s r2�testUserCreationzRealmTests.testUserCreation4s���'�'��/�/r4c�$�|jd�S)N�Groupr7r8s r2�testGroupCreationzRealmTests.testGroupCreation7s���'�'��0�0r4c��tjd�}|j|jd��}|j|j	d��}|j||�|j|j
d��}|j||�|j|j
d��jtj�y)Nr�testuser�
nosuchuser)rrr#�
createUser�getUserr)�
lookupUserr&r'r�
NoSuchUser)r*r,�user�	retrieved�lookedUps     r2�testUserRetrievalzRealmTests.testUserRetrieval:s����*�*�;�7���#�#�E�$4�$4�Z�$@�A���(�(����z�)B�C�	����T�9�-��'�'��(8�(8��(D�E�����Y��1�
�	�	�e�.�.�|�<�	=�	B�	B�6�CT�CT�	Ur4c��tjd�}tjd�}|j|j	|��}|j||�|j|j
d��}|j||�|j|jd��}|j||�y)Nrr>)rrr6r#�addUserr)rArB)r*r,r0rDrErFs      r2�testUserAdditionzRealmTests.testUserAdditionKs����*�*�;�7��
�L�L��$���#�#�E�M�M�!�$4�5�����Q��%��(�(����z�)B�C�	����T�9�-��'�'��(8�(8��(D�E�����Y��1r4c�L�tjd�}|j|jd��}|j|j	d��}|j||�|j
|j	d��jtj�y)Nr�	testgroup�nosuchgroup)
rrr#�createGroup�getGroupr)r&r'r�NoSuchGroup)r*r,�grouprEs    r2�testGroupRetrievalzRealmTests.testGroupRetrieval[s~���*�*�;�7���$�$�U�%6�%6�{�%C�D���(�(�����)D�E�	����U�I�.�	
�	�	�e�n�n�]�;�	<�	A�	A�&�BT�BT�	Ur4c��tjd�}tjd�}|j|j	|��|j|jd��}|j
||�y)NrrL�	testGroup)rrr;r#�addGrouprOr))r*r,r0rQs    r2�testGroupAdditionzRealmTests.testGroupAdditionfs`���*�*�;�7���M�M�+�&�����U�^�^�A�.�/��$�$�U�^�^�K�%@�A�����Q��&r4c��tjd�}|j|jd��|j|j	d��y)z�
        Try creating a group with the same name as an existing user and
        assert that it succeeds, since users and groups should not be in the
        same namespace and collisions should be impossible.
        rrN)rrr#r@rN)r*r,s  r2�testGroupUsernameCollisionz%RealmTests.testGroupUsernameCollisionnsF���*�*�;�7�����U�-�-�f�5�6����U�.�.�v�6�7r4c�p�tjd�}|j|jd��|j|jd��|j|j	��}|D�cgc]}|j
��}}|j
�|j|ddg�ycc}w)Nr�groupone�grouptwo)rrr#rN�
itergroupsr%�sortr$)r*r,�groups�g�ns     r2�testEnumerationzRealmTests.testEnumerationys����*�*�;�7�����U�.�.�z�:�;����U�.�.�z�:�;��%�%�e�&6�&6�&8�9��#�$��Q�V�V�$��$�	��������Z��4�5��
%s�9B3N)�__name__�
__module__�__qualname__r3r9r<rGrJrRrVrXra�r4r2rrs2��L�>0�1�W�"2� 	W�'�	8�
6r4rc�@�eZdZejddd�fd�Zd�Zy)�TestCaseUserAgg�TCP�	127.0.0.1i1�c�&�||_tj�|_|j	|�|_|j
|j_|j
|j_|j
j|j�y�N)rDr� StringTransportWithDisconnection�	transport�
buildProtocol�protocol�mind�makeConnection)r*rDr,�factoryrs     r2�__init__zTestCaseUserAgg.__init__�sb����	�&�G�G�I����-�-�g�6��
�"&�-�-���������	�	���
�
�$�$�T�^�^�4r4c�:�|jj|�yrk)ro�dataReceived)r*�stuffs  r2�writezTestCaseUserAgg.write�s���
�
�"�"�5�)r4N)rbrcrdr�IPv4Addressrsrwrer4r2rgrg�s"��$��#�#�E�;��>�5�*r4rgc��eZdZgd�Zd�Zd�Zdd�Zd�Zdd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�IRCProtocolTests)�useruser�	otheruser�someguy�	firstuser�username�userone�usertwo�	userthree�userfoursuserfive�someuserc�6�tjd�|_tj�|_t
j|j|j
g�|_tj|j|j�|_	g}|jD]l}t|t�r|jd�}|j|jj|��|j
j!||dz��nt#|�S)Nr�utf-8�	_password)rrr,r�'InMemoryUsernamePasswordDatabaseDontUse�checkerr�Portal�
IRCFactoryrr�STATIC_USERS�
isinstance�bytes�decode�appendr@rIr
)r*�c�nicks   r2�setUpzIRCProtocolTests.setUp�s����/�/��<��
��G�G�I����m�m�D�J�J�����?����)�)�$�*�*�d�k�k�B������%�%�	;�D��$��&��{�{�7�+��
�H�H�T�Z�Z�*�*�4�0�1��L�L� � ��t�k�'9�:�		;�
�A��r4c��|j|�}tjtjtjtj
g}|D]\}}}||vs�|j
|��|j|d|���y)z�
        The user has been greeted with the four messages that are (usually)
        considered to start an IRC session.

        Asserts that the required responses were received.
        zMissing responses for N)�	_responser�RPL_WELCOME�RPL_YOURHOST�RPL_CREATED�
RPL_MYINFO�remove�assertFalse)r*rD�response�expected�prefix�command�argss       r2�_assertGreetingz IRCProtocolTests._assertGreeting�sv���>�>�$�'���O�O�S�%5�%5�s������W��%-�	)�!�F�G�T��(�"�����(�	)�	
����%;�H�<�#H�Ir4Nc�f�|�|dz}|jd|�d��|jd|�d��y)Nr�zPASS z
zNICK z extrainfo
)rw)r*rDr��passwords    r2�_loginzIRCProtocolTests._login�s<�����k�)�H��
�
�U�8�*�D�)�*��
�
�U�4�&��/�0r4c��|j|jj|��}t||j|j�}|j||�|Srk)r#r,rBrgrrr�)r*r%rD�aggs    r2�
_loggedInUserzIRCProtocolTests._loggedInUser�sJ���#�#�D�J�J�$9�$9�$�$?�@���d�D�J�J����=�����C����
r4c�d�|jj�}ttk7r!t	|t�r|jd�}|j
�}|jj�g}ttj|�D]}|�	|d|k(s�|j|�� |S)z�
        Extracts the user's response, and returns a list of parsed lines.
        If messageType is defined, only messages of that type will be returned.
        r��)rm�valuer��strr�r��
splitlines�clear�mapr�parsemsgr�)r*rD�messageTyper��result�messages      r2r�zIRCProtocolTests._response�s���
�>�>�'�'�)���C�<�J�x��7����w�/�H��&�&�(�����������3�<�<��2�	'�G��"�g�a�j�K�&?��
�
�g�&�	'��
r4c�H�|jd�}|j|�y)Nr~)r�r�)r*rDs  r2�
testPASSLoginzIRCProtocolTests.testPASSLogin�s ���!�!�+�.�����T�"r4c�>�|j|jjd��}t||j|j�}|jd�|j
|d�}|jt|�d�|j|ddtj�|j|ddd�|j|ddddg�|jj�|jd�|j|�y	)
z�
        Sending NICK without PASS will prompt the user for their password.
        When the user sends their password to NickServ, it will respond with a
        Greeting.
        r~zNICK firstuser extrainfo
�PRIVMSGr�r�z	Password?z%PRIVMSG nickserv firstuser_password
N)r#r,rBrgrrrwr�r$�lenr�NICKSERVrmr�r��r*r~rDr�s    r2�test_nickServLoginz#IRCProtocolTests.test_nickServLogin�s����(�(����)>�)>�{�)K�L�	��y�$�*�*�d�l�l�C���
�
�1�2��>�>�$�	�2������X���*�����!��Q���)9�)9�:�����!��Q���3�����!��Q��+�{�)C�D��������
�
�<�=����T�"r4c�N�|j|jjd��}t||j|j�}|j|dd�|j
|d�}|jt|�d�|j|ddddg�y)Nr~�	wrongpassr�r�rr�zLogin failed.  Goodbye.)	r#r,rBrgrrr�r�r$r�r�s    r2�testFailedLoginz IRCProtocolTests.testFailedLogin�s����(�(����)>�)>�{�)K�L�	��y�$�*�*�d�l�l�C�����D�+�{�3��>�>�$�	�2������X���*�����!��Q��+�7P�)Q�Rr4c�4��g�|j|jjd��}t||j|j�}|j|d��fd�|j_|jd�|j�dg�y)Nr~c�&���jd�S)NT)r�)�logouts�r2�<lambda>z-IRCProtocolTests.testLogout.<locals>.<lambda>s���v�}�}�T�':�r4zQUIT
T)
r#r,rBrgrrr�ror�rwr$)r*r~rDr�s   @r2�
testLogoutzIRCProtocolTests.testLogoutsu������(�(����)>�)>�{�)K�L�	��y�$�*�*�d�l�l�C�����D�+�&�:��
�
���
�
�:������$��(r4c��|j|jjd��}|j|jjd��}d|jd<t||j|j�}|j|d�|jj�|jd�|j|�}|jt|�d�|j|ddd�|j|dd	d
�|j|dddg�|j|d	d	d
�|j|dd	d�|j|dd	d�|j|dd	d�|jd�}|jj�|jj�|jd�|j|�}|j|�}|jt|�d	�|j|ddd�|j|dd	d
�|j|dddg�|j|d	dd�|j|d	d	d
�|j|d	dgd�gd�g�y)Nr~�somechannelzsome random topic�topic�JOIN #somechannel
�rzfirstuser!firstuser@realmnamer��JOINr��#somechannel�353�366��332��333r|�otheruser!otheruser@realmnamer)r|�=r�zfirstuser otheruser)r|r�r�zotheruser firstuser)r#r,rBrN�metargrrr�rmr�rwr�r$r�r��assertIn)r*r~r�rDr��other�events       r2�testJoinzIRCProtocolTests.testJoinsv���(�(����)>�)>�{�)K�L�	��*�*�4�:�:�+A�+A�-�+P�Q��$7�����!��y�$�*�*�d�l�l�C�����D�+�&��������
�
�*�+��>�>�$�'������X���*�	
����!��Q��)H�I�����!��Q���0�����!��Q��.�)9�:�	
����!��Q���/�����!��Q���/�	
����!��Q���/�����!��Q���/��"�"�;�/��
������������
���+�,��>�>�%�(�����t�$������U��Q�'�����q��!��&E�F�����q��!��f�-�����q��!��~�&6�7�����!��Q���5�����!��Q���/��
�
��Q�K��N�I�I�
�	
r4c��|j|jjd��}|j|jjd��t	||j|j
�}|j
|d�|jj�|jd�|j|�}|D�cgc]}|d��	}}|jd|�|jd|�ycc}w)zo
        When a user joins a group without a topic, no topic information is
        sent to that user.
        r~r�r�r�r�r�N)r#r,rBrNrgrrr�rmr�rwr��assertNotIn)r*r~rDr��r�
responseCodess      r2�test_joinTopiclessz#IRCProtocolTests.test_joinTopiclessCs���
�(�(����)>�)>�{�)K�L�	����T�Z�Z�3�3�M�B�C��y�$�*�*�d�l�l�C�����D�+�&��������
�
�*�+��>�>�$�'��'/�0�!��1��0�
�0�����
�.�����
�.��1s�C;c��|jd�}|j|jjd��|j	d�|j
j
�|jd�}|j	d�|j
j
�|j
j
�|j	d�|j|�}|j|�}|jt|�d�|j|ddd�|j|ddd	�|j|dd
ddg�|j||�|j	d�|j
j
�|j
j
�|j	d
�|j|�}|j|�}|jt|�d�|j|ddd�|j|ddd	�|j|dd
ddg�|j||�|j	d�|j
j
�|j
j
�|j	d�|j|�}|j|�}|jt|�d�|j|ddd�|j|ddd	�|j|dd
ddg�|j||�y)Nr{r�r�r|zPART #somechannel
r�r�useruser!useruser@realmname�PARTr�r��leavingz(PART #somechannel :goodbye stupidheads
zgoodbye stupidheadssJOIN #somechannel
s)PART #somechannel :goodbye stupidheads1
zgoodbye stupidheads1�
r�r#r,rNrwrmr�r�r$r��r*rDr�r�r�s     r2�	testLeavezIRCProtocolTests.testLeaveWs����!�!�*�-�����T�Z�Z�3�3�M�B�C��
�
�*�+��������"�"�;�/��
���+�,�������
�������
�
�*�+��>�>�$�'�����u�%������X���*�����!��Q��)F�G�����!��Q���0�����!��Q��.�)�)D�E�����5�)�	
�
�
�*�+�������
�������
�
�?�@��>�>�$�'�����u�%������X���*�����!��Q��)F�G�����!��Q���0�����!��Q��.�:O�)P�Q�����5�)��
�
�+�,�������
�������
�
�A�B��>�>�$�'�����u�%������X���*�����!��Q��)F�G�����!��Q���0�����!��Q��.�:P�)Q�R�����5�)r4c��|jd�}tjd�}d|jd<d|jd<d|jd<|j	|j
j
|��|jj�|jd	�|j|�}|j|d
dd�|j|d
d
d�|j|d
dgd��|j|dd
d�|j|ddgd��|jj�|jd�|j|�}|j|dd
d�|j|ddgd��|j|d
d
d�|j|d
dgd��y)Nr{r��This is a test topic.r��some_fellow�topic_authoriqˢ�
topic_dater�r�rrr�r�r�)r{r�r�r�r�)r{r�r��77777777�TOPIC #somechannel
)r�rr;r�r#r,rUrmr�rwr�r$)r*rDrQr�s    r2�testGetTopiczIRCProtocolTests.testGetTopic�s����!�!�*�-���
�
�m�,��5��
�
�7��%2��
�
�>�"�#+��
�
�<� ����T�Z�Z�0�0��7�8��������
�
�*�+��>�>�$�'������!��Q���5�����!��Q���/�	
����Q�K��N�Q�	
�	
����!��Q���/�����Q�K��N�S�	
�	
�������
�
�+�,��>�>�$�'������!��Q���/�����Q�K��N�Q�	
�	
����!��Q���/�����Q�K��N�S�	
r4c�l�|jd�}|j|jjd��}|j	d�|jd�}|j	d�|j
j
�|j
j
�|j	d�|j|�}|j|�}|j||�|j|ddd�|j|ddd	�|j|dd
ddg�|j
j
�d
|jd<|j	d�|j|�}|j|ddd�|j|dd
gd��|j|ddd�|j|dd
gd��|j
j
�|j	d�|j|�}|j|ddd�y)Nr{r�r�r|z,TOPIC #somechannel :This is the new topic.
rr�r��TOPICr�r��This is the new topic.i90r�r�r�)r|r�r�r�)r|r�r|�12345zTOPIC #asdlkjasd
�403)
r�r#r,rNrwrmr�r�r$r�)r*rDr�r�r�r�s      r2�testSetTopiczIRCProtocolTests.testSetTopic�s����!�!�*�-���*�*�4�:�:�+A�+A�-�+P�Q���
�
�*�+��"�"�;�/��
���+�,�������
������
���D�E��>�>�%�(�����t�$������5�)�����!��Q��)H�I�����!��Q���1�����!��Q��.�:R�)S�T�
������).�����&�
���,�-��>�>�%�(������!��Q���/�����Q�K��N�S�	
�	
����!��Q���/�����Q�K��N�O�	
�	������
���*�+��>�>�%�(������!��Q���/r4c��|jd�}|j|jjd��|j	d�|jd�}|j	d�|j
j
�|j
j
�|j	d�|j|�}|j|�}|j|�|jt|�d�|j|ddd�|j|ddd	d
�|j|dddd
g�y)Nr{r�r�r|z%PRIVMSG #somechannel :Hello, world.
r�rr�r����r�r�z
Hello, world.)r�r#r,rNrwrmr�r�r�r$r�r�s     r2�testGroupMessagez!IRCProtocolTests.testGroupMessage�s���!�!�*�-�����T�Z�Z�3�3�M�B�C��
�
�*�+��"�"�;�/��
���+�,�������
�������
�
�<�=��>�>�$�'�����u�%������"�����U��Q�'�����q��!��&C�D�����q��!��i��4�����q��!��~��&G�Hr4c��|jd�}|jd�}|jj�|jj�|jd�|j	|�}|j	|�}|j|�|j
t|�d�|j
|ddd�|j
|ddd�|j
|dddd	g�|jd
�|j	|�}|j
t|�d�|j
|ddd�|j
|ddd�|j
|ddgd
��y)Nr{r|z#PRIVMSG otheruser :Hello, monkey.
r�rr�r�r�zHello, monkey.z)PRIVMSG nousernamedthis :Hello, monkey.
r�401)r{�nousernamedthiszNo such nick/channel.)r�rmr�rwr�r�r$r�r�s     r2�testPrivateMessagez#IRCProtocolTests.testPrivateMessagesW���!�!�*�-���"�"�;�/��������
�������
�
�:�;��>�>�$�'�����u�%������"�����U��Q�'�����q��!��&C�D�����q��!��i�0�����q��!��{�4D�&E�F��
�
�@�A��>�>�$�'������X���*�����!��Q���5�����!��Q���/�����Q�K��N�T�	
r4c��|jd�}|jj�|jd�|j	|�}|jt
|�d�|j|ddd�y)Nr{zOPER user pass
r�r�491�r�rmr�rwr�r$r��r*rDr�s   r2�testOperzIRCProtocolTests.testOper!si���!�!�*�-���������
�
�'�(��>�>�$�'������X���*�����!��Q���/r4c�h�|jd�}|jj�|jd�|j	|�}|jt
|�d�|j|ddd�|j|ddd�|j|ddddg�y)	Nr{zMODE useruser
r�rr�221r��+r�r�s   r2�testGetUserModez IRCProtocolTests.testGetUserMode+s����!�!�*�-���������
�
�&�'��>�>�$�'������X���*�����!��Q���5�����!��Q���/�����!��Q��*�c�):�;r4c��|jd�}|jj�|jd�|j	|�}|jt
|�d�|j|ddd�y)Nr{zMODE useruser +abcd
r�r�472r�r�s   r2�testSetUserModez IRCProtocolTests.testSetUserMode7si���!�!�*�-���������
�
�,�-��>�>�$�'������X���*�����!��Q���/r4c�z�|jd�}|j|jjd��|j	d�|j
j
�|j	d�|j|�}|jt|�d�|j|ddd�y)Nr{r�r�zMODE #somechannel
r�r�324r�r�s   r2�testGetGroupModez!IRCProtocolTests.testGetGroupModeAs����!�!�*�-�����T�Z�Z�3�3�M�B�C��
�
�*�+��������
�
�*�+��>�>�$�'������X���*�����!��Q���/r4c�z�|jd�}|j|jjd��|j	d�|j
j
�|j	d�|j|�}|jt|�d�|j|ddd�y)Nr{�	groupname�JOIN #groupname
zMODE #groupname +abcd
r�rrr�r�s   r2�testSetGroupModez!IRCProtocolTests.testSetGroupModeOs����!�!�*�-�����T�Z�Z�3�3�K�@�A��
�
�(�)��������
�
�.�/��>�>�$�'������X���*�����!��Q���/r4c	��tjd�}|j|jj	|��g}dD]8}|j|�}|j
|�|djd��:|D]}|jj��|djd�|j|d�}|j|j|d��|j|j|d��gd�}|ddD]�\}}	}
|j|d	�|j|	d
�|
\}}}}
}}}}|j|d�|j|d�|j||v�|j|
d	�|j|d	�|j|�|j|d
�|j|d|z���|j|�|d\}}	}
|j|d	�|j|	d�|
\}}}|j|d�|j|d�|j|d�y)Nr	)r�r�r�r�r
rzWHO #groupname
r�r�r�352r�z
#groupname�Hz0 �315zEnd of /WHO list.)rr;r#r,rUr�r�rwrmr�r�r�r$�
assertTruer�)r*rQ�usersr��urDr��	wantusersr��coderv�myname�	theirname�	theirhost�theirserver�	theirnickr-�extra�channels                   r2�testWhozIRCProtocolTests.testWho]sM���
�
�k�*�����T�Z�Z�0�0��7�8���5�	3�D��"�"�4�(�A��L�L��O��"�I�O�O�1�2�	3��	#�D��N�N� � �"�	#�	�a����+�,��N�N�5��8�$���������a��1�2��������a��1�2�7�	�#$�S�b�6�	6��F�D�%����V�[�1����T�5�)��	
������������V�Y�/����U�L�1��O�O�I��2�3����Y��4����[�+�6����Y�'����T�3�'����U�D�9�$4�5�+	6�,	
����#���e����e������-�����u�%�!&����������+�����,�/����� 3�4r4c���|jd�}|jj�|j|jjd��}d�|_d|jd<|jd�|j|�}|jt|�d�|\}}|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd�|j|dd
d�|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|jj�|jd�|j|�}|jt|�d�|\}}|j|d
d�|j|dd
d�|j|ddd�|j|dd
d�|j|d
d�y)Nr��	somegroupc��td�S)N�)rrer4r2r�z+IRCProtocolTests.testList.<locals>.<lambda>�s
�����r4zthis is the topic woor�zLIST #somegroup
r�rrr��322�17r��323zEnd of /LISTzLIST
)r�rmr�r#r,rN�sizer�rwr�r$r�)r*rDrr��resp�end�fg1s       r2�testListzIRCProtocolTests.testList�s+���!�!�*�-���������(�(����)?�)?��)L�M�	�,�	��"9�	���w��	
�
�
�(�)��N�N�4� ������Q���#��	��c�����a��+�.�����a��%�(�����a����Z�0�����a����[�1�����a����T�*�����a����%<�=�����Q���-�����Q���'�����Q����J�/�����Q����N�3�������	
�
�
�:���N�N�4� ������Q���#����S�����Q���'�����Q����K�0�����Q����D�)�����Q����$;�<�����Q���'r4c�L�|jd�}tjd�}d�|_d|_tj
�dz
|_|j|jj|��|jj�|jd�|j|�}|jt|�d�|\}}}}}|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd�|j|dd
d	�|j|ddd�|j|ddd�|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd	�|j|dd
d�|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd�|j|dd
d�|j|ddd�|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd�|j|dd	�|j|d
d�|j|ddd�|j|dd
d�|j|ddd�y)Nr}�otherguyc�h�ttjd�tjd�g�S)N�groupA�groupB)�iterrr;rer4r2r�z,IRCProtocolTests.testWhois.<locals>.<lambda>�s%��d�
�]�]�8�
$�g�m�m�H�&=�>�'
�r4�
�zWHOIS otherguy
r�rrr��311r�r�r��*�312zHi mom!�317�15�10zseconds idle, signon time�319z#groupA #groupB�318zEnd of WHOIS list.)r�rr6r\�signOn�time�lastMessager#r,rIrmr�rwr�r$r�)	r*rDr*r��wuser�wserver�idle�channelsr&s	         r2�	testWhoiszIRCProtocolTests.testWhois�su���!�!�)�,���<�<�
�+��
������#�y�y�{�R�/������T�Z�Z�/�/��9�:��������
�
�'�(��N�N�4� ������Q���#�./�+��w��h������q��;�/�����q��5�)�����q��!��i�0�����q��!��j�1�����q��!��j�1�����q��!��k�2�����q��!��c�*�����q��!��j�1�������[�1�������U�+�������A��	�2�������A��
�3�������A���4�������A��	�2�����a��+�.�����a��%�(�����a����Y�/�����a����Z�0�����a����T�*�����a����T�*�����a����%@�A�����!��k�2�����!��e�,�����!��Q���3�����!��Q���4�����!��Q��):�;�����Q���-�����Q���'�����Q����I�.�����Q����J�/�����Q����$8�9r4rk)rbrcrdr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr(r@rer4r2rzrz�s����L��
J�1��� #�#�(S�)�5
�n/�(9*�v(
�T,0�\I�2
�<0�
<�0�0�0�15�f)(�V5:r4rzc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�TestMindc�<�g|_g|_g|_g|_yrk)�joins�parts�messagesr�)r*�a�kws   r2rszTestMind.__init__�s����
���
���
���	r4c�>�|jj||f�yrk)rDr�)r*rDrQs   r2�remote_userJoinedzTestMind.remote_userJoined�s���
�
���4��-�(r4c�@�|jj|||f�yrk)rEr�)r*rDrQ�reasons    r2�remote_userLeftzTestMind.remote_userLeft�s���
�
���4���/�0r4c�@�|jj|||f�yrk)rFr�)r*�sender�	recipientr�s    r2�remote_receivezTestMind.remote_receives���
�
���f�i��9�:r4c�>�|jj||f�yrk)r�r�)r*rQr�s   r2�remote_groupMetaUpdatezTestMind.remote_groupMetaUpdates���	�	���%���'r4N)rbrcrdrsrJrMrQrSrer4r2rBrB�s���)�1�;�(r4rBc�H�eZdZd�Zd�Zd�Zd�Zejd��Z	y)�PBProtocolTestsc��tjd�|_tj�|_t
j|j|j
g�|_tj|j�|_
|j|j_d|j_
tj�|_d|j_
t!j"d|j�|_t!j&d|j$j)�j*|j�|_y)NrTrri)rrr,rr�r�rr�r
�PBServerFactory�
serverFactory�_protocolFactoryro�unsafeTracebacks�PBClientFactory�
clientFactoryr�	listenTCP�
serverPort�
connectTCP�getHost�port�
clientConnr8s r2r�zPBProtocolTests.setUps����/�/��<��
��G�G�I����m�m�D�J�J�����?����/�/����<���&*�&;�&;����#�.2����+��/�/�1���.2����+�!�+�+�A�t�/A�/A�B���!�,�,�����0�0�2�7�7��9K�9K�
��r4c�N�tjd�|_|jS)Nr)r
�Broker�_serverProtocol)r*r�rHs   r2rYz PBProtocolTests._protocolFactorys��!�y�y��|����#�#�#r4c����t��|jj�fd��tt	|j
j�t	|jj��g�S)Nc�&���jd�Srk)�callback)�d3s�r2r�z*PBProtocolTests.tearDown.<locals>.<lambda>s������D�8I�r4)	r	re�notifyOnDisconnectr
rr^�
stopListeningrb�
disconnect)r*ris @r2�tearDownzPBProtocolTests.tearDownsX���
�Z�����/�/�0I�J���d�o�o�;�;�<��d�o�o�8�8�9��
�
�	
r4c�����|}t|t�r|jd�}tj||���j
j
||��jj|�}|j���fd��|S)N�asciic�<���jj���Srk)r\�login)�ign�credsrpr*s ���r2r�z1PBProtocolTests._loggedInAvatar.<locals>.<lambda>/s���$�"4�"4�":�":�5�$�"G�r4)
r�r��encoder�UsernamePasswordr�rIr,r@�addCallback)r*r%r�rp�	nameBytes�drss`  `  @r2�_loggedInAvatarzPBProtocolTests._loggedInAvatar(sl����	��d�C� ����G�,�I��,�,�Y��A�������Y��1��J�J�!�!�$�'��	�
�
�G�H��r4c#�jK�t�}|jdd|���}t�}|jdd|���}t�}|jdd|���}|jjd���|jjd���|j	d���}|j	d���}|j	d���|j	d���|j	d���|jd	d
i���|j
���|j
���y�w)N�onesp1�twosp2sthreesp3�foobarsbarfoostextshello, monkeys)rBryr,rN�join�send�leave)	r*�mindoner{�mindtwor|�	mindThree�threerZr[s	         r2�
testGroupszPBProtocolTests.testGroups2s�����*���(�(���w�?�?���*���(�(���w�?�?���J�	��*�*�8�U�I�F�F���j�j�$�$�X�.�.��j�j�$�$�Y�/�/����(�+�+�����)�,�,���h�h�x� � ��h�h�y�!�!��j�j��"�"��m�m�W�&7�8�9�9��n�n����n�n���s�D1D3N)
rbrcrdr�rYrmryr�inlineCallbacksr�rer4r2rUrU
s0��
�$�	
�������r4rU)#�__doc__r:�twisted.credrrr�twisted.internetrrr�twisted.internet.deferr	r
rr�twisted.spreadr
�twisted.testr�
twisted.trialr�
twisted.wordsrr�twisted.words.protocolsr�TestCaserrgrz�PBMindrB�setUnjellyableForClass�PBMindReferencerUrer4r2�<module>r�s�����6�6�4�4�Q�Q��&�"�)�'�o6��"�"�o6�d*�*�&W	:�x�(�(�W	:�t(�w�~�~�(�(����(�G�$;�$;�<�@�h�'�'�@r4

Zerion Mini Shell 1.0