Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_nntplib.cpython-312.opt-2.pyc

�

'Μg����ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZej d�ZddlmZmZddlmZ	ddlZej0j3ej0j5e�dd�Ze�
ej:ZnGd	�d
e�ZGd�d�ZejA�e!fZ"e�e"ejFfz
Z"Gd
�deejH�Z%ejLed�Gd�de%��Z'Gd�dejP�Z)d�Z*Gd�dej$�Z+Gd�d�Z,Gd�de,�Z-Gd�d�Z.Gd�de.�Z/Gd�d e/�Z0Gd!�d"e/�Z1Gd#�d$�Z2Gd%�d&e2e,ejH�Z3Gd'�d(e2e,ejH�Z4Gd)�d*e,ejH�Z5Gd+�d,e-ejH�Z6Gd-�d.ejH�Z7Gd/�d0ejH�Z8Gd1�d2ejH�Z9Gd3�d4�Z:ejLed�Gd5�d6e9��Z;Gd7�d8ejH�Z<e=d9k(rej|�yy#e$rdZY��(wxYw):�N)�support)�
socket_helper�warnings_helper�nntplib)�NNTP�	GroupInfo)�patch�certdatazkeycert3.pemc��eZdZ	dZy)�SSLErrorzThis will never be raised.N)�__name__�
__module__�__qualname__�reason���./usr/local/lib/python3.12/test/test_nntplib.pyrrs
��D�-�rrc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zej"dd�d��Zd�Zdd�Zej"dd�d��Zd�Zd�Zd�Zed��Zd�Zd�Zy)�NetworkedNNTPTestsMixinNc�v�|jj�}|jtt	|��y�N)�server�
getwelcome�assertEqual�str�type)�self�welcomes  r�test_welcomez$NetworkedNNTPTestsMixin.test_welcome*s(���+�+�(�(�*������d�7�m�,rc���|jj�\}}|j|jd�|�|D]!}|j	t
t
|���#y)Nz100 )r�help�
assertTrue�
startswithrrr)r�resp�lines�lines    r�	test_helpz!NetworkedNNTPTestsMixin.test_help.sM���k�k�&�&�(���e��������/��6��D����S�$�t�*�-�rc��|jj�\}}t|�dkDrO|jtt|d��|jtt|dj��yy�Nr)r�list�lenrrrr�group�rr$�groupss   r�	test_listz!NetworkedNNTPTestsMixin.test_list4s]���{�{�'�'�)���f��v�;��?����Y��V�A�Y��8����S�$�v�a�y���"7�8�rc��|jj|j�\}}t|�dkDrO|j	t
t
|d��|j	tt
|dj��yyr))	rr*�	GROUP_PATr+rrrrr,r-s   r�test_list_activez(NetworkedNNTPTestsMixin.test_list_active:sc���{�{�'�'����7���f��v�;��?����Y��V�A�Y��8����S�$�v�a�y���"7�8�rc��|jtj�5}|jj	d�ddd�j
j}|j|jd�|�y#1swY�AxYw)N�XYZZYz500 )	�assertRaisesr�NNTPPermanentErrorr�	_shortcmd�	exception�responser"r#)r�cmr$s   r�test_unknown_commandz,NetworkedNNTPTestsMixin.test_unknown_command@s^��
�
�
�w�9�9�
:�b��K�K�!�!�'�*�;��|�|�$�$���������/��6�;�
:�s�A<�<Bc�@�tjj�tjd��z
}|jj|�\}}t
|�dkDr=|j|dt�|j|djt�yy)N�)�daysr)�datetime�date�today�	timedeltar�	newgroupsr+�assertIsInstancerr,r)r�dtr$r.s    r�test_newgroupsz&NetworkedNNTPTestsMixin.test_newgroupsFsz���]�]�
 �
 �
"�X�%7�%7�Q�%?�
?���{�{�,�,�R�0���f��v�;��?��!�!�&��)�Y�7��!�!�&��)�/�/�3�7�rc�V���fd�}�jj�j�}||��j�j|��jj�j
�}||��jjd�}�j
|d�y)Nc�j���j|t��j�j|�yr)rDr�assertNotIn�
GROUP_NAME)�descrs �r�_check_descz=NetworkedNNTPTestsMixin.test_description.<locals>._check_descPs'����!�!�$��,����T�_�_�d�3rzzk.brrtt.baz�)r�descriptionrJ�assertIn�DESCr1r)rrLrKs`  r�test_descriptionz(NetworkedNNTPTestsMixin.test_descriptionOs����	4��{�{�&�&�t���7���D���
�
�d�i�i��&��{�{�&�&�t�~�~�6���D���{�{�&�&�~�6������r�"rc�p�|jj|j�\}}|j|j	d�xs|j	d�|�|j|t�||j}|j||jj|j��y)Nz215 z282 )
r�descriptionsr1r"r#rD�dictrJrrN)rr$�descsrKs    r�test_descriptionsz)NetworkedNNTPTestsMixin.test_descriptions_s����k�k�.�.�t�~�~�>���e�����O�O�F�#�>�t���v�'>��	F����e�T�*��T�_�_�%������t�{�{�6�6�t���G�Hrc��|jj|j�}|jdt	|��|\}}}}}|j||j�|j|t�|j|t�|j|t�|j||�|j|jd�|�y)N��211 )
rr,rJrr+rD�int�assertLessEqualr"r#)r�resultr$�count�first�lastr,s       r�
test_groupz"NetworkedNNTPTestsMixin.test_grouphs������"�"�4�?�?�3������C��K�(�*0�'��e�U�D�%��������0����e�S�)����e�S�)����d�C�(����U�D�)��������/��6rc���|jj�\}}|j|tj�|j	|j
d�|j
|j
d�y)Ni�i�)rr@rDr?�assertGreaterEqual�yearr[�rr$r@s   r�	test_datez!NetworkedNNTPTestsMixin.test_datessV���[�[�%�%�'�
��d����d�H�$5�$5�6�����	�	�4�0����T�Y�Y��-rc���|j|t�|j|j�hd��|j	�D]#}|j|t
t
d�f��%y)N>r@�from�subject�
references�:bytes�:lines�
message-id)rDrTrb�keys�valuesrr)r�art_dict�vs   r�_check_art_dictz'NetworkedNNTPTestsMixin._check_art_dictzsY�����h��-�����
�
��
/�	����"�A��!�!�!�c�4��:�%6�7�#rc�\�|jj|j�\}}}}}|jj|dz
|�\}}t	|�dk(r|jd�|d\}}|j
||dz
�|j||�|j|�y)NrXrzno articles retrieved)	rr,rJ�xoverr+�skipTestrbr[rq)	rr$r]r^r_�namer%�art_numros	         r�
test_xoverz"NetworkedNNTPTestsMixin.test_xover�s���)-���):�):�4�?�?�)K�&��e�U�D�$��k�k�'�'��q��$�7���e��u�:��?��M�M�1�2�!�!�H�����������2����W�d�+����X�&rTzHtemporarily skipped until a permanent solution is found for issue #28971c��|jj|j�\}}}}}|dz
}|jj|df�\}}|d\}}	|j	|	�|jj||f�\}}|d\}}	|j||�|j
||�|j	|	�y)N�
r���)rr,rJ�overrqrbr[)
rr$r]r^r_ru�startr%rvros
          r�	test_overz!NetworkedNNTPTestsMixin.test_over�s���*.���):�):�4�?�?�)K�&��e�U�D�$��r�	���k�k�&�&��t�}�5���e�!�!�H�������X�&��k�k�&�&��t�}�5���e�!�"�I���������/����W�d�+����X�&rc���|jj|j�\}}}}}|jjd|�\}}|D]$}|j	t
