§
    Étºfø  ã                   óÒ   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )z!
Tests for L{twisted.web.vhost}.
é    )ÚgatherResults)ÚTestCase)Ú	NOT_FOUND)Ú
NoResource)ÚSite)ÚData)Ú_render)ÚDummyRequest)ÚNameVirtualHostÚVHostMonsterResourceÚ_HostResourcec                   ó   — e Zd ZdZd„ ZdS )ÚHostResourceTestsz%
    Tests for L{_HostResource}.
    c                 ó¬  — t          dd¦  «        }t          dd¦  «        }t          dd¦  «        }|                     d|¦  «         |                     d|¦  «         t          ¦   «         }t          ¦   «         }t          dd¦  «        |_        |                     d|¦  «         t          ddg¦  «        }g d	¢|_        t          |¦  «        |_	        d
„ |_
        d|_        |                     d|¦  «        }|                      |t           ¦  «         t          ddg¦  «        }|                     d|¦  «        }|                      |t          ¦  «         dS )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                  ó   — dS )NF© r   ó    úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/web/test/test_vhost.pyú<lambda>z1HostResourceTests.test_getChild.<locals>.<lambda>-   s   €  5€ r   r   N)r   ÚputChildr   r   ÚdefaultÚaddHostr
   Úprepathr   ÚsiteÚisSecureÚhostÚgetChildÚassertIsInstancer   )ÚselfÚbazrootÚbazuriÚbaztestÚhrÚrootÚrequestÚsteps           r   Útest_getChildzHostResourceTests.test_getChild   s;  € õ �| RÑ(Ô(ˆÝ�k 2Ñ&Ô&ˆÝ�| RÑ(Ô(ˆØ�Š˜ Ñ)Ô)Ð)Ø×Ò˜ Ñ(Ô(Ð(Ý‰_Œ_ˆåÑ Ô ˆÝ˜O¨RÑ0Ô0ˆŒØ�Š�Z Ñ)Ô)Ð)å ¨Ð0Ñ1Ô1ˆØ7Ð7Ð7ˆŒÝ˜D‘z”zˆŒØ(˜=ˆÔØˆŒà�{Š{˜: wÑ/Ô/ˆØ×Ò˜d¥DÑ)Ô)Ð)å ¨Ð0Ñ1Ô1ˆØ�}Š}˜V WÑ-Ô-ˆØ×Ò˜d¥JÑ/Ô/Ð/Ð/Ð/r   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r   r   r   r   r      s-   € € € € € ðð ð0ð 0ð 0ð 0ð 0r   r   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚNameVirtualHostTestsz'
    Tests for L{NameVirtualHost}.
    c                 ó¾   — t          ¦   «         }t          dd¦  «        |_        t          dg¦  «        }|                      |                     |¦  «        d¦  «         dS )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_renderWithoutHostz+NameVirtualHostTests.test_renderWithoutHost=   s_   € õ .Ñ/Ô/ÐÝ&*Ð+<¸bÑ&AÔ&AÐÔ#Ý ˜uÑ%Ô%ˆØ×ÒÐ,×3Ò3°GÑ<Ô<Ð>OÑPÔPÐPÐPÐPr   c                 óœ   ‡ ‡— t          ¦   «         }t          dg¦  «        Št          |‰¦  «        }ˆˆ fd„}|                     |¦  «         |S )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                 óH   •— ‰                      ‰j        t          ¦  «         d S ©N©r3   ÚresponseCoder   ©Úignoredr(   r"   s    €€r   Ú
cbRenderedzHNameVirtualHostTests.test_renderWithoutHostNoDefault.<locals>.cbRenderedR   ó"   ø€ Ø×Ò˜WÔ1µ9Ñ=Ô=Ð=Ð=Ð=r   )r   r
   r	   ÚaddCallback©r"   r6   Údr?   r(   s   `   @r   Útest_renderWithoutHostNoDefaultz4NameVirtualHostTests.test_renderWithoutHostNoDefaultH   sh   øø€ õ .Ñ/Ô/ÐÝ ˜uÑ%Ô%ˆÝÐ'¨Ñ1Ô1ˆð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	
