
    YfT                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZ	d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ 	 d dl m!Z!m"Z" n# e#$ r dZ!dZ"Y nw xY w G d de          Z$dddddddZ%d.dZ&d Z' G d de          Z( G d d          Z) G d d          Z* G d de          Z+ G d de          Z, G d d e          Z- G d! d"e          Z. G d# d$          Z/ G d% d&ej0                  Z1 ee! d'           e ej2        ed           d'           G d( d)e                                  Z3 G d* d+e/e          Z4 G d, d-e          Z5dS )/    N)List)skipIf)directlyProvides)defererror
interfacesprotocolreactor)StringTransport)AdvancedPOP3Client InsecureAuthenticationDisallowedServerErrorResponse)pop3testserver)basicloopback)log)TestCase)ClientTLSContextServerTLSContextc                       e Zd Zd ZdS )#StringTransportWithConnectionLosingc                 \    | j                             t          j                               d S N)r	   connectionLostr   ConnectionDoneselfs    S/var/www/html/env/lib/python3.11/site-packages/twisted/mail/test/test_pop3client.pyloseConnectionz2StringTransportWithConnectionLosing.loseConnection!   s'    $$U%9%;%;<<<<<    N)__name__
__module____qualname__r    r    r   r   r       s#        = = = = =r    r   s   180s   LOGIN)s   TOPs   LOGIN-DELAYs   UIDL   STLSs   USERs   SASLTc                     t                      }t          |_        t                      }||_        |                    |           | r|                    d           ||fS )Ns   +OK Hello!
)
POP3ClientcapCache	_capCacher   r	   makeConnectiondataReceived)greetpts      r   setUpr/   /   s^    A AK+--AAJQ *	()))a4Kr    c                     | fdS )Nc                      |            S r   r$   )resultfs     r   <lambda>zstrip.<locals>.<lambda>A   s    qqss r    r$   )r3   s    r   stripr5   @   s    """"r    c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )POP3ClientLoginTestsc                      t          d          \  }}d|_        |                    dd          }|                    d                                |t
                                         fd          S )NFr,   T   username   passwords   -ERR Offline for maintenance
c                 F                         | j        d         d          S )Nr   s   Offline for maintenanceassertEqualargsexcr   s    r   r4   z;POP3ClientLoginTests.testNegativeGreeting.<locals>.<lambda>K   s    ((!6PQQ r    )r/   allowInsecureLoginloginr+   assertFailurer   addCallbackr   r-   r.   ds   `   r   testNegativeGreetingz)POP3ClientLoginTests.testNegativeGreetingE   sz    5!!!1#GGK--	:;;;!!!%899EEQQQQ
 
 	
r    c                     t                      \  }}|                    d          }|                     |                                d           |                    d           |                    | j        d          S )Nr:      USER username
s   +OK send password
s   send password)r/   userr>   valuer+   rE   rF   s       r   
testOkUserzPOP3ClientLoginTests.testOkUserN   sj    ww1FF;$8999	/000}}T-/?@@@r    c                 ,    t                      \  }}|                    d          }                     |                                d           |                    d                                |t                                         fd          S )Nr:   rJ   s   -ERR account suspended
c                 F                         | j        d         d          S )Nr   s   account suspendedr=   r@   s    r   r4   z2POP3ClientLoginTests.testBadUser.<locals>.<lambda>[   s    ((!6JKK r    )r/   rK   r>   rL   r+   rD   r   rE   rF   s   `   r   testBadUserz POP3ClientLoginTests.testBadUserU   s    ww1FF;$8999	4555!!!%899EEKKKK
 
 	
r    c                     t                      \  }}|                    d          }|                     |                                d           |                    d           |                    | j        d          S )Nr;      PASS password
s   +OK you're in!
s
   you're in!)r/   passwordr>   rL   r+   rE   rF   s       r   
testOkPasszPOP3ClientLoginTests.testOkPass^   si    ww1JJ{##$8999	,---}}T-}===r    c                 ,    t                      \  }}|                    d          }                     |                                d           |                    d                                |t                                         fd          S )Nr;   rR   s   -ERR go away
c                 F                         | j        d         d          S )Nr   s   go awayr=   r@   s    r   r4   z2POP3ClientLoginTests.testBadPass.<locals>.<lambda>k   s    ((!jAA r    )r/   rS   r>   rL   r+   rD   r   rE   rF   s   `   r   testBadPassz POP3ClientLoginTests.testBadPasse   s    ww1JJ{##$8999	*+++!!!%899EEAAAA
 
 	
r    c                    t                      \  }}d|_        |                    dd          }|                     |                                d           |                    d           |                     |                                d           |                    d           |                    | j        d          S )	NTr:   r;   rJ   s   +OK go ahead
   USER username
PASS password
s   +OK password accepted
s   password accepted)r/   rB   rC   r>   rL   r+   rE   rF   s       r   testOkLoginz POP3ClientLoginTests.testOkLoginn   s    ww1#GGK--$8999	*+++$IJJJ	3444}}T-/CDDDr    c                     t                      \  }}d|_        |                    dd          }                     |                                d           |                    d                                |                                d           |                    d                                |t                                         fd          S )	NTr:   r;   rJ   s   +OK waiting on you
rY      -ERR bogus login
c                 F                         | j        d         d          S Nr   s   bogus loginr=   r@   s    r   r4   z;POP3ClientLoginTests.testBadPasswordLogin.<locals>.<lambda>       ((!nEE r    	r/   rB   rC   r>   rL   r+   rD   r   rE   rF   s   `   r   testBadPasswordLoginz)POP3ClientLoginTests.testBadPasswordLoginx   s    ww1#GGK--$8999	0111$IJJJ	.///!!!%899EEEEEE
 
 	
r    c                 <    t                      \  }}d|_        |                    dd          }                     |                                d           |                    d                                |t                                         fd          S )NTr:   r;   rJ   r\   c                 F                         | j        d         d          S r^   r=   r@   s    r   r4   z;POP3ClientLoginTests.testBadUsernameLogin.<locals>.<lambda>   r_   r    r`   rF   s   `   r   testBadUsernameLoginz)POP3ClientLoginTests.testBadUsernameLogin   s    ww1#GGK--$8999	.///!!!%899EEEEEE
 
 	
r    c                     t          d          \  }}|                    d           |                     |j        d            d S )NFr9   s"   +OK lalala this has no challenge
r/   r+   r>   serverChallenger   r-   r.   s      r   testServerGreetingz'POP3ClientLoginTests.testServerGreeting   sH    5!!!1	>???*D11111r    c                     t          d          \  }}|                    d           |                     |j        d           d S )NFr9   s   +OK <here is the challenge>
s   <here is the challenge>rf   rh   s      r   testServerGreetingWithChallengez4POP3ClientLoginTests.testServerGreetingWithChallenge   sI    5!!!1	9:::*,FGGGGGr    c                 .   t          d          \  }}|                    d           |                    dd          }|                     |                                d           |                    d           |                    | j        d          S )	NFr9   s"   +OK <challenge string goes here>
r:   r;   s0   APOP username f34f1e464d0d7927607753129cabe39a
s   +OK Welcome!
s   Welcome!)r/   r+   rC   r>   rL   rE   rF   s       r   testAPOPzPOP3ClientLoginTests.testAPOP   s    5!!!1	>???GGK--GGIIL	
 	
 	
 	
*+++}}T-{;;;r    c                    t          d          \  }}|                    d           |                    dd          }|                     |                                           |                     |t                    S )NFr9      +OK Howdy
r:   r;   )r/   r+   rC   assertFalserL   rD   r   rF   s       r    testInsecureLoginRaisesExceptionz5POP3ClientLoginTests.testInsecureLoginRaisesException   so    5!!!1	'(((GGK--###!!!%EFFFr    c                    t          d          \  }}t          |t          j                   |                    d           |                    dd          }|                     |                                d           |                                 |                    d           |                     |                                d           |                    d           |S )	z
        If a server doesn't offer APOP but the transport is secured using
        SSL or TLS, a plaintext login should be allowed, not rejected with
        an InsecureAuthenticationDisallowed exception.
        Fr9   ro   r:   r;   rJ   s   +OK
rR   )	r/   r   r   ISSLTransportr+   rC   r>   rL   clearrF   s       r    testSSLTransportConsideredSecurez5POP3ClientLoginTests.testSSLTransportConsideredSecure   s     5!!!1J4555	'(((GGK--$8999					z"""$8999	z"""r    N)r!   r"   r#   rH   rM   rP   rT   rW   rZ   ra   rd   ri   rk   rm   rq   ru   r$   r    r   r7   r7   D   s        
 
 
A A A
 
 
> > >
 
 
E E E

 

 


 
 
2 2 2
H H H
< < <G G G    r    r7   c                       e Zd Zd Zd ZdS )ListConsumerc                     i | _         d S r   datar   s    r   __init__zListConsumer.__init__       			r    c                 l    |\  }}| j                             |g                               |           d S r   )rz   
setdefaultappend)r   r2   itemrL   s       r   consumezListConsumer.consume   s7    u	T2&&--e44444r    Nr!   r"   r#   r{   r   r$   r    r   rw   rw      s2          5 5 5 5 5r    rw   c                       e Zd Zd Zd ZdS )MessageConsumerc                     g | _         d S r   ry   r   s    r   r{   zMessageConsumer.__init__   r|   r    c                 :    | j                             |           d S r   )rz   r   r   lines     r   r   zMessageConsumer.consume   s    	r    Nr   r$   r    r   r   r      s2              r    r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )POP3ClientListTestsc                 *   t                      \  }}|                                }|                     |                                d           |                    d           |                    d           |                    | j        g d          S )N   LIST
   +OK Here it comes
s   1 3
2 2
3 1
.
)         )r/   listSizer>   rL   r+   rE   rF   s       r   testListSizez POP3ClientListTests.testListSize   s{    ww1JJLLK000	/000	4555}}T-yyy999r    c           
      :   t                      \  }}t                      }|j        }|                    |          }|                     |                                d           |                    d           |                    d           |                     |j        dgdgdgd           |                    d           |                     |j        dgdgdgdgdgdgd	           |                    d
           |                    | j	        |          S )Nr   r   s   1 3
2 2
3 1
r   r   r   )r   r   r   s   5 3
6 2
7 1
)r   r   r               .
)
r/   rw   r   r   r>   rL   r+   rz   rE   assertIdenticalr   r-   r.   cr3   rG   s         r   testListSizeWithConsumerz,POP3ClientListTests.testListSizeWithConsumer   s
   ww1NNIJJqMMK000	/000	/000aSaSaS!9!9:::	/000aSaSaSaSaSaS!Q!QRRR	x   }}T11555r    c                 *    t                      \  }}|                                }                     |                                d           |                    d                                |t                                         fd          S )Nr   !   -ERR Fatal doom server exploded
c                 F                         | j        d         d          S Nr   s   Fatal doom server explodedr=   r@   s    r   r4   z8POP3ClientListTests.testFailedListSize.<locals>.<lambda>       ((!6STT r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testFailedListSizez&POP3ClientListTests.testFailedListSize   s    ww1JJLLK000	=>>>!!!%899EETTTT
 
 	
r    c                 *   t                      \  }}|                                }|                     |                                d           |                    d           |                    d           |                    | j        g d          S )N   UIDL
r   s   1 abc
2 def
3 ghi
.
)   abcs   defs   ghi)r/   listUIDr>   rL   r+   rE   rF   s       r   testListUIDzPOP3ClientListTests.testListUID   s~    ww1IIKKK000	/000	:;;;}}T-/G/G/GHHHr    c                    t                      \  }}t                      }|j        }|                    |          }|                     |                                d           |                    d           |                    d           |                     |j        dgdgdgd           |                    d           |                    | j	        |          S )	Nr   r   s   1 xyz
2 abc
5 mno
s   xyzr   s   mno)r   r   r   r   )
r/   rw   r   r   r>   rL   r+   rz   rE   r   r   s         r   testListUIDWithConsumerz+POP3ClientListTests.testListUIDWithConsumer   s    ww1NNIIIaLLK000	/000	5666fX6(x!H!HIII	x   }}T11555r    c                 *    t                      \  }}|                                }                     |                                d           |                    d                                |t                                         fd          S )Nr   r   c                 F                         | j        d         d          S r   r=   r@   s    r   r4   z7POP3ClientListTests.testFailedListUID.<locals>.<lambda>  r   r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testFailedListUIDz%POP3ClientListTests.testFailedListUID   s    ww1IIKKK000	=>>>!!!%899EETTTT
 
 	
r    N)	r!   r"   r#   r   r   r   r   r   r   r$   r    r   r   r      sq        : : :6 6 6
 
 
I I I
6 
6 
6
 
 
 
 
r    r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
POP3ClientMessageTestsc                    t                      \  }}|                    d          }|                     |                                d           |                    d           |                    d           |                    d           |                    d           |                    | j        ddg          S )	N      RETR 8
   +OK Message incoming
   La la la here is message text
s"   ..Further message text tra la la
r      La la la here is message texts   .Further message text tra la lar/   retriever>   rL   r+   rE   rF   s       r   testRetrievez#POP3ClientMessageTests.testRetrieve  s    ww1JJqMMM222	2333	;<<<	>???	x   }}-/QR
 
 	
r    c                    t                      \  }}t                      }|j        }|                    d|          }|                     |                                d           |                    d           |                    d           |                    d           |                    | j        ||          S )Nr   r   r   r   s   ..Further message text
.
)	r/   r   r   r   r>   rL   r+   rE   _cbTestRetrieveWithConsumerr   s         r   testRetrieveWithConsumerz/POP3ClientMessageTests.testRetrieveWithConsumer  s    ww1IJJq!M222	2333	;<<<	9:::}}T=q!DDDr    c                 l    |                      ||           |                     |j        ddg           d S )Nr   s   .Further message textr   r>   rz   r   r2   r3   r   s       r   r   z2POP3ClientMessageTests._cbTestRetrieveWithConsumer#  sH    VQ'''F57OP	
 	
 	
 	
 	
r    c                    t                      \  }}|                    dd          }|                     |                                d           |                    d           |                    d           |                    d           |                    d           |                    | j        d	d
g          S )Nr   r   lines	   TOP 8 2
   +OK 2 lines on the way
   Line the first!  Woop
   Line the last!  Bye
r      Line the first!  Woop   Line the last!  Byer   rF   s       r   testPartialRetrievez*POP3ClientMessageTests.testPartialRetrieve)  s    ww1JJqJ""N333	4555	3444	1222	x   }}79OP
 
 	
r    c                    t                      \  }}t                      }|j        }|                    d|d          }|                     |                                d           |                    d           |                    d           |                    d           |                    d           |                    | j        ||          S )	Nr   r   r   r   r   r   r   r   )	r/   r   r   r   r>   rL   r+   rE   "_cbTestPartialRetrieveWithConsumerr   s         r   testPartialRetrieveWithConsumerz6POP3ClientMessageTests.testPartialRetrieveWithConsumer5  s    ww1IJJq!1J%%N333	4555	3444	1222	x   }}TDaKKKr    c                 l    |                      ||           |                     |j        ddg           d S )Nr   r   r   r   s       r   r   z9POP3ClientMessageTests._cbTestPartialRetrieveWithConsumerA  s=    VQ'''":<R!STTTTTr    c                 ,    t                      \  }}|                    d          }                     |                                d           |                    d                                |t                                         fd          S )Nr   s   RETR 1
r   c                 F                         | j        d         d          S r   r=   r@   s    r   r4   z;POP3ClientMessageTests.testFailedRetrieve.<locals>.<lambda>K  r   r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testFailedRetrievez)POP3ClientMessageTests.testFailedRetrieveE  s    ww1JJqMMM222	=>>>!!!%899EETTTT
 
 	
r    c                 :    t                      \  } fdt          d          D             }t          dd          D ]}                     |                                d|fz             |                                                     d                               d|fz                                 d|fz                                  |                                d	                               d
           t          j        |d          S )z
        Issue three retrieve calls immediately without waiting for any to
        succeed and make sure they all do succeed eventually.
        c           	          g | ]@}                     |                              j        d |dz   fz  d|dz   fz  g          AS )s   First line of %d.r   s   Second line of %d.)r   rE   r>   ).0ir-   r   s     r   
<listcomp>zCPOP3ClientMessageTests.test_concurrentRetrieves.<locals>.<listcomp>T  sj     
 
 

 	 JJqMM%% %Q02G1q5(2RS 
 
 
r    r   r   r   s	   RETR %d
r   s   First line of %d.
s   Second line of %d.
r    r   T)fireOnOneErrback)r/   ranger>   rL   rt   r+   r   DeferredList)r   r.   messagesr   r-   s   `   @r   test_concurrentRetrievesz/POP3ClientMessageTests.test_concurrentRetrievesN  s#   
 ww1
 
 
 
 

 1XX
 
 
 q! 	% 	%AQWWYY!(=>>>GGIIINN8999NN3qd:;;;NN4t;<<<QWWYY,,,NN8$$$$!(TBBBBr    N)r!   r"   r#   r   r   r   r   r   r   r   r   r$   r    r   r   r   
  s        
 
 
	E 	E 	E
 
 


 

 


L 
L 
LU U U
 
 
C C C C Cr    r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )POP3ClientMiscTestsc           
      B   t                      \  }}|                    d          }|                     |                                d           |                    d           |                    d           |                    | j        d d d g dddgdgd	          S )
Nr   useCache   CAPA
s   +OK Capabilities on the way
s!   X
Y
Z
A 1 2 3
B 1 2
C 1
.
)   1   2   3r   r   )   X   Y   Z   A   B   Cr/   capabilitiesr>   rL   r+   rE   rF   s       r   testCapabilityz"POP3ClientMiscTests.testCapabilityi  s    ww1NNAN&&K000	9:::	IJJJ}}(((Tlf 

 

 
	
r    c                     t                      \  }}|                    d          }|                     |                                d           |                    d           |                    | j        i           S )Nr   r   r      -ERR This server is lame!
r   rF   s       r   testCapabilityErrorz'POP3ClientMiscTests.testCapabilityError{  sj    ww1NNAN&&K000	7888}}T-r222r    c                     t                      \  }}|                                }|                     |                                d           |                    d           |                    | j        d          S )N   STAT
s   +OK 1 1212
)r   i  )r/   statr>   rL   r+   rE   rF   s       r   testStatzPOP3ClientMiscTests.testStat  sd    ww1FFHHK000	()))}}T-y999r    c                 *    t                      \  }}|                                }                     |                                d           |                    d                                |t                                         fd          S )Nr   r   c                 F                         | j        d         d          S Nr   s   This server is lame!r=   r@   s    r   r4   z3POP3ClientMiscTests.testStatError.<locals>.<lambda>      ((!6MNN r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testStatErrorz!POP3ClientMiscTests.testStatError      ww1FFHHK000	7888!!!%899EENNNN
 
 	
r    c                     t                      \  }}|                                }|                     |                                d           |                    d           |                    | j        d          S )N   NOOP
s   +OK No-op to you too!
s   No-op to you too!)r/   noopr>   rL   r+   rE   rF   s       r   testNoopzPOP3ClientMiscTests.testNoop  se    ww1FFHHK000	3444}}T-/CDDDr    c                 *    t                      \  }}|                                }                     |                                d           |                    d                                |t                                         fd          S )Nr   r   c                 F                         | j        d         d          S r   r=   r@   s    r   r4   z3POP3ClientMiscTests.testNoopError.<locals>.<lambda>  r   r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testNoopErrorz!POP3ClientMiscTests.testNoopError  r   r    c                     t                      \  }}|                                }|                     |                                d           |                    d           |                    | j        d          S )N   RSET
s   +OK Reset state
s   Reset state)r/   resetr>   rL   r+   rE   rF   s       r   testRsetzPOP3ClientMiscTests.testRset  sd    ww1GGIIK000	-...}}T-~>>>r    c                 *    t                      \  }}|                                }                     |                                d           |                    d                                |t                                         fd          S )Nr   r   c                 F                         | j        d         d          S r   r=   r@   s    r   r4   z3POP3ClientMiscTests.testRsetError.<locals>.<lambda>  r   r    )r/   r   r>   rL   r+   rD   r   rE   rF   s   `   r   testRsetErrorz!POP3ClientMiscTests.testRsetError  s    ww1GGIIK000	7888!!!%899EENNNN
 
 	
r    c                     t                      \  }}|                    d          }|                     |                                d           |                    d           |                    | j        d          S )Nr      DELE 4
s   +OK Hasta la vista
s   Hasta la vista)r/   deleter>   rL   r+   rE   rF   s       r   
testDeletezPOP3ClientMiscTests.testDelete  sg    ww1HHQKKM222	0111}}T-/@AAAr    c                 ,    t                      \  }}|                    d          }                     |                                d           |                    d                                |t                                         fd          S )Nr   r  s   -ERR Winner is not you.
c                 F                         | j        d         d          S )Nr   s   Winner is not you.r=   r@   s    r   r4   z5POP3ClientMiscTests.testDeleteError.<locals>.<lambda>  s    ((!6KLL r    )r/   r  r>   rL   r+   rD   r   rE   rF   s   `   r   testDeleteErrorz#POP3ClientMiscTests.testDeleteError  s    ww1HHQKKM222	5666!!!%899EELLLL
 
 	
r    N)r!   r"   r#   r   r   r   r   r   r   r  r  r  r  r$   r    r   r   r   h  s        
 
 
$3 3 3: : :
 
 
E E E
 
 
? ? ?
 
 
B B B
 
 
 
 
r    r   c                       e Zd ZddZd ZdS )SimpleClientNc                 "    || _         d| _        d S )NT)deferredrB   )r   r  contextFactorys      r   r{   zSimpleClient.__init__  s     "&r    c                 :    | j                             d            d S r   )r  callback)r   	challenges     r   serverGreetingzSimpleClient.serverGreeting  s    t$$$$$r    r   )r!   r"   r#   r{   r  r$   r    r   r  r    s7        ' ' ' '% % % % %r    r  c                   4    e Zd ZdZdZd Zd Zd Zd Zd Z	dS )POP3HelperMixinNc                     t          j                    }t          j        | j                  | _        t          || j                  | _        d| j        _	        || _
        d S )N)r     )r   Deferredr   POP3TestServer	serverCTXserverr  	clientCTXclienttimeout	connected)r   rG   s     r   r/   zPOP3HelperMixin.setUp  sQ    N$34>RRR"1T^DDD r    c                     | ` | `| `d S r   )r  r  r   r   s    r   tearDownzPOP3HelperMixin.tearDown  s    KKNNNr    c                 B    | j         j                                         d S r   )r  	transportr   )r   ignores     r   _cbStopClientzPOP3HelperMixin._cbStopClient  s    ,,.....r    c                 ~    | j         j                                         | j        j                                         |S r   )r  r$  r   r  )r   failures     r   
_ebGeneralzPOP3HelperMixin._ebGeneral  s5    ,,...,,...r    c                 D    t          j        | j        | j        d          S )NF)noisy)r   loopbackTCPr  r  r   s    r   r   zPOP3HelperMixin.loopback  s    #DKEJJJJr    )
r!   r"   r#   r  r  r/   r"  r&  r)  r   r$   r    r   r  r    sn        II    
/ / /  
K K K K Kr    r  c                   4    e Zd Z G d dej                  ZdS )TLSServerFactoryc                   :    e Zd ZU dZg Zee         ed<   d Zd Z	dS )TLSServerFactory.protocolNoutputc                     g | j         _        | j        d d          | _        | j                            d          D ]}|                     |           d S )Nr   )factoryinputr1  popsendLiner   s     r   connectionMadez(TLSServerFactory.protocol.connectionMade  sY    !#DL+aaa.DK** $ $d####$ $r    c                       j         j                            |            fd j                            d          D              |dk    r! j                             j                   d S d S )Nc                 :    g | ]}                     |          S r$   )r6  )r   lr   s     r   r   z:TLSServerFactory.protocol.lineReceived.<locals>.<listcomp>  s%    :::!T]]1:::r    r   r%   )r3  r4  r   r1  r5  r$  startTLScontextr   s   ` r   lineReceivedz&TLSServerFactory.protocol.lineReceived  sr    L%%d+++::::t{q'9'9::::w''55555 r    )
r!   r"   r#   r<  r1  r   bytes__annotations__r7  r=  r$   r    r   r	   r0    sM          U   	$ 	$ 	$	6 	6 	6 	6 	6r    r	   N)r!   r"   r#   r   LineReceiverr	   r$   r    r   r.  r.    sA        6 6 6 6 65% 6 6 6 6 6r    r.  zOpenSSL not presentc                       e Zd ZdZd ZdS )POP3TLSTestsz=
    Tests for POP3Client's support for TLS connections.
    c                 X   
 t                      dgg ddgddgdggj        _        t                      j        _        t          j        dd          }                     |j                   |	                                j
        }|	                                j        }t          j                    t          t          j                    t                                fd}|_        t          j                    }fd|_        t          j        |||          
fd	}fd
} fd}
fd}	j                            |           j                            |           j                            |           j                            |	           j        S )zd
        POP3Client.startTLS starts a TLS session over its existing TCP
        connection.
           +OK)rD  r%      .rE  r   z	127.0.0.1)	interfacec                 h    t                               |                                d            d S r   )r  r   r  )reasonconnLostDeferredcps    r   r   z2POP3TLSTests.test_startTLS.<locals>.connectionLost  s3    ''F333%%d+++++r    c                       S r   r$   )rJ  s   r   r4   z,POP3TLSTests.test_startTLS.<locals>.<lambda>  s    b r    c                 T    t          j        d                                           S )Nz!Connected to server; starting TLS)r   msgr;  ignoredrJ  s    r   cbConnectedz/POP3TLSTests.test_startTLS.<locals>.cbConnected!  s"    G7888;;== r    c                 T    t          j        d                                           S )NzStarted TLS; disconnecting)r   rM  quitrN  s    r   cbStartedTLSz0POP3TLSTests.test_startTLS.<locals>.cbStartedTLS%  s"    G01117799r    c                 j    t          j        d                               j        g d           d S )Nz.Disconnected; asserting correct input received)   CAPAr%   rU  s   QUIT)r   rM  r>   r4  )ignr   sfs    r   cbDisconnectedz2POP3TLSTests.test_startTLS.<locals>.cbDisconnected)  s9    GDEEERX'K'K'KLLLLLr    c                 X    t          j        d                                            S )NzEAsserted correct input; disconnecting client and shutting down server)r   rM  
disconnect)r2   connrI  s    r   cleanupz+POP3TLSTests.test_startTLS.<locals>.cleanup-  s4    G2   OO##r    )r.  r	   r1  r   r<  r
   	listenTCP
addCleanupstopListeninggetHosthostportr   r  r  r   r   ClientFactory
connectTCPr  rE   addBoth)r   rb  HPr   cfrP  rS  rX  r\  r[  rI  rJ  rW  s   `         @@@@r   test_startTLSzPOP3TLSTests.test_startTLS  s   
 H###HTNH
 /00 B+>>>*+++LLNNLLNN >++%.**,<,>,>??	, 	, 	, 	, 	, 	, +#%% jjj!!Q++	! 	! 	! 	! 	!	 	 	 	 		M 	M 	M 	M 	M 	M	$ 	$ 	$ 	$ 	$ 	$ 	,,,
---
///
G$$${r    N)r!   r"   r#   __doc__ri  r$   r    r   rB  rB    s-         9 9 9 9 9r    rB  c                       e Zd Zd ZdS )POP3TimeoutTestsc                 j     fd} fd fd fd}d j         _        dt          _        ||g}t	           j        j        t	          t          |                      j                             j                    j        	                     j
                                                    S )Nc                      j                             dd          } |                                |                                | S )Ntesttwisted)r  rC   rE   
addErrback)rG   loggedInr   timedOuts    r   rC   z+POP3TimeoutTests.testTimeout.<locals>.login?  sC    !!&)44AMM(###LL"""Hr    c                 2                         d           d S )Nz%Successfully logged in!?  Impossible!)fail)r2   r   s    r   rr  z.POP3TimeoutTests.testTimeout.<locals>.loggedInE  s    II=>>>>>r    c                 p    |                      t          j                                       d            d S r   )trapr   TimeoutErrorr&  )r(  r   s    r   rs  z.POP3TimeoutTests.testTimeout.<locals>.timedOutH  s2    LL+,,,t$$$$$r    c                  6     j                                         S r   )r  rR  r   s   r   rR  z*POP3TimeoutTests.testTimeout.<locals>.quitL  s    ;##%%%r    g{Gz?T)r  r  r   TIMEOUT_RESPONSEmapr   rE   r5   r&  rq  r)  r   )r   rC   rR  methodsrr  rs  s   `   @@r   testTimeoutzPOP3TimeoutTests.testTimeout>  s    	 	 	 	 	 	 		? 	? 	? 	? 	?	% 	% 	% 	% 	%	& 	& 	& 	& 	& # +/'$-DN&E7(;(;<<<""4#5666!!$/222}}r    N)r!   r"   r#   r}  r$   r    r   rl  rl  =  s#            r    rl  c                       e Zd ZdZd Zd ZdS )POP3ClientModuleStructureTestszt
    Miscellaneous tests more to do with module/package structure than
    anything to do with the POP3 client.
    c                 Z    |                      t          j        j        j        g            dS )z
        twisted.mail._pop3client.__all__ should be empty because all classes
        should be imported through twisted.mail.pop3.
        N)r>   rp  mail_pop3client__all__r   s    r   test_allz'POP3ClientModuleStructureTests.test_allb  s(    
 	192>>>>>r    c                    d t          j        t          j        d         t           j                  D             }|D ]}|dk    sH|                     t          t          j        j	        |          | dt          j        j	                    P|                     t          t          j        j	        d                     dS )a  
        Every public class in twisted.mail._pop3client should be available as
        a member of twisted.mail.pop3 with the exception of
        twisted.mail._pop3client.POP3Client which should be available as
        twisted.mail.pop3.AdvancedClient.
        c                 B    g | ]}|d          d          dk    |d          S )r   _r$   )r   r   s     r   r   z>POP3ClientModuleStructureTests.test_import.<locals>.<listcomp>p  s9     
 
 
 Q47c>>	 aD ">>r    ztwisted.mail._pop3clientr'   z not in r   N)