t
|d���&y)Nrh�)rr,rJ�xhdrrrr)rr$r]r^r_rur%r&s        r�	test_xhdrz!NetworkedNNTPTestsMixin.test_xhdr�sa��)-���):�):�4�?�?�)K�&��e�U�D�$��k�k�&�&�y�$�7���e��D����S�$�t�A�w�-�0�rc��|j|tj�|�|j|j|�|j
D]}|j|t��|j|j
dd�y)Nrz)�.s.
�.
)rDr�ArticleInfor�numberr%�bytesrI)rr$�articlervr&s     r�check_article_respz*NetworkedNNTPTestsMixin.check_article_resp�sl�����g�w�':�':�;������W�^�^�W�5��M�M�D��!�!�$��.�"�	
������r�*�,D�ErzFIXME: see bpo-32128c���|jj|j�\}}}}}|||dz
fD]"}	|jj|�\}}n|jd�|j|jd�|�|j|�|jj|�\}}	|j|jd�|�|j||	|�|jj|�\}}
|j|jd�|�|j||
|�d�}|jD�cgc]}||�s|��}
}|
jD�cgc]}||�s|��}}|j||
dgz|	jz�y#tj
$r'}|jjd�s�Yd}~���d}~wwxYwcc}wcc}w)	Nrz423 z(could not find a suitable article numberz221 z222 z220 c�$�|jd�S)NsX-Antivirus)r#)r&s r�<lambda>z@NetworkedNNTPTestsMixin.test_article_head_body.<locals>.<lambda>�s
������ ?rr)rr,rJ�headr�NNTPTemporaryErrorr9r#rtr"r��bodyr�r%r)rr$r]r^r_rurvr��er�r��denylistr&�filtered_head_lines�filtered_liness               r�test_article_head_bodyz.NetworkedNNTPTestsMixin.test_article_head_body�s���)-���):�):�4�?�?�)K�&��e�U�D�$��e�T�A�X�.�G�
�!�[�[�-�-�g�6�
��d�
�/�
�M�M�D�E��������/��6�����d�G�4��[�[�%�%�g�.�
��d��������/��6�����d�G�4����+�+�G�4�
��g��������/��6�����g�w�7�?��04�
�
�6�
��&.�t�n� $�
��6�+2�=�=�1�=�4�!)�$���=��1�����)<��u�)D�t�z�z�)Q�R��-�-�-�
��z�z�,�,�V�4����	
��$6��1s#�F+�G(�4G-�+G%�>G � G%c�����fd�}�j�jjd�|�jj���jj	�\}}||�y)Nc�l��|d}�j|ttf��jd|�y)N�LIST�OVERVIEW.FMT)rDr*�tuplerO)�caps�	caps_listrs  �r�_check_capsz>NetworkedNNTPTestsMixin.test_capabilities.<locals>._check_caps�s.����V��I��!�!�)�d�E�]�;��M�M�.�)�4r�)rbr�nntp_version�getcapabilities�capabilities)rr�r$r�s`   r�test_capabilitiesz)NetworkedNNTPTestsMixin.test_capabilities�sW���	5�	
������ 8� 8�!�<��D�K�K�/�/�1�2��[�[�-�-�/�
��d��D�rc�|�d}d}|jtj|jj||d��y)N�notarealuser�notarealpasswordF)�user�password�usenetrc)r5r�	NNTPErrorr�login)r�baduser�badpws   r�test_zloginz#NetworkedNNTPTestsMixin.test_zlogin�s=��!��"�����'�+�+�T�[�[�->�->�&���	�	Hrc�v�t|�}	|jj�d|_y#d|_wxYwr)rr�quit)r�clss  r�test_zzquitz#NetworkedNNTPTestsMixin.test_zzquit�s/���4�j��	��K�K�����C�J���C�J�s�/�	8c��d�}t|�D]?}|jd�s�t||�}t|�s�-t	||||���Ay)Nc�B��tj���fd��}|S)Nc�~��tj|j�5�|�ddd�y#1swYyxYwr)r�transient_internet�	NNTP_HOST)r�meths �r�wrappedzHNetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meth.<locals>.wrapped�s)���"�5�5�d�n�n�E���J�F�E�E�s�	3�<)�	functools�wraps)r�r�s` r�	wrap_methz7NetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meth�s%���
�_�_�T�
"�
�#�
��Nr�test_)�dirr#�getattr�callable�setattr)r�r�rur�s    r�wrap_methodsz$NetworkedNNTPTestsMixin.wrap_methods�sN��	���H�D��?�?�7�+���3��%�D��D�>��
�C��y���/�rc��|jt�5|j|jdd��ddd�y#1swYyxYw)NrF��timeoutr�)r5�
ValueError�
NNTP_CLASSr��rs r�test_timeoutz$NetworkedNNTPTestsMixin.test_timeouts2��
�
�
�z�
*��O�O�D�N�N�A��O�F�+�
*�
*�s	�>�Ac�����fd�}ttjd��}|j�|j|d<	|j|j
fi|����5|j
|��|j
�j��ddd�|j|��|j|j
fi|����5�j�ddd�|j|��y#1swY�nxYw#1swY�,xYw#t$rK}tjd|j�r%tjd|�d|j
�����d}~wwxYw)Nc�l��t�d�sy	�j�y#ttf$rYywxYw)N�fileFT)�hasattrr!�OSError�EOFError)rs�r�is_connectedzANetworkedNNTPTestsMixin.test_with_statement.<locals>.is_connected
s<����6�6�*��
����
����X�&�
��
�s�!�3�3Fr��ssl_context�(?i)KEY.TOO.SMALLzGot � connecting to )rTr�INTERNET_TIMEOUTr�r�r�r"r!�assertFalser�r�re�searchr�unittest�SkipTest)rr��kwargs�ssl_errrs    @r�test_with_statementz+NetworkedNNTPTestsMixin.test_with_statements7���	���,�,��
�����'�$(�$4�$4�F�=�!�	�$�T�_�_�T�^�^�>�v�>�F�������/�������
�.��
���\�^�,�$�T�_�_�T�^�^�>�v�>�F�����
�����\�^�,��������	��y�y�-�w�~�~�>��'�'�$�w�i�8.�.2�n�n�-?�)A�B�B���	�sH�D�6D�=D�D�!D�D	�D�D�D�	E,�!AE'�'E,r)r
rrr�rr'r/r2r;rFrQrVr`rerqrwr��skipIfr}r�r�r�r�r�r��classmethodr�r�r�rrrrr&s����K�-�.�9�9�7�8�#� I�	7�.�	8�	'��X�_�_�T�8�9�
'�9�
'�"1�F��X�_�_�T�1�2�S�3�S�<�H���0��0�&G�!rrc�@�eZdZdZdZdZdZeZe	d��Z
e	d��Zy)�NetworkedNNTPTestsznews.trigofacile.com�fr.comp.lang.pythonzfr.comp.lang.*�Pythonc	�~�tjd�ttjd��}|j�|j|d<tj|j�5	|j|jfi|��|_		ddd�y#t$rb}tjd|j�r'tj|�d|�d|j����t!|j��d}~wt"$r%tj|�d|j����wxYw#1swYyxYw)	N�networkFr�r�r�z got r�z  got EOF error on connecting to )r�requiresrTr�r�rr�r�r�rrr�r�rr�r��print�
EOF_ERRORS)r�r�r�s   r�
setUpClasszNetworkedNNTPTests.setUpClassAs%������#���,�,��
���?�?�&�$'�O�O�F�=�!�
�
-�
-�c�m�m�
<�
A�+�S�^�^�C�M�M�D�V�D��
�=�
<���
��9�9�1�7�>�>�B�"�+�+�s�e�5��	�B2�25�-�-�1B�-D�E�E��c�m�m�$����
A��'�'�3�%�0.�.1�m�m�->�)@�A�A�
A��=�
<�s+�+D3�-"B�	D0�"AC?�?1D0�0D3�3D<c�R�|j�|jj�yyr)rr�)r�s r�
tearDownClassz NetworkedNNTPTests.tearDownClassXs���:�:�!��J�J�O�O��"rN)r
rrr�rJr1rPrr�r�r�r�rrrr�r�8sC��&�I�&�J� �I��D��J��A��A�,���rr��requires SSL supportc��eZdZdZdZdZdZeedd�Z	dZ
dZe�>ej�Zejd�ej j"e_yy)�NetworkedNNTP_SSLTestsz
nntp.aioe.orgz	aioe.testzaioe.*�test�NNTP_SSLN�DEFAULT)r
rrr�rJr1rPr�rr�r/�
test_starttls�ssl�_create_unverified_contextr��set_ciphers�
TLSVersion�TLSv1_2�maximum_versionrrrr�r�]sp�� �I��J��I��D���*�d�3�J��I��M�
��4�c�4�4�6�����	�*�&)�n�n�&<�&<��#�rr�c�2�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zy)�
_NNTPServerIOc�(�tjj|�tj�|_tj�|_||_|jj|jj|j�yr)
�io�	RawIOBase�__init__�BytesIO�c2s�s2c�handlerr|�readline�	push_data)rr�s  rr�z_NNTPServerIO.__init__�sW��
�����d�#��:�:�<����:�:�<�����������4�8�8�,�,�d�n�n�=rc��y�NTrr�s r�readablez_NNTPServerIO.readable����rc��yrrr�s r�writablez_NNTPServerIO.writable�rrc���	|jj�}|jjdd�|jj|�|jj|�y)Nrr�)r��tell�seek�write)r�data�poss   rrz_NNTPServerIO.push_data�sF��<��h�h�m�m�o�����
�
�a��������t�����
�
�c�rc���	|jj�}|jj|�|jj|�|jj�t
|�Sr)r�r	rr
r��process_pendingr+)r�br
s   rrz_NNTPServerIO.write�sM��+��h�h�m�m�o�������q�����
�
�c�����$�$�&��1�v�
rc��	|jj�|jjt	|��}t	|�}||d||Sr)r�rr��readr+)r�bufr�ns    r�readintoz_NNTPServerIO.readinto�sD��1����$�$�&��H�H�M�M�#�c�(�#����F����B�Q���rN)	r
rrr�rrrrrrrrr�r�|s%���>�����rr�c�L�t|�}tj||�}||fSr)r�r��BufferedRWPair)r��sior�s   r�make_mock_filer�s*��
��
 �C����S�#�&�D���;�rc��eZdZdd�Zd�Zy)�
NNTPServerNc�B�||_||_|j|�yr)r��host�
_base_init)r�fr�
readermodes    rr�zNNTPServer.__init__�s����	���	����
�#rc�<�|jj�|`yr)r��closer�s r�_closezNNTPServer._close�s���	�	�����Irr)r
rrr�r#rrrrr�s��$�
rrc�2��eZdZdZ�fd�Z�fd�Zd�Z�xZS)�MockedNNTPTestsMixinNc�B��t�|��|j�yr��super�setUp�make_server�r�	__class__s �rr)zMockedNNTPTestsMixin.setUp�s���
��
�����rc�&��t�|��|`yr)r(�tearDownrr+s �rr.zMockedNNTPTestsMixin.tearDown�s���
�����Krc��|j�|_t|j�\|_}t	|dg|��i|��|_|j
S)Nztest.server)�
handler_classr�rrrr)r�argsr�r�s    rr*z MockedNNTPTestsMixin.make_server�sH���)�)�+���'����5����$� ��}�F�t�F�v�F����{�{�r)r
rrr0r)r.r*�
__classcell__�r,s@rr%r%�s����M���rr%c���eZdZ�fd�Z�xZS)�MockedNNTPWithReaderModeMixinc�F��t�|��|jd��y)NT)r r'r+s �rr)z#MockedNNTPWithReaderModeMixin.setUp�s���
��
�����D��)r)r
rrr)r2r3s@rr5r5�s
���*�*rr5c���eZdZ	dZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zdd�Zd�Zd�Zd d�Zd�Zd�Zdd�d�Zdd�d�ZdZdZedzezZdd�Zdd�Zdd�Zd�Zy)!�
NNTPv1Handlerz200 NNTP mock serverc�x�d|_d|_||_||_d|_d|_|j
�y)NFT)�in_body�
allow_posting�	_readline�
_push_data�
_logged_in�
_user_sent�handle_welcome)rrrs   rr|zNNTPv1Handler.start�s9�����!���!���#������������rc��t|dd�S)N�utf-8�surrogateescape)r�rrs  r�_decodezNNTPv1Handler._decode�s���4��"3�4�4rc���|jrm	|j�}|sy|jj|�|dk(rn�5	|j\}}||d|ji�d|_d|_d|_	|j|j��}|sy|j
d�stdj|���|dd}|j�^}}t|d|j�zd�}|�|j�n#	||�|jr||f|_g|_	��#d|_d|_d|_wxYw#t$r }tdj|��|�d}~wwxYw)	Nr�r�F�
z line doesn't end with \r\n: {!r}����handle_zcommand failed: {!r})r:r<r��append�
body_callbackrE�endswithr��format�splitr��upper�handle_unknown�	Exception)rr&r��tokens�cmdr�s      rrzNNTPv1Handler.process_pending�ss���<�<���~�~�'�����	�	� � ��&��8�#��
�
%�#�1�1���f��f�-�4�9�9�-�%)��"� ��	�$�����<�<���� 0�1�D����=�=��(� �!E�!L�!L�T�!R�S�S����9�D��:�:�<�L�C�&��4��S�Y�Y�[�!8�$�?�D��|��#�#�%�'��&�M��|�|�-1�6�\��*�$&��	�)��&*��"� ��	�$���� !�Q�$�%;�%B�%B�4�%H�I�q�P��Q�s$�!D4�E�4E�	E7�E2�2E7c��	d|_yr)r:r�s r�expect_bodyzNNTPv1Handler.expect_body
s��E���rc�(�	|j|�yr)r=rDs  rrzNNTPv1Handler.push_datas��#�����rc��	tj|�}dj|j��dz}|j	d�}|j|�y)NrGrB)�textwrap�dedent�join�
splitlines�encoder)r�lits  r�push_litzNNTPv1Handler.push_litsG��#��o�o�c�"���k�k�#�.�.�*�+�f�4���j�j��!�����s�rc�&�|jd�y)Nz	500 What?�r^r�s rrPzNNTPv1Handler.handle_unknowns���
�
�k�"rc�:�|j|j�yr)r^rr�s rr@zNNTPv1Handler.handle_welcomes���
�
�d�l�l�#rc�&�|jd�y�Nz205 Bye!r`r�s r�handle_QUITzNNTPv1Handler.handle_QUIT"s���
�
�j�!rc�&�|jd�y)N�111 20100914001155r`r�s r�handle_DATEzNNTPv1Handler.handle_DATE%s���
�
�*�+rc�r�|dk(r|jd�y|jdj|��y)Nr�z$211 486 761 1265 fr.comp.lang.pythonz411 No such group {})r^rM)rr,s  r�handle_GROUPzNNTPv1Handler.handle_GROUP(s0���)�)��M�M�@�A��M�M�0�7�7��>�?rc�&�|jd�y)Nz�            100 Legal commands
              authinfo user Name|pass Password|generic <prog> <args>
              date
              help
            Report problems to <root@example.org>
            .r`r�s r�handle_HELPzNNTPv1Handler.handle_HELP.s���
