ó
    ×›‘hø  ã                   ó¾   • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJrJrJr   " S S\5      r " S S\5      r " S S\5      rg)z!
Tests for L{twisted.web.vhost}.
é    )ÚgatherResults)ÚTestCase)Ú	NOT_FOUND)Ú
NoResource)ÚSite)ÚData)Ú_render)ÚDummyRequest)ÚNameVirtualHostÚVHostMonsterResourceÚ_HostResourcec                   ó   • \ rS rSrSrS rSrg)ÚHostResourceTestsé   z
Tests for L{_HostResource}.
c                 ó&  • [        SS5      n[        SS5      n[        SS5      nUR                  SU5        UR                  SU5        [        5       n[        5       n[        SS5      Ul        UR                  SU5        [        SS/5      n/ S	QUl        [        U5      Ul	        S
 Ul
        SUl        UR                  SU5      nU R                  U[         5        [        SS/5      nUR                  SU5      nU R                  U[        5        g)z¸
L{_HostResource.getChild} returns the proper I{Resource} for the vhost
embedded in the URL.  Verify that returning the proper I{Resource}
required changing the I{Host} in the header.
s	   root dataÚ s   uri datas	   test datas   tests   uris   default dataó   baz.com)s   baró   httpr   c                  ó   • g)NF© r   ó    Ú_C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/web/test/test_vhost.pyÚ<lambda>Ú1HostResourceTests.test_getChild.<locals>.<lambda>-   s   €  5r   r   N)r   ÚputChildr   r   ÚdefaultÚaddHostr
   Úprepathr   ÚsiteÚisSecureÚhostÚgetChildÚassertIsInstancer   )ÚselfÚbazrootÚbazuriÚbaztestÚhrÚrootÚrequestÚsteps           r   Útest_getChildÚHostResourceTests.test_getChild   sð   € ô �| RÓ(ˆÜ�k 2Ó&ˆÜ�| RÓ(ˆØ�‰˜ Ô)Ø×Ñ˜ Ô(Ü‹_ˆäÓ ˆÜ˜O¨RÓ0ˆŒØ�‰�Z Ô)ä ¨Ð0Ó1ˆÚ7ˆŒÜ˜D“zˆŒÙ(ˆÔØˆŒà�{‰{˜: wÓ/ˆØ×Ñ˜d¤DÔ)ä ¨Ð0Ó1ˆØ�}‰}˜V WÓ-ˆØ×Ñ˜d¤JÕ/r   r   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   Ú__static_attributes__r   r   r   r   r      s   † ñõ0r   r   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚNameVirtualHostTestsé8   z
Tests for L{NameVirtualHost}.
c                 ó”   • [        5       n[        SS5      Ul        [        S/5      nU R	                  UR                  U5      S5        g)z™
L{NameVirtualHost.render} returns the result of rendering the
instance's C{default} if it is not L{None} and there is no I{Host}
header in the request.
s   correct resultr   r   N)r   r   r   r
   ÚassertEqualÚrender©r$   ÚvirtualHostResourcer*   s      r   Útest_renderWithoutHostÚ+NameVirtualHostTests.test_renderWithoutHost=   sG   € ô .Ó/ÐÜ&*Ð+<¸bÓ&AÐÔ#Ü ˜uÓ%ˆØ×ÑÐ,×3Ñ3°GÓ<Ð>OÕPr   c                 ó~   ^ ^• [        5       n[        S/5      m[        UT5      nUU 4S jnUR                  U5        U$ )z£
L{NameVirtualHost.render} returns a response with a status of I{NOT
FOUND} if the instance's C{default} is L{None} and there is no I{Host}
header in the request.
r   c                 óF   >• TR                  TR                  [        5        g ©N©r9   ÚresponseCoder   ©Úignoredr*   r$   s    €€r   Ú
cbRenderedÚHNameVirtualHostTests.test_renderWithoutHostNoDefault.<locals>.cbRenderedR   ó   ø€ Ø×Ñ˜W×1Ñ1´9Õ=r   )r   r
   r	   ÚaddCallback©r$   r<   ÚdrF   r*   s   `   @r   Útest_renderWithoutHostNoDefaultÚ4NameVirtualHostTests.test_renderWithoutHostNoDefaultH   s?   ù€ ô .Ó/ÐÜ ˜uÓ%ˆÜÐ'¨Ó1ˆö	>ð 	
�‰�jÔ!Øˆr   c                 ó�  ^ • [        5       nUR                  S[        SS5      5        [        S/5      nUR                  R                  SS5        [        X5      nU 4S jnUR                  XB5        [        S/5      nUR                  R                  SS5        [        X5      nU 4S jnUR                  XE5        [        X6/5      $ )	zÖ
L{NameVirtualHost.render} returns the result of rendering the resource
which is the value in the instance's C{host} dictionary corresponding
to the key indicated by the value of the I{Host} header in the request.
s   example.orgó   winnerr   r   ó   hostc                 ó\   >• TR                  SR                  UR                  5      S5        g ©Nr   rO   ©r9   ÚjoinÚwrittenrD   s     €r   rF   Ú<NameVirtualHostTests.test_renderWithHost.<locals>.cbRenderede   s    ø€ Ø×Ñ˜SŸX™X g§o¡oÓ6¸	ÕBr   s   example.org:8000c                 ó\   >• TR                  SR                  UR                  5      S5        g rR   rS   )rE   ÚrequestWithPortr$   s     €r   rF   rV   o   s"   ø€ Ø×Ñ˜SŸX™X o×&=Ñ&=Ó>À	ÕJr   )	r   r   r   r
   ÚrequestHeadersÚaddRawHeaderr	   rI   r   )r$   r<   r*   rK   rF   rX   Ú	dWithPorts   `      r   Útest_renderWithHostÚ(NameVirtualHostTests.test_renderWithHostX   s¹   ø€ ô .Ó/ÐØ×#Ñ# N´D¸ÀBÓ4GÔHä ˜uÓ%ˆØ×Ñ×+Ñ+¨G°^ÔDÜÐ'Ó1ˆõ	Cð 	
�‰�jÔ*ô '¨ uÓ-ˆØ×&Ñ&×3Ñ3°GÐ=PÔQÜÐ/ÓAˆ	õ	Kð 	×Ñ˜jÔ:ä˜a˜^Ó,Ð,r   c                 óØ   ^ ^• [        5       n[        SS5      Ul        [        S/5      mTR                  R                  SS5        [        UT5      nUU 4S jnUR                  U5        U$ )z¸
L{NameVirtualHost.render} returns the result of rendering the
instance's C{default} if it is not L{None} and there is no host
matching the value of the I{Host} header in the request.
ó   correct datar   r   rP   ó   example.comc                 ó\   >• TR                  SR                  TR                  5      S5        g )Nr   r_   rS   rD   s    €€r   rF   ÚCNameVirtualHostTests.test_renderWithUnknownHost.<locals>.cbRendered‚   s    ø€ Ø×Ñ˜SŸX™X g§o¡oÓ6¸ÕHr   )r   r   r   r
   rY   rZ   r	   rI   rJ   s   `   @r   Útest_renderWithUnknownHostÚ/NameVirtualHostTests.test_renderWithUnknownHostv   sf   ù€ ô .Ó/ÐÜ&*¨?¸BÓ&?ÐÔ#Ü ˜uÓ%ˆØ×Ñ×+Ñ+¨G°^ÔDÜÐ'¨Ó1ˆö	Ið 	
�‰�jÔ!Øˆr   c                 ó¶   ^ ^• [        5       n[        S/5      mTR                  R                  SS5        [	        UT5      nUU 4S jnUR                  U5        U$ )zÂ
L{NameVirtualHost.render} returns a response with a status of I{NOT
FOUND} if the instance's C{default} is L{None} and there is no host
matching the value of the I{Host} header in the request.
r   rP   r`   c                 óF   >• TR                  TR                  [        5        g rA   rB   rD   s    €€r   rF   ÚLNameVirtualHostTests.test_renderWithUnknownHostNoDefault.<locals>.cbRendered“   rH   r   )r   r
   rY   rZ   r	   rI   rJ   s   `   @r   Ú#test_renderWithUnknownHostNoDefaultÚ8NameVirtualHostTests.test_renderWithUnknownHostNoDefaultˆ   sU   ù€ ô .Ó/ÐÜ ˜uÓ%ˆØ×Ñ×+Ñ+¨G°^ÔDÜÐ'¨Ó1ˆö	>ð 	
�‰�jÔ!Øˆr   c              ƒ   óð   #   • [        5       n[        S/5      nUR                  R                  SS5        [	        X5      I Sh  v•N   U R                  SSR                  UR                  5      5        g N07f)z[
L{NameVirtualHost.render} doesn't echo unescaped HTML when present in
the I{Host} header.
r   rP   s   <b>example</b>.comNs   <b>)r   r
   rY   rZ   r	   ÚassertNotInrT   rU   r;   s      r   Útest_renderWithHTMLHostÚ,NameVirtualHostTests.test_renderWithHTMLHost™   sd   é € ô
 .Ó/ÐÜ ˜uÓ%ˆØ×Ñ×+Ñ+¨GÐ5JÔKäÐ)Ó3×3Ð3à×Ñ˜ §¡¨'¯/©/Ó!:Õ;ñ 	4ùs   ‚AA6ÁA4Á1A6c                 óÖ  • [        5       n[        SS5      nSUl        [        SS5      nUR                  SU5        UR                  SU5        [	        / 5      nUR
                  R                  SS5        S/Ul        U R                  UR                  SU5      [        5        U R                  UR                  S/5        U R                  UR                  / 5        [	        / 5      nUR
                  R                  SS5        S/Ul        U R                  UR                  SU5      [        5        U R                  UR                  / 5        U R                  UR                  S/5        g	)
z•
L{NameVirtualHost.getChild} returns correct I{Resource} based off
the header and modifies I{Request} to ensure proper prepath and
postpath are set.
s	   leaf datar   Ts	   norm datas   leaf.example.orgs   norm.example.orgrP   r   N)r   r   ÚisLeafr   r
   rY   rZ   r   r#   r"   r   r9   Úpostpath)r$   r<   ÚleafResourceÚnormResourcer*   s        r   r,   Ú"NameVirtualHostTests.test_getChild¦   s7  € ô .Ó/ÐÜ˜L¨"Ó-ˆØ"ˆÔÜ˜L¨"Ó-ˆØ×#Ñ#Ð$7¸ÔFØ×#Ñ#Ð$7¸ÔFä˜rÓ"ˆØ×Ñ×+Ñ+¨GÐ5HÔIØ˜%ˆŒà×ÑÐ1×:Ñ:¸3ÀÓHÌ*ÔUØ×Ñ˜Ÿ™¨3¨%Ô0Ø×Ñ˜×)Ñ)¨2Ô.ä˜rÓ"ˆØ×Ñ×+Ñ+¨GÐ5HÔIØ˜%ˆŒà×ÑÐ1×:Ñ:¸3ÀÓHÌ$ÔOØ×Ñ˜Ÿ™¨"Ô-Ø×Ñ˜×)Ñ)¨C¨5Õ1r   r   N)r/   r0   r1   r2   r3   r=   rL   r\   rc   rh   rl   r,   r4   r   r   r   r6   r6   8   s+   † ñò	Qòò -ò<ò$ò"<õ2r   r6   c                   ó   • \ rS rSrSrS rSrg)ÚVHostMonsterResourceTestséÄ   z$
Tests for L{VHostMonsterResource}.
c                 óX  • [        5       n[        / 5      nU R                  UR                  SU5      [        5        U R                  UR                  5       5        [        / 5      nU R                  UR                  SU5      [        5        U R                  UR                  5       5        g)zu
L{VHostMonsterResource.getChild} returns I{_HostResource} and modifies
I{Request} with correct L{Request.isSecure}.
r   s   httpsN)r   r
   r#   r"   r   ÚassertFalser    Ú
assertTrue)r$   Úvhmr*   s      r   r,   Ú'VHostMonsterResourceTests.test_getChildÉ   s‚   € ô
 #Ó$ˆÜ˜rÓ"ˆØ×Ñ˜cŸl™l¨7°GÓ<¼mÔLØ×Ñ˜×)Ñ)Ó+Ô,ä˜rÓ"ˆØ×Ñ˜cŸl™l¨8°WÓ=¼}ÔMØ�‰˜×(Ñ(Ó*Õ+r   r   Nr.   r   r   r   ru   ru   Ä   s   † ñõ,r   ru   N)r3   Útwisted.internet.deferr   Útwisted.trial.unittestr   Útwisted.web.httpr   Útwisted.web.resourcer   Útwisted.web.serverr   Útwisted.web.staticr   Útwisted.web.test._utilr	   Útwisted.web.test.test_webr
   Útwisted.web.vhostr   r   r   r   r6   ru   r   r   r   Ú<module>r…      sR   ðñõ
 1Ý +Ý &Ý +Ý #Ý #Ý *Ý 2ß RÑ Rô!0˜ô !0ôHI2˜8ô I2ôX, õ ,r   