�Š�jÑ!Ô!Ð!Øˆr   c                 óâ  ‡ — t          ¦   «         }|                     dt          dd¦  «        ¦  «         t          dg¦  «        }|j                             dd¦  «         t          ||¦  «        }ˆ fd„}|                     ||¦  «         t          dg¦  «        }|j                             dd¦  «         t          ||¦  «        }ˆ fd„}|                     ||¦  «         t          ||g¦  «        S )	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                 ód   •— ‰                      d                     |j        ¦  «        d¦  «         d S ©Nr   rF   ©r3   ÚjoinÚwrittenr=   s     €r   r?   z<NameVirtualHostTests.test_renderWithHost.<locals>.cbRenderede   s-   ø€ Ø×Ò˜SŸXšX g¤oÑ6Ô6¸	ÑBÔBÐBÐBÐBr   s   example.org:8000c                 ód   •— ‰                      d                     |j        ¦  «        d¦  «         d S rI   rJ   )r>   ÚrequestWithPortr"   s     €r   r?   z<NameVirtualHostTests.test_renderWithHost.<locals>.cbRenderedo   s.   ø€ Ø×Ò˜SŸXšX oÔ&=Ñ>Ô>À	ÑJÔJÐJÐJÐJr   )	r   r   r   r
   ÚrequestHeadersÚaddRawHeaderr	   rA   r   )r"   r6   r(   rC   r?   rN   Ú	dWithPorts   `      r   Útest_renderWithHostz(NameVirtualHostTests.test_renderWithHostX   s   ø€ õ .Ñ/Ô/ÐØ×#Ò# NµD¸ÀBÑ4GÔ4GÑHÔHÐHå ˜uÑ%Ô%ˆØÔ×+Ò+¨G°^ÑDÔDÐDÝÐ'¨Ñ1Ô1ˆð	Cð 	Cð 	Cð 	Cð 	Cð 	
�Š�j 'Ñ*Ô*Ð*õ '¨ uÑ-Ô-ˆØÔ&×3Ò3°GÐ=PÑQÔQÐQÝÐ/°ÑAÔAˆ	ð	Kð 	Kð 	Kð 	Kð 	Kð 	×Ò˜j¨/Ñ:Ô:Ð:å˜a ˜^Ñ,Ô,Ð,r   c                 óü   ‡ ‡— t          ¦   «         }t          dd¦  «        |_        t          dg¦  «        Š‰j                             dd¦  «         t          |‰¦  «        }ˆˆ fd„}|                     |¦  «         |S )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   rG   ó   example.comc                 ód   •— ‰                      d                     ‰j        ¦  «        d¦  «         d S )Nr   rT   rJ   r=   s    €€r   r?   zCNameVirtualHostTests.test_renderWithUnknownHost.<locals>.cbRendered‚   s-   ø€ Ø×Ò˜SŸXšX g¤oÑ6Ô6¸ÑHÔHÐHÐHÐHr   )r   r   r   r
   rO   rP   r	   rA   rB   s   `   @r   Útest_renderWithUnknownHostz/NameVirtualHostTests.test_renderWithUnknownHostv   sš   øø€ õ .Ñ/Ô/ÐÝ&*¨?¸BÑ&?Ô&?ÐÔ#Ý ˜uÑ%Ô%ˆØÔ×+Ò+¨G°^ÑDÔDÐDÝÐ'¨Ñ1Ô1ˆð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	
�Š�jÑ!Ô!Ð!Øˆr   c                 óÒ   ‡ ‡— t          ¦   «         }t          dg¦  «        Š‰j                             dd¦  «         t	          |‰¦  «        }ˆˆ fd„}|                     |¦  «         |S )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   rG   rU   c                 óH   •— ‰                      ‰j        t          ¦  «         d S r:   r;   r=   s    €€r   r?   zLNameVirtualHostTests.test_renderWithUnknownHostNoDefault.<locals>.cbRendered“   r@   r   )r   r
   rO   rP   r	   rA   rB   s   `   @r   Ú#test_renderWithUnknownHostNoDefaultz8NameVirtualHostTests.test_renderWithUnknownHostNoDefaultˆ   s�   øø€ õ .Ñ/Ô/ÐÝ ˜uÑ%Ô%ˆØÔ×+Ò+¨G°^ÑDÔDÐDÝÐ'¨Ñ1Ô1ˆð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	
�Š�jÑ!Ô!Ð!Øˆr   c              ƒ   ó  K  — t          ¦   «         }t          dg¦  «        }|j                             dd¦  «         t	          ||¦  «        ƒ d{V —† |                      dd                     |j        ¦  «        ¦  «         dS )zs
        L{NameVirtualHost.render} doesn't echo unescaped HTML when present in
        the I{Host} header.
        r   rG   s   <b>example</b>.comNs   <b>)r   r
   rO   rP   r	   ÚassertNotInrK   rL   r5   s      r   Útest_renderWithHTMLHostz,NameVirtualHostTests.test_renderWithHTMLHost™   sŠ   è è € õ
 .Ñ/Ô/ÐÝ ˜uÑ%Ô%ˆØÔ×+Ò+¨GÐ5JÑKÔKÐKåÐ)¨7Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3à×Ò˜ §¢¨'¬/Ñ!:Ô!:Ñ;Ô;Ð;Ð;Ð;r   c                 ó(  — t          ¦   «         }t          dd¦  «        }d|_        t          dd¦  «        }|                     d|¦  «         |                     d|¦  «         t	          g ¦  «        }|j                             dd¦  «         dg|_        |                      | 	                    d|¦  «        t          ¦  «         |                      |j        dg¦  «         |                      |j        g ¦  «         t	          g ¦  «        }|j                             dd¦  «         dg|_        |                      | 	                    d|¦  «        t          ¦  «         |                      |j        g ¦  «         |                      |j        dg¦  «         d	S )
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.orgrG   r   N)r   r   ÚisLeafr   r
   rO   rP   r   r!   r    r   r3   Úpostpath)r"   r6   ÚleafResourceÚnormResourcer(   s        r   r*   z"NameVirtualHostTests.test_getChild¦   s~  € õ .Ñ/Ô/ÐÝ˜L¨"Ñ-Ô-ˆØ"ˆÔÝ˜L¨"Ñ-Ô-ˆØ×#Ò#Ð$7¸ÑFÔFÐFØ×#Ò#Ð$7¸ÑFÔFÐFå˜rÑ"Ô"ˆØÔ×+Ò+¨GÐ5HÑIÔIÐIØ˜%ˆŒà×ÒÐ1×:Ò:¸3ÀÑHÔHÍ*ÑUÔUÐUØ×Ò˜œ¨3¨%Ñ0Ô0Ð0Ø×Ò˜Ô)¨2Ñ.Ô.Ð.å˜rÑ"Ô"ˆØÔ×+Ò+¨GÐ5HÑIÔIÐIØ˜%ˆŒà×ÒÐ1×:Ò:¸3ÀÑHÔHÍ$ÑOÔOÐOØ×Ò˜œ¨"Ñ-Ô-Ð-Ø×Ò˜Ô)¨C¨5Ñ1Ô1Ð1Ð1Ð1r   N)r,   r-   r.   r/   r7   rD   rR   rW   rZ   r]   r*   r   r   r   r1   r1   8   sŠ   € € € € € ðð ð	Qð 	Qð 	Qðð ð ð -ð -ð -ð<ð ð ð$ð ð ð"<ð <ð <ð2ð 2ð 2ð 2ð 2r   r1   c                   ó   — e Zd ZdZd„ ZdS )ÚVHostMonsterResourceTestsz,
    Tests for L{VHostMonsterResource}.
    c                 ó¶  — t          ¦   «         }t          g ¦  «        }|                      |                     d|¦  «        t          ¦  «         |                      |                     ¦   «         ¦  «         t          g ¦  «        }|                      |                     d|¦  «        t          ¦  «         |                      |                     ¦   «         ¦  «         dS )z�
        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*   z'VHostMonsterResourceTests.test_getChildÉ   sµ   € õ
 #Ñ$Ô$ˆÝ˜rÑ"Ô"ˆØ×Ò˜cŸlšl¨7°GÑ<Ô<½mÑLÔLÐLØ×Ò˜×)Ò)Ñ+Ô+Ñ,Ô,Ð,å˜rÑ"Ô"ˆØ×Ò˜cŸlšl¨8°WÑ=Ô=½}ÑMÔMÐMØ�Š˜×(Ò(Ñ*Ô*Ñ+Ô+Ð+Ð+Ð+r   Nr+   r   r   r   rd   rd   Ä   s-   € € € € € ðð ð,ð ,ð ,ð ,ð ,r   rd   N)r/   Ú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   r1   rd   r   r   r   ú<module>rr      sQ  ððð ð
 1Ð 0Ð 0Ð 0Ð 0Ð 0Ø +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rð!0ð !0ð !0ð !0ð !0˜ñ !0ô !0ð !0ðHI2ð I2ð I2ð I2ð I2˜8ñ I2ô I2ð I2ðX,ð ,ð ,ð ,ð , ñ ,ô ,ð ,ð ,ð ,r   