�
��	rNc��|�|jd�y|dk(r|jd�y|dk(r|jd�y|jd�y)N�412 No newsgroup selected�3000234�"223 3000234 <45223423@example.com>�<45223423@example.com>�223 0 <45223423@example.com>�430 No Such Article Foundr`�r�message_specs  r�handle_STATzNNTPv1Handler.handle_STAT7sM�����M�M�5�6�
�Y�
&��M�M�>�?�
�5�
5��M�M�8�9��M�M�5�6rc�&�|jd�y)N�*223 3000237 <668929@example.org> retrievedr`r�s r�handle_NEXTzNNTPv1Handler.handle_NEXTAs���
�
�B�Crc�&�|jd�y)N�,223 3000234 <45223423@example.com> retrievedr`r�s r�handle_LASTzNNTPv1Handler.handle_LASTDs���
�
�D�Erc�b�|�|jd�y|dk(r)|dk(r|jd�y|jd�y|dk(r|jd�y|dk(r@|d	k(r|jd
�y|dk(r|jd�y|jd
�y|jd�y)Na�                215 Newsgroups in form "group high low flags".
                comp.lang.python 0000052340 0000002828 y
                comp.lang.python.announce 0000001153 0000000993 m
                free.it.comp.lang.python 0000000002 0000000002 y
                fr.comp.lang.python 0000001254 0000000760 y
                free.it.comp.lang.python.learner 0000000000 0000000001 y
                tw.bbs.comp.lang.python 0000000304 0000000304 y
                .�ACTIVE�*distutils*z�                    215 Newsgroups in form "group high low flags"
                    gmane.comp.python.distutils.devel 0000014104 0000000001 m
                    gmane.comp.python.distutils.cvs 0000000000 0000000001 m
                    .zW                    215 Newsgroups in form "group high low flags"
                    .r�a                215 Order of fields in overview database.
                Subject:
                From:
                Date:
                Message-ID:
                References:
                Bytes:
                Lines:
                Xref:full
                .�
NEWSGROUPS�comp.lang.pythonz�                    215 Descriptions in form "group description".
                    comp.lang.python	The Python computer language.
                    .�comp.lang.python*z�                    215 Descriptions in form "group description".
                    comp.lang.python.announce	Announcements about the Python language. (Moderated)
                    comp.lang.python	The Python computer language.
                    .zW                    215 Descriptions in form "group description".
                    .z501 Unknown LIST keywordr`)r�action�params   r�handle_LISTzNNTPv1Handler.handle_LISTGs����>��M�M��
��x�
��
�%��
�
����
�
����~�
%��M�M�
�

��|�
#��*�*��
�
����-�-��
�
����
�
���
�M�M�4�5rc��|dk(r|dk(r|dk(r|jd�y|dk(r|dk(r|dk(r|jd�y|dk(r!|dvr|dk(r|jd	d
zdz�y|jd�y)
Nr��20100913�082004a                230 list of newsarticles (NNTP v2) created after Mon Sep 13 08:20:04 2010 follows
                <a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>
                <f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>
                .�100913a                230 list of newsarticles (NNTP v1) created after Mon Sep 13 08:20:04 2010 follows
                <a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>
                <f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>
                .)�20100101�100101�090000z
too long linei�z
.zK                230 An empty list of newsarticles follows
                .r`)rr,�date_str�time_strs    r�handle_NEWNEWSzNNTPv1Handler.handle_NEWNEWS}s���
�'�'�H�
�,B��H�$��M�M��
�
�)�)�h�(�.B��H�$��M�M��
�
�)�)��0�0��(�"��M�M�/�D�0�� �
!�
�M�M��
rc�T�|dk(r|jd�y|jd�y)Nz57-59uK224 Overview information for 57-58 follows
57	Re: ANN: New Plone book with strong Python (and Zope) themes throughout	Doug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>	Sat, 19 Jun 2010 18:04:08 -0400	<4FD05F05-F98B-44DC-8111-C6009C925F0C@gmail.com>	<hvalf7$ort$1@dough.gmane.org>	7103	16	Xref: news.gmane.io gmane.comp.python.authors:57
58	Looking for a few good bloggers	Doug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>	Thu, 22 Jul 2010 09:14:14 -0400	<A29863FA-F388-40C3-AA25-0FD06B09B5BF@gmail.com>		6683	16	
59	Re: Message d'erreur incompréhensible (par moi)	Eric Brunel <eric.brunel@pragmadev.nospam.com>	Wed, 15 Sep 2010 18:09:15 +0200	<eric.brunel-2B8B56.18091515092010@news.wanadoo.fr>	<4c90ec87$0$32425$ba4acef3@reader.news.orange.fr>	1641	27	Xref: saria.nerim.net fr.comp.lang.python:1265
.
z1                224 No articles
                .r`rss  r�handle_XOVERzNNTPv1Handler.handle_XOVER�s.���7�"��M�M��
�4
�M�M��
r)r�c��|�@|jr"|jd�|j�y|jd�y|jd�||_y)Nz+340 Input article; end with <CR-LF>.<CR-LF>�440 Posting not permitted�240 Article received OK�r;r^rU�posted_body)rr�s  r�handle_POSTzNNTPv1Handler.handle_POST�sM���<��!�!��
�
�K�L�� � �"��
�
�9�:�
�M�M�3�4�#�D�rc���|�E|jr'|dk(r"|jd�|j�y|jd�y|jd�||_y)N�+<i.am.an.article.you.will.want@example.com>z%335 Send it; end with <CR-LF>.<CR-LF>�435 Article not wanted�235 Article transferred OKr�)r�
message_idr�s   r�handle_IHAVEzNNTPv1Handler.handle_IHAVE�sV���<��"�"��K�K��
�
�E�F�� � �"��
�
�6�7�
�M�M�6�7�#�D�rz�        From: "Demo User" <nobody@example.net>
        Subject: I am just a test article
        Content-Type: text/plain; charset=UTF-8; format=flowed
        Message-ID: <i.am.an.article.you.will.want@example.com>ui        This is just a test article.
        ..Here is a dot-starting line.

        -- Signed by André.z

c��|�|jd�n@|dk(r|jd�n)|dk(r|jd�n|jd�y|j|j�|jd�y)N�"220 3000237 <45223423@example.com>rp�220 0 <45223423@example.com>rn�"220 3000234 <45223423@example.com>rr�.)r^�sample_articlerss  r�handle_ARTICLEzNNTPv1Handler.handle_ARTICLE�sn�����M�M�>�?�
�5�
5��M�M�8�9�
�Y�
&��M�M�>�?��M�M�5�6���
�
�d�)�)�*��
�
�c�rc��|�|jd�n@|dk(r|jd�n)|dk(r|jd�n|jd�y|j|j�|jd�y)N�"221 3000237 <45223423@example.com>rp�221 0 <45223423@example.com>rn�"221 3000234 <45223423@example.com>rrr�)r^�sample_headrss  r�handle_HEADzNNTPv1Handler.handle_HEAD��n�����M�M�>�?�
�5�
5��M�M�8�9�
�Y�
&��M�M�>�?��M�M�5�6���
�
�d�&�&�'��
�
�c�rc��|�|jd�n@|dk(r|jd�n)|dk(r|jd�n|jd�y|j|j�|jd�y)N�"222 3000237 <45223423@example.com>rp�222 0 <45223423@example.com>rn�"222 3000234 <45223423@example.com>rrr�)r^�sample_bodyrss  r�handle_BODYzNNTPv1Handler.handle_BODY�r�rc�&�|jr|jd�y|dk(r7|jr|jd�y|jd�d|_y|dk(r|jd�d|_ytdj	|���)	Nz502 Already Logged Inr�z 482 User Credential Already Sentz381 Password RequiredT�passz281 Login SuccessfulzUnknown cred type {})r>r^r?rQrM)r�	cred_typers   r�handle_AUTHINFOzNNTPv1Handler.handle_AUTHINFO
sy���?�?��M�M�1�2�
�&�
 �����
�
�@�A��
�
�5�6�"&���
�&�
 ��M�M�0�1�"�D�O��2�9�9�)�D�E�Err�NN)r
rrrr|rErrUrr^rPr@rdrgrirkrurxr{r�r�r�r�r�r�r�r�r�r�r�r�rrrr8r8�s����$�G��5�$'�L���#�$�"�,�@��7�D�F�46�l�>�@#'�
$�04�$�C�K�"�K�!�6�)�K�7�N����
Frr8c�"�eZdZ	d�Zd�Zdd�Zy)�
NNTPv2Handlerc��d}|js!|j|jd��y|j|jd��y)Na            101 Capability list:
            VERSION 2 3
            IMPLEMENTATION INN 2.5.1{}
            HDR
            LIST ACTIVE ACTIVE.TIMES DISTRIB.PATS HEADERS NEWSGROUPS OVERVIEW.FMT
            OVER
            POST
            READER
            .z
            AUTHINFO USERrM)r>r^rM�r�fmts  r�handle_CAPABILITIESz!NNTPv2Handler.handle_CAPABILITIESs<��	������M�M�#�*�*�%B�C�D��M�M�#�*�*�R�.�)rc��td��)Nz3MODE READER sent despite READER has been advertised)rQ)r�_s  r�handle_MODEzNNTPv2Handler.handle_MODE.s���M�N�NrNc�$�|j|�Sr)r�rss  r�handle_OVERzNNTPv2Handler.handle_OVER1s��� � ��.�.rr)r
rrr�r�r�rrrr�r�s��,�*�"O�/rr�c� ��eZdZ	�fd�Z�xZS)�CapsAfterLoginNNTPv2Handlerc�^��|js|jd�yt�|�
�y)Nz480 You must log in.)r>r^r(r�r+s �rr�z/CapsAfterLoginNNTPv2Handler.handle_CAPABILITIES8s"�������M�M�0�1��G�'�)r)r
rrr�r2r3s@rr�r�5s���=�*�*rr�c� �eZdZ	d�Zd�Zd�Zy)�ModeSwitchingNNTPv2Handlerc��d|_y�NF)�	_switchedr�s rr�z#ModeSwitchingNNTPv2Handler.__init__Bs	����rc��d}|jr!|j|jd��y|j|jd��y)Na            101 Capability list:
            VERSION 2 3
            IMPLEMENTATION INN 2.5.1
            HDR
            LIST ACTIVE ACTIVE.TIMES DISTRIB.PATS HEADERS NEWSGROUPS OVERVIEW.FMT
            OVER
            POST
            {}READER
            .rMzMODE-)r�r^rMr�s  rr�z.ModeSwitchingNNTPv2Handler.handle_CAPABILITIESEs;��	���>�>��M�M�#�*�*�R�.�)��M�M�#�*�*�W�-�.rc�4�d|_|jd�y)NTz200 Posting allowed)r�r^)r�whats  rr�z&ModeSwitchingNNTPv2Handler.handle_MODEUs������
�
�+�,rN)r
rrr�r�r�rrrr�r�?s��.��/� -rr�c����eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdZd�Zd�Zd�Z d�Z!d �Z"d!�Z#�xZ$S)"�NNTPv1v2TestsMixinc�"��t�|��yr)r(r)r+s �rr)zNNTPv1v2TestsMixin.setUp]s���
��
�rc�x�|j|jj|jj�yr)rrrr�r�s rrzNNTPv1v2TestsMixin.test_welcome`s&��������,�,�d�l�l�.B�.B�Crc���|jdk(r&|jd|jj�|jj	dd�|jd|jj�y)Nr��AUTHINFO�testuser�testpw)r�rOr�_capsr�rIr�s r�
test_authinfoz NNTPv1v2TestsMixin.test_authinfocsX������!��M�M�*�d�k�k�&7�&7�8������*�h�/�	
����T�[�[�%6�%6�7rc��|jj�\}}|j|d�|j|tjdddddd��y)Nrf���	�r��7)rr@rr?rds   rrezNNTPv1v2TestsMixin.test_dateksN���[�[�%�%�'�
��d�����3�4�����x�0�0��q�"�a��R�H�Irc���|j|jj�|jj	�}|j|d�|j
|jj�yrc)r�r�closedrr�rr")rr$s  r�	test_quitzNNTPv1v2TestsMixin.test_quitpsN����������)��{�{���!������z�*���������(rc��|jj�\}}|j|d�|j|gd��y)Nz100 Legal commands)z8  authinfo user Name|pass Password|generic <prog> <args>z  datez  helpz%Report problems to <root@example.org>)rr!r)rr$r!s   rr'zNNTPv1v2TestsMixin.test_helpvs>���[�[�%�%�'�
��d�����3�4����� 
�	rc	�r�|jj�\}}|jt|�d�|d}|j|t	dddd��|jjd�\}}|jt|�d�|d	}|j|t	d
ddd��y)
N�r�comp.lang.python.announce�
0000001153�
0000000993�mr~r�rz!gmane.comp.python.distutils.devel�
0000014104�
0000000001)rr*rr+r)rr$r.�gs    rr/zNNTPv1v2TestsMixin.test_list�s����{�{�'�'�)���f�����V��a�(��1�I�������1�<�"�C�
)�	*��{�{�'�'�
�6���f�����V��a�(��1�I�������9�<�"�C�
)�	*rc�*�|jjd�\}}}|j|d�|j|d�|j|d�|jjd�\}}}|j|d�|j|d�|j|d�|jtj
�5}|jjd�ddd�|jjjd�|jtj
�5}|jj�ddd�|j|jjd�y#1swY��xYw#1swY�<xYw)	N��-rorprqrz<non.existent.id>rrrm)r�statrr5rr�r8r9)rr$rvr�r:s     r�	test_statzNNTPv1v2TestsMixin.test_stat�s>��$(�K�K�$4�$4�W�$=�!��g�z�����C�D�����'�*�����%=�>�$(�K�K�$4�$4�5M�$N�!��g�z�����=�>�����!�$�����%=�>�
�
�
�w�9�9�
:�b��K�K���0�1�;�������.�.�0K�L�
�
�
�w�9�9�
:�b��K�K����;�������.�.�0K�L�;�
:��;�
:�s�
E=�3F	�=F�	Fc��|jj�\}}}|j|d�|j|d�|j|d�y)Nrw��-z<668929@example.org>)r�nextr�rr$rvr�s    r�	test_nextzNNTPv1v2TestsMixin.test_next�sM��$(�K�K�$4�$4�$6�!��g�z�����K�L�����'�*�����%;�<rc��|jj�\}}}|j|d�|j|d�|j|d�y)Nrzr�rp)rr_rr�s    r�	test_lastzNNTPv1v2TestsMixin.test_last�sM��$(�K�K�$4�$4�$6�!��g�z�����M�N�����'�*�����%=�>rc��|jjd�}|j|d�|jjd�}|j|d�y)Nr��The Python computer language.�comp.lang.pythonxrM)rrNr)rrKs  rrQz#NNTPv1v2TestsMixin.test_description�sM���{�{�&�&�'9�:������>�?��{�{�&�&�':�;������r�"rc�R�|jjd�\}}|j|d�|j|ddi�|jjd�\}}|j|ddd��|jjd�\}}|j|i�y)Nr�z-215 Descriptions in form "group description".r�r�z4Announcements about the Python language. (Moderated))r�r�r�)rrSrr-s   rrVz$NNTPv1v2TestsMixin.test_descriptions�s����{�{�/�/�0B�C���f�����N�O������ ?�"�	��{�{�/�/�0C�D���f����� ?�)_�"�	��{�{�/�/�0C�D���f������$rc�8�|jjd�\}}}}}|j|jd�|�|j	|d�|j	|d�|j	|d�|j	|d�|jtj�5}|jjd�ddd�j}|j|jjd�|j�y#1swY�KxYw)Nr�rYi�i�i�zcomp.lang.python.develz411 No such group)
rr,r"r#rr5rr�r8r9)rr$r]r^r_r,r:�excs        rr`zNNTPv1v2TestsMixin.test_group�s���*.�+�+�*;�*;�<Q�*R�'��e�U�D�%��������/��6������$�����t�$������$����� 5�6�
�
�
�w�9�9�
:�b��K�K���6�7�;��l�l��������/�/�0C�D����	&�;�
:�s�*D�Dc��tjdddddd�}|jjd|�\}}dj|j�}|j||�|j|d	d
g�tjdddddd�}|jjd|�\}}|j|d�|j|g�y)
Nr�r��
���r�zS230 list of newsarticles (NNTP v{0}) created after Mon Sep 13 08:20:04 2010 followszB<a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>zB<f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>r�z)230 An empty list of newsarticles follows)r?r�newnewsrMr�r)rrEr$�ids�expecteds     r�test_newnewszNNTPv1v2TestsMixin.test_newnews�s���
�
�
�t�Q��A�r�1�
5���K�K�'�'�(:�B�?�	��c�
=��f�T�&�&�'�	�	
����x�(�����P�P��	�
�
�
�t�Q��A�r�1�
5���K�K�'�'�(=�r�B�	��c�����J�K�����b�!rc��|jt|�d�|j|djd�d�|j|dd�|j|dd�|j|d	d
�y)Nr�rzrBu-- Signed by André.rHr���s.Here is a dot-starting line.���sThis is just a test article.)rr+�decode�rr%s  r�_check_article_bodyz&NNTPv1v2TestsMixin._check_article_body�st������U��Q�'�����r��)�)�'�2�4J�K�����r��C�(�����r��$D�E�����r��$C�Drc��|jt|�d�|j|dd�|j|dd�y)Nr�rs&From: "Demo User" <nobody@example.net>�s7Message-ID: <i.am.an.article.you.will.want@example.com>)rr+rs  r�_check_article_headz&NNTPv1v2TestsMixin._check_article_head�s@������U��Q�'�����q��#L�M�����q��#]�^rc��|jt|�d�|j|dd�|j|dd�|j|dd�y)Nr�r�rr)rr+rrrs  r�_check_article_dataz&NNTPv1v2TestsMixin._check_article_data�sR������U��Q�'�� � ��r���+�� � ��r�s��,�����q��3�'rc�n�|jj�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|j	t
j�5}|jjd�ddd�|jjjd	�y#1swY�0xYw)
Nr�r�rpr�r�r�r�<non-existent@example.com>rr)	rr�rr
r5rr�r8r9�rr$�inforvr�r%r:s       r�test_articlezNNTPv1v2TestsMixin.test_article�s���[�[�(�(�*�
��d�����C�D�%)�"���U�����'�*�����%=�>�� � ��'��[�[�(�(��1�
��d�����C�D�%)�"���U�����'�*�����%=�>�� � ��'��[�[�(�(�)A�B�
��d�����=�>�%)�"���U�����!�$�����%=�>�� � ��'�
�
�
�w�9�9�
:�b��K�K��� <�=�;�������.�.�0K�L�;�
:��� F+�+F4c���tj�}|jj|��\}}|j	|d�|\}}}|j	|d�|j	|d�|j	|g�|j�}|j
|jd�t|��|j
|jd�t|��y)N�r�r�r�rp�KFrom: "Demo User" <nobody@example.net>
Subject: I am just a test article
�UThis is just a test article.
.Here is a dot-starting line.