inspect
getmemberssysmodulesisclass
assertTruehasattrrp  r  pop3)r   publicClassespcs      r   test_importz*POP3ClientModuleStructureTests.test_importi  s    
 
'67 
 
 
   	R 	RB%%GL-r22667<#466   
 (9;O P PQQQQ	R 	Rr    N)r!   r"   r#   rj  r  r  r$   r    r   r  r  \  sA         
? ? ?R R R R Rr    r  )T)6r  r  typingr   unittestr   zope.interfacer   twisted.mail._pop3clientrp  twisted.internetr   r   r   r	   r
   twisted.internet.testingr   twisted.mail.pop3r   r'   r   r   twisted.mail.testr   twisted.protocolsr   r   twisted.pythonr   twisted.trial.unittestr   twisted.test.ssl_helpersr   r   ImportErrorr   r(   r/   r5   r7   rw   r   r   r   r   r  r  ServerFactoryr.  IReactorSSLrB  rl  r  r$   r    r   <module>r     sU  
  



             + + + + + +     H H H H H H H H H H H H H H 4 4 4 4 4 4         
 - , , , , , - - - - - - - -       + + + + + +KKKKKKKKK   
= = = = =/ = = =     "# # #t t t t t8 t t tn5 5 5 5 5 5 5 5       ;
 ;
 ;
 ;
 ;
( ;
 ;
 ;
|[C [C [C [C [CX [C [C [C|X
 X
 X
 X
 X
( X
 X
 X
v% % % % %: % % %K K K K K K K K86 6 6 6 6x- 6 6 6$ 344"J"7D1113HII> > > > >8 > > JI 54>B       >#R #R #R #R #RX #R #R #R #R #Rs   A! !	A-,A-