
    h                         S SK Jr  S SKJr  S SKJr  S SKJr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)    )settings)ImproperlyConfigured)RequestFactory)TenantMainMiddlewareTenantSubfolderMiddleware)BaseTestCase)get_tenant_modelget_tenant_domain_modelget_public_schema_namec                   l   ^  \ rS rSr\U 4S j5       r\U 4S j5       rU 4S jrU 4S jrS r	S r
SrU =r$ )	RoutesTestCase
   c                   > [         TU ]  5         S[        l        S[        l        [        R                  [        R                  -   [        l        [        R
                  U l        U R                  5         [        5       " [        5       S9U l
        U R                  R                  5         [        5       " SU R                  S9U l        U R                  R                  5         g )Ndjango_tenants	customersdts_test_appzdjango.contrib.contenttypeszdjango.contrib.authschema_nametest.comdomaintenant)super
setUpClassr   SHARED_APPSTENANT_APPSINSTALLED_APPSavailable_appssync_sharedr	   r   public_tenantsaver
   public_domaincls	__class__s    R/var/www/html/env/lib/python3.13/site-packages/django_tenants/tests/test_routes.pyr   RoutesTestCase.setUpClass   s     - 9 #+"6"69M9M"M%44,.;Q;ST 35ZPSPaPab     c                    > SSK Jn  UR                  5         U R                  R	                  5         U R
                  R	                  5         [        TU ]  5         g )Nr   
connection)	django.dbr-   set_schema_to_publicr$   deleter"   r   tearDownClass)r&   r-   r'   s     r(   r1   RoutesTestCase.tearDownClass   sA    ('')  "  "r*   c                 N  > [         TU ]  5         [        5       U l        [	        S 5      U l        SU l        [        5       " SS9U l        U R                  R                  5         [        5       " U R                  U R                  S9U l        U R                  R                  5         g )Nc                     U $ N rs    r(   <lambda>&RoutesTestCase.setUp.<locals>.<lambda>)   s    r*   tenant.test.comtestr   r   r   )r   setUpr   factoryr   tmtenant_domainr	   r   r#   r
   r   selfr'   s    r(   r>   RoutesTestCase.setUp&   st    %'&{3.&(V<-/t{{4K]K]^r*   c                    > SSK Jn  UR                  5         U R                  R	                  5         U R
                  R	                  SS9  [        TU ]  5         g Nr   r,   T)
force_drop)r.   r-   r/   r   r0   r   r   tearDownrC   r-   r'   s     r(   rH   RoutesTestCase.tearDown1   sB    ('')d+r*   c                 
   SnU R                   R                  SU R                  S9nU R                  R	                  U5        U R                  UR                  U5        U R                  UR                  U R                  5        g%
Request path should not be altered.
z/any/request/	HTTP_HOSTN)r?   getrA   r@   process_requestassertEqual	path_infor   rC   request_urlrequests      r(   test_tenant_routing"RoutesTestCase.test_tenant_routing;   sp     &,,""?-1-?-? # A(**K8 	5r*   c                    SnU R                   R                  SU R                  R                  S9nU R                  R                  U5        U R                  UR                  U5        U R                  UR                  U R                  5        grL   )
r?   rP   r$   r   r@   rQ   rR   rS   r   r"   rT   s      r(   test_public_schema_routing)RoutesTestCase.test_public_schema_routingI   sx     &,,""?-1-?-?-F-F # H(**K8 	););<r*   )r   r?   r   rA   r@   )__name__
__module____qualname____firstlineno__classmethodr   r1   r>   rH   rW   rZ   __static_attributes____classcell__r'   s   @r(   r   r   
   sB    ! !    	6= =r*   r   c                   \   ^  \ rS rSr\U 4S j5       rU 4S jrU 4S jrS rS r	S r
SrU =r$ )	SubfolderRoutesTestCaseX   c                    > [         TU ]  5         S[        l        S[        l        [        R                  [        R                  -   [        l        [        R
                  U l        S[        l        g )Nr   r   zclients/)r   r   r   r   r   r   r    TENANT_SUBFOLDER_PREFIXr%   s    r(   r   "SubfolderRoutesTestCase.setUpClassY   sS     - 9 #+"6"69M9M"M%44+5(r*   c                 H  > [         TU ]  5         [        5       U l        [	        S 5      U l        U R                  5         [        5       " [        5       S9U l	        U R                  R                  5         [        5       " SU R                  S9U l        U R                  R                  5         SU l        [        5       " SS9U l        U R                  R                  5         [        5       " U R                  U R                  S9U l        U R                  R                  5         g )Nc                     U $ r5   r6   r7   s    r(   r9   /SubfolderRoutesTestCase.setUp.<locals>.<lambda>h   s    qr*   r   r   r   r;   r<   r=   )r   r>   r   r?   r   tsfr!   r	   r   r"   r#   r
   r$   rA   r   r   rB   s    r(   r>   SubfolderRoutesTestCase.setUpe   s    %',[9-/<R<TU!46jQUQcQcd!.&(V<-/t{{4K]K]^r*   c                   > SSK Jn  UR                  5         U R                  R	                  5         U R
                  R	                  SS9  U R                  R	                  5         U R                  R	                  5         [        TU ]%  5         g rF   )
r.   r-   r/   r   r0   r   r$   r"   r   rH   rI   s     r(   rH    SubfolderRoutesTestCase.tearDownv   sf    ('')d+!!#!!#r*   c                    SnU R                   R                  SU R                  R                  S9nU R                  R                  U5        U R                  UR                  U5        U R                  UR                  U R                  5        g)rM   z%/clients/tenant.test.com/any/request/rN   N)	r?   rP   r$   r   rm   rQ   rR   rS   r   rT   s      r(   rW   +SubfolderRoutesTestCase.test_tenant_routing   sw     >,,""#J-1-?-?-F-F # H  )**K8 	5r*   c                    SnU R                   R                  SU R                  R                  S9nU R                  R                  U5        U R                  UR                  U5        U R                  UR                  U R                  5        grL   )
r?   rP   r$   r   rm   rQ   rR   rS   r   r"   rT   s      r(   rZ   2SubfolderRoutesTestCase.test_public_schema_routing   sx     &,,""?-1-?-?-F-F # H  )**K8 	););<r*   c                    U R                   R                  SU R                  R                  S9nU R	                  U R
                  R                  5         U R
                  R                  U5        SSS5        g! , (       d  f       g= f)rM   z/clients/not-found/any/request/rN   N)r?   rP   r$   r   assertRaisesrm   TENANT_NOT_FOUND_EXCEPTIONrQ   )rC   rV   s     r(   test_missing_tenant+SubfolderRoutesTestCase.test_missing_tenant   si     ,,""#D-1-?-?-F-F # H txxBBCHH$$W- DCCs   A99
B)r   r?   r$   r"   r   rA   rm   )r\   r]   r^   r_   r`   r   r>   rH   rW   rZ   rx   ra   rb   rc   s   @r(   re   re   X   s3    	6 	6"6=. .r*   re   c                       \ rS rSrS rSrg)$SubfolderRoutesWithoutPrefixTestCase   c                    S[         l        U R                  [        5         [	        S 5        SSS5        S[         l        U R                  [        5         [	        S 5        SSS5        g! , (       d  f       ND= f! , (       d  f       g= f)z`
Should raise ImproperlyConfigured if no sensible TENANT_SUBFOLDER_PREFIX
is found in settings.
Nc                     U $ r5   r6   r7   s    r(   r9   \SubfolderRoutesWithoutPrefixTestCase.test_subfolder_routing_without_prefix.<locals>.<lambda>       r*   z  c                     U $ r5   r6   r7   s    r(   r9   r      r   r*   )r   rh   rv   r   r   )rC   s    r(   %test_subfolder_routing_without_prefixJSubfolderRoutesWithoutPrefixTestCase.test_subfolder_routing_without_prefix   sa    
 ,0(34%k2 5+/(34%k2 54 54 54s   A,A=,
A:=
Br6   N)r\   r]   r^   r_   r   ra   r6   r*   r(   r{   r{      s    
3r*   r{   N)django.confr   django.core.exceptionsr   django.test.clientr   django_tenants.middlewarer   r   django_tenants.tests.testcasesr   django_tenants.utilsr	   r
   r   r   re   r{   r6   r*   r(   <module>r      sD      7 - U 7 b bK=\ K=\O.l O.d3< 3r*   