-- Signed by André.
)
r�r�rr�r�getvaluer"r#�asciirL�rrr$rrvr�r%rs        r�test_article_filez$NNTPv1v2TestsMixin.test_article_files����J�J�L���[�[�(�(�a�(�0�
��d�����C�D�%)�"���U�����'�*�����%=�>������#��z�z�|��������
5���T�{�	�	
����
�
�
.��
�T�{�	rc�n�|jj�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|j	t
j�5}|jjd�ddd�|jjjd	�y#1swY�0xYw)
Nr�r�rpr�r�r�rrrr)	rr�rrr5rr�r8r9rs       r�	test_headzNNTPv1v2TestsMixin.test_head ����[�[�%�%�'�
��d�����C�D�%)�"���U�����'�*�����%=�>�� � ��'��[�[�%�%�g�.�
��d�����C�D�%)�"���U�����'�*�����%=�>�� � ��'��[�[�%�%�&>�?�
��d�����=�>�%)�"���U�����!�$�����%=�>�� � ��'�
�
�
�w�9�9�
:�b��K�K���9�:�;�������.�.�0K�L�;�
:�rc���tj�}|jj|��\}}|j	|d�|\}}}|j	|d�|j	|d�|j	|g�|j�}|j
|jd�t|��|j|jd�t|��y)Nrr�r�rprr)r�r�rr�rrr"r#rr�rLrs        r�test_head_filez!NNTPv1v2TestsMixin.test_head_file;s����J�J�L���[�[�%�%�1�%�-�
��d�����C�D�%)�"���U�����'�*�����%=�>������#��z�z�|��������
5���T�{�	�	
������
.��
�T�{�	rc�n�|jj�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|jjd�\}}|j|d�|\}}}|j|d�|j|d�|j|�|j	t
j�5}|jjd�ddd�|jjjd	�y#1swY�0xYw)
Nr�r�rpr�r�r�rrrr)	rr�rrr5rr�r8r9rs       r�	test_bodyzNNTPv1v2TestsMixin.test_bodyOrrc���tj�}|jj|��\}}|j	|d�|\}}}|j	|d�|j	|d�|j	|g�|j�}|j
|jd�t|��|j|jd�t|��y)Nrr�r�rprr)r�r�rr�rrr�r#rr"rLrs        r�test_body_filez!NNTPv1v2TestsMixin.test_body_filejs����J�J�L���[�[�%�%�1�%�-�
��d�����C�D�%)�"���U�����'�*�����%=�>������#��z�z�|��������
5���T�{�	�	
����
�
�
.��
�T�{�	rc�Z�|j|jd�|�|jt|�d�|d\}}|j|d�|j|ddddd	d
ddd
��|d\}}|j|dd�|d\}}|j|dd�y)Nz224 r
r�9zEDoug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>zGRe: ANN: New Plone book with strong Python (and Zope) themes throughoutzSat, 19 Jun 2010 18:04:08 -0400z0<4FD05F05-F98B-44DC-8111-C6009C925F0C@gmail.com>z<hvalf7$ort$1@dough.gmane.org>�7103�16z*news.gmane.io gmane.comp.python.authors:57)rgrhr@rlrirjrk�xrefrr)r�rh�0Re: Message d'erreur incompréhensible (par moi))r"r#rr+)rr$�	overviewsrvr{s     r�check_over_xover_respz(NNTPv1v2TestsMixin.check_over_xover_resp~s����������/��6�����Y���+�!�!��
�������"�%�����[�`�5�L�:���@�	 �		�"�!��
�������f��t�,�!�!��
�������i��K�	Mrc�f�|jjdd�\}}|j||�y)Nr&�;)rrsr,�rr$r+s   rrwzNNTPv1v2TestsMixin.test_xover�s,���+�+�+�+�B��3���i��"�"�4��3rc�d�|jjd�\}}|j||�y)N)r&r.)rr{r,r/s   rr}zNNTPv1v2TestsMixin.test_over�s*���+�+�*�*�8�4���i��"�"�4��3rsFrom: "Demo User" <nobody@example.net>
Subject: I am just a test article
Content-Type: text/plain; charset=UTF-8; format=flowed
Message-ID: <i.am.an.article.you.will.want@example.com>

