o
    #i                     @   s   d dl 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 d	d
lmZ dd Zedd ZG dd deZdS )    N)async_to_syncHttpResponse)RequestFactory)override_settings)ImproperlyConfigured)async_only_middleware)HostsRequestMiddlewareHostsResponseMiddleware   )HostsTestCasec                 C   s   t  S Nr   )request r   \/var/www/GraceOrthoHospital/venv_grace/lib/python3.10/site-packages/tests/test_middleware.pyget_response_empty   s   r   c                 C   s   t | sJ | S r   )asyncioiscoroutinefunction)get_responser   r   r   async_middleware   s   r   c                   @   s,  e Zd Zdd Zedddd Zedddd	d
 Zedgddddd Zedgdddddd Zedgddddd Z	edgddddd Z
eddddgddd  Zeddded! dgded"d# Zeddd$gd%ddgd&d'd( Zed)gd*d+dd,d- Zed.dgd*d+d/d0d1 Zd2S )3MiddlewareTestsc                 C      |  tdtt d S )NzMissing ROOT_HOSTCONF settingassertRaisesMessager   r	   r   selfr   r   r   test_missing_hostconf_setting   s   z-MiddlewareTests.test_missing_hostconf_settingztests.hosts.simple)ROOT_HOSTCONFc                 C   r   )NzMissing DEFAULT_HOST settingr   r   r   r   r   test_missing_default_hosts    s   z*MiddlewareTests.test_missing_default_hostsboo)r   DEFAULT_HOSTc                 C   r   )Nz9Invalid DEFAULT_HOST setting: No host called 'boo' existsr   r   r   r   r   test_wrong_default_hosts%   s   z(MiddlewareTests.test_wrong_default_hostsother.example.comwww)ALLOWED_HOSTSr   r    c                 C   <   t ddid}|d}tt}|| | |jd d S )Nhostr"   headers/simple/tests.urls.simpler   getr	   r   process_requestassertEqualurlconfr   rfr   
middlewarer   r   r   test_request_urlconf_module-   
   

z+MiddlewareTests.test_request_urlconf_moduleexample.comztests.hosts.blank_wildcardroot)r$   r   PARENT_HOSTr    c                 C   r%   )Nr&   r5   r'   /ztests.urls.rootr+   r0   r   r   r   !test_request_blank_urlconf_module8   s
   

z1MiddlewareTests.test_request_blank_urlconf_modulec                 C   sB   t ddid}|d}tt}||td | |jd d S )Nr&   r"   r'   r)   testr*   )r   r,   r
   r   process_responser   r.   r/   r0   r   r   r   test_response_urlconf_moduleD   s
   
z,MiddlewareTests.test_response_urlconf_moduless.example.comwith_view_kwargsc                 C   sX   t ddid}|d}tt}|| | |jd |d\}}| |jd d S )Nr&   r=   r'   z/template/test/ztests.urls.complexznon-existingr>   )	r   r,   r	   r   r-   r.   r/   get_hostname)r   r1   r   r2   r&   kwargsr   r   r   test_fallback_to_defaulthostO   s   

z,MiddlewareTests.test_fallback_to_defaulthostz.django_hosts.middleware.HostsRequestMiddlewarez/django_hosts.middleware.HostsResponseMiddleware)r   r    
MIDDLEWAREc                 C   s   | j d}| |jd d S )Nr8   i  clientr,   r.   status_coder   responser   r   r   test_request\   s   
zMiddlewareTests.test_requestz.async_middlewarec                    s   | j dI d H  d S )Nr8   )async_clientr,   r   r   r   r   test_asgi_requesti   s   
z!MiddlewareTests.test_asgi_requestzsomehost.comF)r   r    r$   DEBUGrC   c                 C   s&   | j jdddid}| |jd d S )Nr8   r&   zevil.comr'   i  rD   rG   r   r   r   test_fallback_with_evil_hostu   s   
z,MiddlewareTests.test_fallback_with_evil_hostspam.eggs.example.comztests.hosts.multiplemultiplec                 C   r%   )Nr&   rN   r'   z
/multiple/ztests.urls.multipler+   r0   r   r   r   test_multiple_subdomains   r4   z(MiddlewareTests.test_multiple_subdomainsz/debug_toolbar.middleware.DebugToolbarMiddleware)rC   r   r    c                 C   s>   d}|  t| tt W d    d S 1 sw   Y  d S )NzThe django-hosts and django-debug-toolbar middlewares are in the wrong order. Make sure the django-hosts middleware comes before the django-debug-toolbar middleware in the MIDDLEWARE setting.r   )r   msgr   r   r   test_debug_toolbar_new_warning   s
   	
"z.MiddlewareTests.test_debug_toolbar_new_warningN)__name__
__module____qualname__r   r   r   r!   r3   r9   r<   rB   rI   r   rK   rM   rP   rR   r   r   r   r   r      s    





	

	
r   )r   asgiref.syncr   django.httpr   django.testr   django.test.utilsr   django.core.exceptionsr   django.utils.decoratorsr   django_hosts.middlewarer	   r
   baser   r   r   r   r   r   r   r   <module>   s    
