
    h                         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	 Zd
 Z G d de      Zy)    )partial)DaphneProcess)ASGIStaticFilesHandler)ImproperlyConfigured)connections)TransactionTestCase)modify_settingsget_default_applicationc                 .    t               }|  | |      }|S Nr
   )static_wrapperapplications     Q/var/www/Befach/backend/env/lib/python3.12/site-packages/channels/testing/live.pymake_applicationr      s     )+K!$[1    c                  ^    ddl m}  | j                  d   d   d   }|| j                  d   d<   y )Nr   )settingsdefaultTESTNAME)django.confr   	DATABASES)r   test_db_names     r   set_database_connectionr      s4    $%%i08@L,8Hy!&)r   c                        e Zd ZdZdZeZeZdZ	e
d        Ze
d        Ze fd       Ze fd       Zed        Z xZS )	ChannelsLiveServerTestCasez
    Does basically the same as TransactionTestCase but also launches a
    live Daphne server in a separate process, so
    that the tests may use another test framework, such as Selenium,
    instead of the built-in dummy client.
    	localhostTc                 :    d| j                   d| j                  S )Nzhttp://:host_portselfs    r   live_server_urlz*ChannelsLiveServerTestCase.live_server_url)   s    !%DJJ77r   c                 :    d| j                   d| j                  S )Nzws://r    r!   r$   s    r   live_server_ws_urlz-ChannelsLiveServerTestCase.live_server_ws_url-   s    #yy$**55r   c                    t        j                         D ]  }| j                  |      st        d       t        |           t        d| j                  i      | _        | j                  j                          t        t        | j                  r| j                  nd       }| j                  | j                  |t              | _        | j                   j#                          	 | j                   j$                  j'                  d      s'| j                   j)                         rBt+        d      d 	 | j                   j,                  j.                  | _        y )	NzBChannelLiveServerTestCase can not be used with in memory databasesappend)ALLOWED_HOSTS)r   )setup   )timeoutzServer stopped)r   all_is_in_memory_dbr   super
setUpClassr	   r"   _live_server_modified_settingsenabler   r   serve_staticr   ProtocolServerProcessr   _server_processstartreadywaitis_aliveRuntimeErrorportvaluer#   )cls
connectionget_application	__class__s      r   r2   z%ChannelsLiveServerTestCase.setUpClass1   s&   %//+J##J/*X  , 	-<#SXX..
* 	**113!141A1A3--t
 "77HH) 8 

 	!!#&&,,11!1<&&//1"#34$>'',,22	r   c                     | j                   j                          | j                   j                          | j                  j	                          t
        |           y r   )r7   	terminatejoinr3   disabler1   tearDownClass)r?   rB   s    r   rG   z(ChannelsLiveServerTestCase.tearDownClassR   sD    %%'  "**224r   c                 B    |j                   dk(  r|j                         S y)zD
        Check if DatabaseWrapper holds in memory database.
        sqliteN)vendoris_in_memory_db)r?   r@   s     r   r0   z+ChannelsLiveServerTestCase._is_in_memory_dbY   s&    
 (--// )r   )__name__
__module____qualname____doc__r"   r   r6   r   r   r5   propertyr&   r(   classmethodr2   rG   r0   __classcell__)rB   s   @r   r   r      s     D)+NL8 8 6 6 3 3@     0 0r   r   N)	functoolsr   daphne.testingr   #django.contrib.staticfiles.handlersr   django.core.exceptionsr   	django.dbr   django.test.testcasesr   django.test.utilsr	   channels.routingr   r   r   r    r   r   <module>r\      s6     ( F 7 ! 5 - 49C0!4 C0r   