This is just a test article.
.Here is a dot-starting line.

-- Signed by André.
c�8�|jj}|jt|�d�|j|dd�|j|dd�|j|dd�|j|dd	�|j|d
d�y)Nryrzr�rHs-- Signed by André.
r�
rs ..Here is a dot-starting line.
rs(From: "Demo User" <nobody@example.net>
)r�r�rr+rs  r�_check_posted_bodyz%NNTPv1v2TestsMixin._check_posted_body�s������(�(������U��R�(�����r��H�-�����r��$E�F�����r��G�,�����r��$I�J�����q��#P�Qrc��|j}|||�fz}d|j_||�}|j�|jj	dd�}|||�fz}d|j_||�}|j�|S)Nr2�
)�sample_postr�r�r3�replace)r�func�file_factoryr1�post�	func_argsr$s       r�_check_post_ihave_subz(NNTPv1v2TestsMixin._check_post_ihave_sub�s��������L��.�0�0�	�#'���� ��Y������!����'�'���7���L��.�0�0�	�#'���� ��Y������!��rc���|j|g|��dti�}|j||�|j|g|��dti�}|j||�|j|g|��dtj
i�}|j||�d�}|j|g|��d|i�}|j||�d�}|j|g|��d|i�}|j||�y)Nr9c�8�t|jd���S)NT��keepends��iterr[�rs r�	iterlinesz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlines�s������d��3�4�4rc�8�t|jd���S)NFr?rArCs rrDz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlines�s������e��4�5�5r)r<r�r�	bytearrayr�r�)rr8�success_respr1r$rDs      r�check_post_ihavez#NNTPv1v2TestsMixin.check_post_ihave�s���)�t�)�)�$�J��J�E�J������|�,�)�t�)�)�$�N��N�I�N������|�,�)�t�)�)�$�O��O�B�J�J�O������|�,�	5�)�t�)�)�$�N��N�I�N������|�,�	6�)�t�)�)�$�N��N�I�N������|�,rc�p�|j|jjd�d|j_|jtj�5}|jj|j�ddd�|jjjd�y#1swY�0xYw)Nr�Fr�)rHrr:r�r;r5rr�r6rr8r9�rr:s  r�	test_postzNNTPv1v2TestsMixin.test_post�s������d�k�k�.�.�0I�J�%*����"�
�
�
�w�9�9�
:�b��K�K���T�-�-�.�;�������.�.�4�	6�;�
:�s�&B,�,B5c�R�|j|jjdd�|jtj
�5}|jjd|j�ddd�|jjjd�y#1swY�0xYw)Nr�r�z<another.message.id>r�)
rHr�ihaver5rr�r6rr8r9rJs  r�
test_ihavezNNTPv1v2TestsMixin.test_ihave�s�����d�k�k�/�/�1M�K�	M�
�
�
�w�9�9�
:�b��K�K���4�d�6F�6F�G�;�������.�.�1�	3�;�
:�s�'B�B&c��tjdddddd�}|jtj|jj
d|�y)Nr�rr�rr�)r?r5r�
NNTPDataErrorrr�)rrEs  r�test_too_long_linesz&NNTPv1v2TestsMixin.test_too_long_lines�sE��
�
�
�t�Q��1�a��
3�����'�/�/��+�+�-�-�/A�2�	Gr)%r
rrr)rr�rer�r'r/r�r�r�rQrVr`rrrr
rrrr r"r$r,rwr}r6r3r<rHrKrNrQr2r3s@rr�r�[s�����D�8�J�
)��*�M� =�?�#�%�&�"�&E�_�
(�M�6�*M�6�(M�6�(M�*4�4�	*��	R�� -�*6�3�Grr�c��eZdZ	dZeZd�Zy)�NNTPv1Testsrc���|jj�}|j|i�|j|jjd�|j|jjd�y)Nr�rr�rr��nntp_implementation�rr�s  r�	test_capszNNTPv1Tests.test_caps�sX���{�{�*�*�,������r�"�������1�1�1�5�������8�8�$�?rN)r
rrr�r8r0rXrrrrSrS�s��4��L�!�M�@rrSc��eZdZ	dZeZd�Zy)�NNTPv2Testsr�c��|jj�}|j|ddgddgdgggd�gggd��|j|jjd�|j|jjd	�y)
N�2�3�INNz2.5.1�USER)r}zACTIVE.TIMESzDISTRIB.PATS�HEADERSrr�)�VERSION�IMPLEMENTATIONr��HDRr��OVER�POST�READERr
z	INN 2.5.1rUrWs  rrXzNNTPv2Tests.test_capss����{�{�*�*�,�������S�z�$�g�.����>����
 �
	�	
������1�1�1�5�������8�8�+�FrN)r
rrr�r�r0rXrrrrZrZ�s��6��L�!�M�GrrZc��eZdZ	dZeZd�Zy)�CapsAfterLoginNNTPv2Testsr�c���|j|jji�|jjdd�|j	d|jj�y)Nr�r�ra)rrr�r�rOr�s r�test_caps_only_after_loginz4CapsAfterLoginNNTPv2Tests.test_caps_only_after_loginsH��������*�*�B�/������*�h�/��
�
�i����!2�!2�3rN)r
rrr�r�r0rjrrrrhrhs��M��L�/�M�4rrhc��eZdZ	dZeZd�Zy)�SendReaderNNTPv2Testsr�c�P�|jd|jj�y)Nrf)rOrr�r�s r�(test_we_are_in_reader_mode_after_connectz>SendReaderNNTPv2Tests.test_we_are_in_reader_mode_after_connect&s���
�
�h���� 1� 1�2rN)r
rrr�r�r0rnrrrrlrls��-��L�.�M�3rrlc�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	jed�d��Zy	)
�	MiscTestsc����fd�}|dd�|dd�|dd�|dd�|dd�|d	d
�|dd�y)Nc�P���jtj|�|�yr)rr�
decode_header)�arrs  �r�givesz+MiscTests.test_decode_header.<locals>.gives-s������W�2�2�1�5�q�9rrMza plain headerz with extra  spaces z%=?ISO-8859-15?Q?D=E9buter_en_Python?=uDébuter en Pythonz=?utf-8?q?Re=3A_=5Bsqlite=5D_probl=C3=A8me_avec_ORDER_BY_sur_des_cha?= =?utf-8?q?=C3=AEnes_de_caract=C3=A8res_accentu=C3=A9es?=uPRe: [sqlite] problème avec ORDER BY sur des chaînes de caractères accentuéesz,Re: =?UTF-8?B?cHJvYmzDqG1lIGRlIG1hdHJpY2U=?=uRe: problème de matricer*r�rrus` r�test_decode_headerzMiscTests.test_decode_header,sh���	:�
�b�2��
�� 0�1�
�$�&<�=�
�5�7K�L�
�J�`�	b�	�<�(�	*�	�@�@�	Brc��gd�}|jtj|�gd��gd�}|jtj|�gd��gd�}|jtj|�gd��gd�}|jtj|�gd��gd�}|jtj|�gd��gd�}|jtj|�gd	��y)
N)�Subject:�From:�Date:�Message-ID:�References:rjrk)rhrgr@rlrirjrk)ryrzr{r|r}�Bytes:�Lines:)zsubject:zFROM:zDaTe:zmessage-ID:r}zBYTES:r)	ryrzr{r|r}rjrk�	Xref:fullzDistribution:full)	rhrgr@rlrirjrkr)�distribution)	ryrzr{r|r}r~rz	Xref:FULLzDistribution:FULL)ryrzr{r|r}r~rr��rhrgr@rlrirjrkr))rr�_parse_overview_fmtrs  r�test_parse_overview_fmtz!MiscTests.test_parse_overview_fmt<s���4������4�4�U�;�
!�	"�4������4�4�U�;�
!�	"�4������4�4�U�;�
!�	"�&��	
����4�4�U�;�
9�	:�&��	
����4�4�U�;�
9�	:�A������4�4�U�;�
)�	*rc���tjdgz}dg}tj||�}|\\}}|j|d�|j|dddddd	d
dd��d
g}tj||�}|\\}}|j|dd�dg}tj||�}|\\}}|j|dd�|j|dd�y)Nr)z�3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	<45454@example.net>	1234	17	Xref: news.example.com misc.test:3000363r�zI am just a test articlez "Demo User" <nobody@example.com>z6 Oct 1998 04:38:40 -0500rpz<45454@example.net>�1234�17z"news.example.com misc.test:3000363r�z�3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	<45454@example.net>	1234	17		z�3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	 	1234	17	Xref: 	ri� rM)r�_DEFAULT_OVERVIEW_FMT�_parse_overviewr)rr�r%�overviewrv�fieldss      r�test_parse_overviewzMiscTests.test_parse_overviewds���+�+�v�h�6��
;�
���*�*�5�#�6��%����&�����'�*�����1�6�/�2�/���8�	"
�		�
�
���*�*�5�#�6��%����&��������.�
�
���*�*�5�#�6��%����&������-�s�3��������,rc
����fd�}|dddddddd�|d	d
dddddd�|dd
dddddd�|dd
d
ddddd�y)Nc�r���jtj||�tj|��yr)rr�_parse_datetimer?)rtr�crs   �rruz,MiscTests.test_parse_datetime.<locals>.gives�s.������W�4�4�Q��:�%�.�.��2�
4r�19990623135624��r��r��8��19990623�135624�990623�090623i�rrvs` r�test_parse_datetimezMiscTests.test_parse_datetime�sc���	4�	���d�A�r�2�r�2�>�
�j�(�D�!�R��R��<�
�h��$��2�r�2�r�:�
�h��$��2�r�2�r�:rc
����fd�}|dddddddd	�|d
ddddddd	�|ddd
ddddd��fd�}|ddddd�|d
dddd�|ddd
dd�y)Nc����tj||||||�}�	jtj|�||f��	jtj|d�||f�yr��r?rr�_unparse_datetime�
�y�M�d�hr��sr�r�rErs
         �rruz.MiscTests.test_unparse_datetime.<locals>.gives�se����"�"�1�a��A�q�!�4�B����W�6�6�r�:�&��1�
3����W�6�6�r�5�A�&��1�
3rr�r�r�r�r�r�r�r����20000623r�rXrr�r
�20100605�010203c����tj|||�}�jtj	|�||f��jtj	|d�||f�yr��r?r@rrr��r�r�r�r�r�rErs      �rruz.MiscTests.test_unparse_datetime.<locals>.gives�s]������q�!�Q�'�B����W�6�6�r�:�&��1�
3����W�6�6�r�5�A�&��1�
3r�000000rrvs` r�test_unparse_datetimezMiscTests.test_unparse_datetime�s����	3�	�d�A�r�2�r�2�z�8�<�
�d�A�r�2�r�2�z�8�<�
�d�A�q�!�Q��:�x�8�	3�	�d�A�r�:�x�0�
�d�A�r�:�x�0�
�d�A�q�*�h�/rc
����fd�}|dddddddd	�|d
ddddddd	�|ddd
ddddd��fd�}|ddddd�|d
dddd�|ddd
dd�y)Nc���tj||||||�}�	jtj|d�||f�yrr�r�s
         �rruz5MiscTests.test_unparse_datetime_legacy.<locals>.gives�sB����"�"�1�a��A�q�!�4�B����W�6�6�r�4�@�&��1�
