Ë
    Ì
âi  ã                   ó<   — d Z ddlZddlmZ ddlmZ  G d„ d«      Zy)z%
Environment variables checks module
é    N)ÚPath)ÚLoggerc                   óP   — e Zd ZdZdedefd„Zdefd„Zdefd„Z	defd„Z
defd	„Zy
)ÚEnvironmentChecksz)Check environment variables configurationÚloggerÚproject_dirc                 óÀ   — || _         t        |«      | _        | j                  dz  | _        | j                  j	                  «       rddlm}  || j                  «       y y )Nz.envr   )Úload_dotenv)r   r   r   Úenv_pathÚexistsÚdotenvr
   )Úselfr   r   r
   s       ú7/home/factor_ks/STREAMA2026/tests/modules/env_checks.pyÚ__init__zEnvironmentChecks.__init__   sL   € ØˆŒÜ Ó,ˆÔØ×(Ñ(¨6Ñ1ˆŒà�=‰=×ÑÔ!Ý*Ù˜Ÿ™Õ&ð "ó    Úreturnc                 óX  — | j                   j                  d«       d}| j                  «       sd}| j                  j	                  «       r$| j                  «       sd}| j                  «       sd}|r| j                   j                  dd«       |S | j                   j                  dd«       |S )z#Run all environment variable checkszEnvironment Variables CheckTFÚENVz&All environment variable checks passedz'Some environment variable checks failed)	r   Ú	subheaderÚ_check_env_filer   r   Ú_check_required_variablesÚ_check_variable_securityÚsuccessÚerror)r   Úall_oks     r   Úrun_all_checksz EnvironmentChecks.run_all_checks   sž   € à�‰×ÑÐ;Ô<àˆð ×#Ñ#Ô%ØˆFð �=‰=×ÑÔ!Ø×1Ñ1Ô3Ø�ð ×0Ñ0Ô2Ø�áØ�K‰K×Ñ Ð'OÔPð ˆð �K‰K×Ñ˜eÐ%NÔOàˆr   c                 ó  — | j                   j                  dd«       | j                  j                  «       r| j                   j	                  dd«       y| j                   j                  dd«       | j                   j                  dd«       y)zCheck if .env file existsr   zChecking .env file...u   .env file exists âœ“Tz.env file not foundz"Create .env file from .env.exampleF)r   Úinfor   r   r   r   )r   s    r   r   z!EnvironmentChecks._check_env_file/   sl   € à�‰×Ñ˜Ð 7Ô8à�=‰=×ÑÔ!Ø�K‰K×Ñ Ð'=Ô>Øà�K‰K×Ñ˜eÐ%:Ô;Ø�K‰K×Ñ˜UÐ$HÔIØr   c                 óV  — | j                   j                  dd«       dddddœ}d}|j                  «       D ]p  \  }}t        j                  |«      }|r0|j                  «       r | j                   j                  d|› d	�«       ŒM| j                   j                  d|› d
|› d�«       d}Œr |S )z'Check if all required variables are setr   zChecking required variables...zDatabase passwordzRedis passwordzJWT secret keyzAllowed CORS origins)ÚPOSTGRES_PASSWORDÚREDIS_PASSWORDÚJWT_SECRET_KEYÚALLOWED_ORIGINSTu	   : set âœ“z: not set (ú)F)r   r   ÚitemsÚosÚgetenvÚstripr   r   )r   Úrequired_varsr   Úvar_nameÚdescriptionÚvalues         r   r   z+EnvironmentChecks._check_required_variables;   s±   € à�‰×Ñ˜Ð @ÔAð "5Ø.Ø.Ø5ñ	
ˆð ˆØ%2×%8Ñ%8Ó%:ò 	Ñ!ˆH�kÜ—I‘I˜hÓ'ˆEÙ˜Ÿ™œØ—‘×#Ñ# E¨h¨Z°yÐ+AÕBà—‘×!Ñ! %¨H¨:°[ÀÀÈQÐ)OÔPØ‘ð	ð ˆr   c                 óì  — | j                   j                  dd«       d}g }t        j                  dd«      }|dv r| j                   j	                  dd«       d}n;t        |«      d	k  r-| j                   j                  dd
«       |j                  d«       t        j                  dd«      }|dv r| j                   j	                  dd«       d}n;t        |«      d	k  r-| j                   j                  dd«       |j                  d«       t        j                  dd«      }|dv r| j                   j	                  dd«       d}n,t        |«      dk  r| j                   j	                  dd«       d}t        j                  dd«      }|s| j                   j	                  dd«       d}n1d|v r-| j                   j                  dd«       |j                  d«       |s| j                   j                  dd«       |S )z'Check security of environment variablesr   zChecking variable security...Tr    Ú )r.   ÚpostgresÚpasswordÚ123456Úadminz/POSTGRES_PASSWORD: using insecure default valueFé   z?POSTGRES_PASSWORD: too short (should be at least 12 characters)zPOSTGRES_PASSWORD too shortr!   )r.   Úredisr0   r1   z,REDIS_PASSWORD: using insecure default valuez<REDIS_PASSWORD: too short (should be at least 12 characters)zREDIS_PASSWORD too shortr"   )r.   ÚsecretÚkeyzyour-secret-keyz,JWT_SECRET_KEY: using insecure default valueé    z<JWT_SECRET_KEY: too short (should be at least 32 characters)r#   zALLOWED_ORIGINS: not setÚ*zGALLOWED_ORIGINS: contains wildcard (*) - not recommended for productionz!ALLOWED_ORIGINS contains wildcardu   All variables are secure âœ“)	r   r   r&   r'   r   ÚlenÚwarningÚappendr   )r   r   ÚwarningsÚpostgres_passwordÚredis_passwordÚ
jwt_secretÚallowed_originss          r   r   z*EnvironmentChecks._check_variable_securityQ   sÀ  € à�‰×Ñ˜Ð ?Ô@àˆØˆô ŸI™IÐ&9¸2Ó>ÐØÐ OÑOØ�K‰K×Ñ˜eÐ%VÔWØ‰FÜÐ"Ó# bÒ(Ø�K‰K×Ñ Ð'hÔiØ�O‰OÐ9Ô:ô Ÿ™Ð#3°RÓ8ˆØÐ@Ñ@Ø�K‰K×Ñ˜eÐ%SÔTØ‰FÜ�Ó  2Ò%Ø�K‰K×Ñ Ð'eÔfØ�O‰OÐ6Ô7ô —Y‘YÐ/°Ó4ˆ
ØÐAÑAØ�K‰K×Ñ˜eÐ%SÔTØ‰FÜ�‹_˜rÒ!Ø�K‰K×Ñ˜eÐ%cÔdØˆFô Ÿ)™)Ð$5°rÓ:ˆÙØ�K‰K×Ñ˜eÐ%?Ô@Ø‰FØ�OÑ#Ø�K‰K×Ñ Ð'pÔqØ�O‰OÐ?Ô@áØ�K‰K×Ñ Ð'EÔFàˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   Úboolr   r   r   r   © r   r   r   r   	   sH   „ Ù3ð'˜vð '°Có 'ð ó ð4
 ó 
ð¨4ó ð,.¨$ô .r   r   )rD   r&   Úpathlibr   Útests.utils.loggerr   r   rG   r   r   ú<module>rJ      s!   ðñó 
Ý Ý %÷vò vr   