
    pj
                    j    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Z
dd	Zdd
ZddZddZdS )    )annotations)
TestClient)
create_appresolve_write_mode)
system_opsreturnNonec                R   |                      dd           t                      }t          |d          }|j        j        dk    sJ |                    d          j        dk    sJ |                    d	          }|j        d
k    sJ |                                ddik    sJ d S )NJARVIS_FINANCE_WRITE_MODEF)raisingz100.64.0.10P  clientdisabledz/api/health   /api/system/restart-frontend  detailwrite_operations_disabled)	delenvr   r   state
write_modegetstatus_codepostjson)monkeypatchappr   responses       %tests/unit/test_api_write_security.py7test_write_mode_defaults_fail_closed_for_remote_clientsr#   
   s    2EBBB
,,C$:;;;F9:----::m$$0C7777{{9::H3&&&&==??x)DEEEEEEE    c                 6    t          ddi          dk    sJ d S )Nr   
unexpected)environr   r    r$   r"   $test_unknown_write_mode_fails_closedr)      s+    'BL&QRRRV```````r$   c                   g dfd}|                      t          d|           dd lmc mc m} |                      |d|           t          d          }t          |d	          }|                    d
          j	        dk    sJ g k    sJ t          |d	          }|                    d
          j	        dk    sJ dgk    sJ d S )Nactionstrc                H                         |            dd|  | dddddS )N	scheduledrestart_nowzRestart geplant.T)statusr+   	component
started_atmessageworker_startedlog_available)append)r+   callss    r"   fake_restartzMtest_local_only_mode_blocks_tailnet_and_allows_loopback.<locals>.fake_restart   sA    V!))))"!
 
 	
r$   restart_system_componentr   
local_onlyr   r   r   r   r   )z	127.0.0.1r   r   frontend)r+   r,   )
setattrr   !jarvis_finance.api.routers.systemapirouterssystemr   r   r   r   )r   r9   system_routerr    remoteloopbackr8   s         @r"   7test_local_only_mode_blocks_tailnet_and_allows_loopbackrF      s   E

 

 

 

 

 

 
$>MMM============'A<PPP

-
-
-C$:;;;F;;566BcIIIIB;;;;#&:;;;H==788DKKKKZL      r$   c                     t          d          } t          | d          }|                    d          j        dk    sJ d S )Ntestr<   r   r   r   r   )r   r   r   r   )r    rD   s     r"   1test_test_mode_is_restricted_to_testclient_sourcerI   8   sL    

'
'
'C$:;;;F;;566BcIIIIIIr$   c                     t          t          d                    } |                     d                                          }|d         dv sJ d|d         vsJ d|d         vsJ |d         dk    sJ d S )	Nr   r<   z/api/runtime/statusdb_path>   external-runtimeblocked-inside-repo/\r   )r   r   r   r   )r   payloads     r"   'test_runtime_status_redacts_local_pathsrQ   >   s    
j999::Fjj.//4466G9!LLLLLgi(((((wy)))))< J......r$   N)r	   r
   )
__future__r   fastapi.testclientr   jarvis_finance.api.mainr   jarvis_finance.api.securityr   jarvis_finance.servicesr   r#   r)   rF   rI   rQ   r(   r$   r"   <module>rW      s    " " " " " " ) ) ) ) ) ) . . . . . . : : : : : : . . . . . .	F 	F 	F 	Fa a a a! ! ! !<J J J J/ / / / / /r$   