3rr�r�r�r�r�r�r�r�r��000623r�rXrr�r
�100605r�c���tj|||�}�jtj	|d�||f�yrr�r�s      �rruz5MiscTests.test_unparse_datetime_legacy.<locals>.gives�s:������q�!�Q�'�B����W�6�6�r�4�@�&��1�
3rr�rrvs` r�test_unparse_datetime_legacyz&MiscTests.test_unparse_datetime_legacy�s����	3�	�d�A�r�2�r�2�x��:�
�d�A�r�2�r�2�x��:�
�d�A�q�!�Q��8�X�6�	3�	�d�A�r�8�X�.�
�d�A�r�8�X�.�
�d�A�q�(�H�-rr�c�B�|jttd��y)Nr�)r"r�rr�s r�test_ssl_supportzMiscTests.test_ssl_support�s��������4�5rN)
r
rrrwr�r�r�r�r�r��
skipUnlessr�r�rrrrprp*sG��B� &*�P,-�\	;�0�..�&�X����4�5�6�6�6rrpc��eZdZ	d�Zy)�PublicAPITestsc���|jttd��gd�}t�|j	d�|jt
tj�t
|��y)N�__all__)rr��NNTPReplyErrorr�r6�NNTPProtocolErrorrPrsr�)r"r�rr�rJr�setr�)r�
target_apis  r�test_module_all_attributez(PublicAPITests.test_module_all_attribute�sO��������3�4�M�
��?����j�)�����W�_�_�-�s�:��?rN)r
rrr�rrrr�r��s��H�@rr�c�N�eZdZ	ejZ	dd�Zd�Zd�Zd�Z	d�Z
d�Zy)	�MockSocketTestsNc�f���	�
�G�fd�d�}G�	��
fd�d��d�
g�	td|�5|j||�5|jd||��ddd�ddd�|j�
��	D]}|j|j��y#1swY�ExYw#1swY�IxYw)	Nc���eZdZ�fd�Zy)�NMockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_modulec�����Srr)�addressr��
MockSockets  �r�create_connectionz`MockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_module.create_connection�s���!�|�#rN)r
rrr�)r�s�r�mock_socket_moduler��s���
$rr�c�$��eZdZ�fd�Z��fd�Zy)�FMockSocketTests.check_constructor_error_conditions.<locals>.MockSocketc�
��d�yrr)r�
socket_closeds �rr"zLMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.close�s��� $�
rc�T����}t|�\}}�j|�|Sr)rrJ)�socket�moder�r�r��filesr0s     ��r�makefilezOMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.makefile�s)���'�/��(��1���4����T�"��rN)r
rrr"r�)r�r0r�s���rr�r��s
���
%�
rr�Fznntplib.socket�dummy)r�r�)r	�assertRaisesRegex�
nntp_classr"r�)rr0�expected_error_type�expected_error_msgr�r�r�rr�r�r�s `      @@@r�"check_constructor_error_conditionsz2MockSocketTests.check_constructor_error_conditions�s����
	$�	$�		�		��
���
�#�%7�
8�
�
#�
#�$7�9K�
L��O�O�G�%�(�O�C�M�9�	
���
�&��A��O�O�A�H�H�%��M�
L��9�
8�s#�B'�B�B'�B$	� B'�'B0c�x�Gd�dt�}|j|tj|j�y)Nc��eZdZdZy)�1MockSocketTests.test_bad_welcome.<locals>.HandlerzBad WelcomeN�r
rrrrrr�Handlerr��s��#�Grr�)r8r�rr�r�rr�s  r�test_bad_welcomez MockSocketTests.test_bad_welcome�s.��	$�m�	$��/�/��W�.�.����	Arc�x�Gd�dt�}|j|tj|j�y)Nc��eZdZdZy)�EMockSocketTests.test_service_temporarily_unavailable.<locals>.Handlerz#400 Service temporarily unavailableNr�rrrr�r����;�Grr�)r8r�rr�rr�s  r�$test_service_temporarily_unavailablez4MockSocketTests.test_service_temporarily_unavailable�.��	<�m�	<��/�/��W�/�/����	Brc�x�Gd�dt�}|j|tj|j�y)Nc��eZdZdZy)�EMockSocketTests.test_service_permanently_unavailable.<locals>.Handlerz#502 Service permanently unavailableNr�rrrr�r�r�rr�)r8r�rr6rr�s  r�$test_service_permanently_unavailablez4MockSocketTests.test_service_permanently_unavailable
r�rc�n��G�fd�dt�}d�|j|tj��y)Nc���eZdZ�fd�Zy)�6MockSocketTests.test_bad_capabilities.<locals>.Handlerc�(��|j��yrr`)r�capabilities_responses �rr�zJMockSocketTests.test_bad_capabilities.<locals>.Handler.handle_CAPABILITIESs����
�
�3�4rN)r
rrr�)r�s�rr�r�s���
5rr�z201 bad capability)r8r�rr�)rr�r�s  @r�test_bad_capabilitiesz%MockSocketTests.test_bad_capabilitiess4���	5�m�	5�!5���/�/��W�+�+�-B�	Drc�z��d}d}G�fd�dt�}d�|j|tj�||�y)Nzt@e.com�pythonc���eZdZ�fd�Zy)�3MockSocketTests.test_login_aborted.<locals>.Handlerc�(��|j��yrr`)rr1�authinfo_responses  �rr�zCMockSocketTests.test_login_aborted.<locals>.Handler.handle_AUTHINFOs����
�
�/�0rN)r
rrr�)r�s�rr�r�s���
1rr�z503 Mechanism not recognized)r8r�rr6)rr�r�r�r�s    @r�test_login_abortedz"MockSocketTests.test_login_abortedsB�������	1�m�	1�;���/�/��W�/�/�1B��8�	rr�)r
rrrrr�r�r�r�r�r�r�rrrr�r��s9��?����J�
"&�&�:A�B�B�D�
rr�c��eZdZ	d�Zy)�bypass_contextc��|Srr)�sockr1s  r�wrap_socketzbypass_context.wrap_socket(s���rN)r
rrr�rrrr�r�&s
��1�rr�c��eZdZed��Zy)�MockSslTestsc�8�tj|dti|��S)Nr�)rr�r�)r
�kws  rr�zMockSslTests.nntp_class-s������G�.�G�B�G�GrN)r
rr�staticmethodr�rrrr�r�+s���H��Hrr�c�J�eZdZd�Zd�Zejed�d��Zy)�LocalServerTestsc��tj�}tj|�}|j�t	j
|j|f��|_|jj�|j|jj�|jttj|d���|_y)N)�targetr1F)r�)r�r�	bind_port�listen�	threading�Thread�
run_server�
backgroundr|�
addCleanuprZ�enterContextr�HOST�nntp)rr��ports   rr)zLocalServerTests.setUp3s����}�}����&�&�t�,�����
�#�*�*��?�?�$��2���������������,�,�-��%�%�d�=�+=�+=�t�e�&T�U��	rc�,�|5|j�\}}ddd�tj�5}|j�|j|j	d��}|jd�	|j
�}|dk(r|jd�n�|dk(r�|j�|jd�tjtj�}|jt�|j|d��}|j|�|j|j	d��}n1|d	k(r|jd
�ntdj|�����	ddd�y#1swY��hxYw#1swYyxYw)N�rbs200 Server ready
TsCAPABILITIES
s.101 Capability list:
VERSION 2
STARTTLS
.
s
STARTTLS
s382 Begin TLS negotiation now
)�server_sidesQUIT
s
205 Bye!
zUnexpected command {!r})�accept�
contextlib�	ExitStack�
enter_contextr��sendallrr"r��
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�certfiler�r�rM)rr��clientr��cleanup�readerrS�contexts        rr
zLocalServerTests.run_server>sV��
��+�+�-�K�V�Q��
�
!�
!�
#�w��!�!�&�)��*�*�6�?�?�4�+@�A�F��N�N�2�3���o�o�'���-�-��N�N�!���O�+��L�L�N��N�N�#G�H�!�n�n�S�-D�-D�E�G��+�+�H�5�$�0�0��D�1�2�F��)�)�&�1�$�2�2�6�?�?�4�3H�I�F��K�'��N�N�?�3��$�%>�%E�%E�c�%J�K�K�-�(�1$�
#��T��
#�
#�s�E=�EF
�=F�
Fr�c���|jj}|jj}|jj�|j	||jj�|j	||jj�|j|jjtj�|jt|jj�yr)
rr�r��starttls�assertNotEqualrDr��	SSLSocketr5r�)rr�r�s   rr�zLocalServerTests.test_starttls^s����y�y�~�~���y�y�~�~���	�	����	
���D�$�)�)�.�.�1����D�$�)�)�.�.�1����d�i�i�n�n�c�m�m�<����*�d�i�i�&8�&8�9rN)	r
rrr)r
r�r�r�r�rrrrr2s3��	V�L�@�X����4�5�:�6�:rr�__main__)?r�r�r?rXr�r�r�os.path�osr�rr�r�test.supportrr�import_deprecatedrrr�
unittest.mockr	r��ImportError�pathrZ�dirname�__file__rrrQrr�r�r��SSLEOFError�TestCaser�r�r�r�r�rrr%r5r8r�r�r�r�rSrZrhrlrpr�r�r�r�rr
�mainrrr�<module>r2s���	�
�������	���7�
+�/�
+�
+�I�
6��#����
�7�7�<�<�������1�:�~�N���?��|�|�H�.�9�.�G�G�T�$�$�&��[�
��?��3�?�?�$�$�J�#�0�(�2C�2C�#�J����S�0�1�=�/�=�2�=�<)�B�L�L�)�X�	����	���&*�$8�*�BF�BF�J
/�M�/�6*�-�*�-��-�8PG�PG�f
@�$�&:�H�<M�<M�
@�G�$�&:�H�<M�<M�G�.	4� 4�h�6G�6G�	4�	3�9����	3�_6��!�!�_6�D
@�X�&�&�
@�L�h�'�'�L�\��
����S�0�1�H�?�H�2�H�8:�x�(�(�8:�v�z���H�M�M�O���u2��
�C��s�I:�:J�J

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists