U
    ˆj@  ã                   @   s„   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
mZmZ ddlmZ ddlmZ eed	œd
d„ZG dd„ deƒZdS )z
Test L{twisted.web.pages}
é    )Úcast)ÚSynchronousTestCase)ÚHeaders)ÚIRequest)Ú	errorPageÚ	forbiddenÚnotFound)Ú	IResource)ÚDummyRequest)ÚresourceÚreturnc                 C   s   t dgƒ}|  tt|ƒ¡ |S )z¬
    Render a response using the given resource.

    @param resource: The resource to use to handle the request.

    @returns: The request that the resource handled,
    ó    )r
   Úrenderr   r   )r   Úrequest© r   ú?/tmp/pip-unpacked-wheel-j5h_c8_q/twisted/web/test/test_pages.pyÚ_render   s    
r   c                   @   s`   e Zd ZdZdZeeeddœdd„Zddœdd„Z	ddœd	d
„Z
ddœdd„Zddœdd„ZdS )ÚErrorPageTestszu
    Test L{twisted.web.pages._ErrorPage} and its public aliases L{errorPage},
    L{notFound} and L{forbidden}.
    N)r   ÚcodeÚbodyr   c                 C   sJ   |   |j|¡ |   |jtddgiƒ¡ |   d |j¡ d¡| d¡¡ d S )Ns   content-types   text/html; charset=utf-8r   zlatin-1)ÚassertEqualZresponseCodeZresponseHeadersr   ÚjoinZwrittenÚdecode)Úselfr   r   r   r   r   r   ÚassertResponse*   s    þüzErrorPageTests.assertResponse)r   c                 C   s   |   ttdddƒƒdd¡ dS )zS
        The I{brief} and I{detail} parameters are HTML-escaped on render.
        i�  zA & Bz<script>alert('oops!')sŠ   <!DOCTYPE html>
<html><head><title>400 - A &amp; B</title></head><body><h1>A &amp; B</h1><p>&lt;script&gt;alert('oops!')</p></body></html>N)r   r   r   ©r   r   r   r   Útest_escapesHTML7   s
    üzErrorPageTests.test_escapesHTMLc              	   C   s0   t dddƒ}|  | dtttdgƒƒ¡|¡ dS )z„
        The C{getChild} method of the resource returned by L{errorPage} returns
        the L{_ErrorPage} it is called on.
        é”  ZfooÚbars   namer   N)r   ZassertIsÚgetChildr   r   r
   )r   Úpager   r   r   Útest_getChildF   s
    þzErrorPageTests.test_getChildc                 C   s   |   ttƒ ƒdd¡ dS )zq
        The default arguments to L{twisted.web.pages.notFound} produce
        a reasonable error page.
        r   s¡   <!DOCTYPE html>
<html><head><title>404 - No Such Resource</title></head><body><h1>No Such Resource</h1><p>Sorry. No luck finding that resource.</p></body></html>N)r   r   r   r   r   r   r   Útest_notFoundDefaultsQ   s
    üz$ErrorPageTests.test_notFoundDefaultsc                 C   s   |   ttƒ ƒdd¡ dS )zr
        The default arguments to L{twisted.web.pages.forbidden} produce
        a reasonable error page.
        i“  s�   <!DOCTYPE html>
<html><head><title>403 - Forbidden Resource</title></head><body><h1>Forbidden Resource</h1><p>Sorry, resource is forbidden.</p></body></html>N)r   r   r   r   r   r   r   Útest_forbiddenDefaultsb   s
    üz%ErrorPageTests.test_forbiddenDefaults)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZmaxDiffr
   ÚintÚbytesr   r   r!   r"   r#   r   r   r   r   r   "   s   r   N)r'   Útypingr   Ztwisted.trial.unittestr   Ztwisted.web.http_headersr   Ztwisted.web.iwebr   Ztwisted.web.pagesr   r   r   Ztwisted.web.resourcer	   Ztwisted.web.test.requesthelperr
   r   r   r   r   r   r   Ú<module>   s   