
    %Wi                        d dl Zd dlmc mZ d dlZd dlZej                  j                  d ej                  j                  ej                  j                  e      d             d dlZ G d d      Z G d d      Z G d d      Zy)	    Nz..c                       e Zd ZdZd Zd Zy)TestConfigTokenLoadingu=   환경변수에서 토큰을 정상 로드하는지 테스트c                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= dd	lm} d}||k(  }|st        j                  d
|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)ub   GEMINI_BOT_TOKEN 환경변수가 설정되어 있으면 config에서 정상 로드되어야 한다GEMINI_BOT_TOKENtest-gemini-bot-token-123CODEX_BOT_TOKENtest-codex-bot-token-456CLAUDE_BOT_TOKENtest-claude-bot-token-789configr   )r   ==z%(py0)s == %(py3)spy0py3assert %(py5)spy5N)setenvsysmodulesr   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)selfmonkeypatchr   @py_assert2@py_assert1@py_format4@py_format6s          @/home/jay/workspace/services/multimodel-bot/tests/test_config.py%test_gemini_bot_token_loaded_from_envz<TestConfigTokenLoading.test_gemini_bot_token_loaded_from_env   s    -/JK,.HI-/JKs{{"H%+#>>#>>>>>#>>>>>>>>>>>>>#>>>>>>>>    c                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= dd	lm} d}||k(  }|st        j                  d
|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)ua   CODEX_BOT_TOKEN 환경변수가 설정되어 있으면 config에서 정상 로드되어야 한다r   r   r   r	   r
   r   r   r   )r   r   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   )r    r!   r   r"   r#   r$   r%   s          r&   $test_codex_bot_token_loaded_from_envz;TestConfigTokenLoading.test_codex_bot_token_loaded_from_env   s    -/JK,.HI-/JKs{{"H%*"<<"<<<<<"<<<<<<<<<<<<<"<<<<<<<<r(   N)__name__
__module____qualname____doc__r'   r*    r(   r&   r   r   	   s    G?=r(   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestConfigDefaultsu   기본값 설정 테스트c                 N   |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= ddlm} t        |t              }|sdd	t        j                         v st        j                  t
              rt        j                  t
              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d}d}||kD  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)u>   OWNER_USER_ID 기본값이 올바르게 설정되어야 한다r   dummy-tokenr   r
   r   r   OWNER_USER_ID5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstancer5   intr   py1py2py4N>z%(py0)s > %(py3)sr   r   r   )r   r   r   r   r5   r7   r8   r   r   r   r   r   r   r   r   )	r    r!   r5   @py_assert3@py_format5r"   r#   r$   r%   s	            r&   test_owner_user_id_defaultz-TestConfigDefaults.test_owner_user_id_default*   s3   -}=,m<-}=s{{"H%( ---------z---z------------------------------  }q    }q      }   }   q       r(   c                 N   |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= ddlm} t        |t              }|sdd	t        j                         v st        j                  t
              rt        j                  t
              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d}d}||kD  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)u<   CLI_TIMEOUT 기본값이 올바르게 설정되어야 한다r   r3   r   r
   r   r   CLI_TIMEOUTr6   r7   rE   r8   r9   Nr=   r?   r   r   r   )r   r   r   r   rE   r7   r8   r   r   r   r   r   r   r   r   )	r    r!   rE   r@   rA   r"   r#   r$   r%   s	            r&   test_cli_timeout_defaultz+TestConfigDefaults.test_cli_timeout_default9   s2   -}=,m<-}=s{{"H%& +s++++++++z+++z+++++++++++++++++s+++s++++++++++{Q{Q{{Qr(   c                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= ddlm} d}||k(  }|st        j                  d	|fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)uK   MAX_MESSAGE_LENGTH 기본값이 텔레그램 제한인 4096이어야 한다r   r3   r   r
   r   r   )MAX_MESSAGE_LENGTHi   r   r   rH   r   r   r   N)r   r   r   r   rH   r   r   r   r   r   r   r   r   )r    r!   rH   r"   r#   r$   r%   s          r&   test_max_message_length_defaultz2TestConfigDefaults.test_max_message_length_defaultH   s    -}=,m<-}=s{{"H%-%))!T))))!T))))))!)))!)))T)))))))r(   c                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= ddlm} d}||k\  }|st        j                  d	|fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)u)   CLI_TIMEOUT은 양의 정수여야 한다r   r3   r   r
   r   r   rD      )>=)z%(py0)s >= %(py3)srE   r   r   r   N)r   r   r   r   rE   r   r   r   r   r   r   r   r   )r    r!   rE   r"   r#   r$   r%   s          r&   $test_cli_timeout_is_positive_integerz7TestConfigDefaults.test_cli_timeout_is_positive_integerU   s    -}=,m<-}=s{{"H%&{a{a{{ar(   c                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= ddlm} t        |t              }|sdd	t        j                         v st        j                  t
              rt        j                  t
              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d}y)u*   OWNER_USER_ID는 정수형이어야 한다r   r3   r   r
   r   r   r4   r6   r7   r5   r8   r9   N)r   r   r   r   r5   r7   r8   r   r   r   r   r   r   r   )r    r!   r5   r@   rA   s        r&   test_owner_user_id_is_integerz0TestConfigDefaults.test_owner_user_id_is_integerb   s    -}=,m<-}=s{{"H%(---------z---z------------------------------r(   N)	r+   r,   r-   r.   rB   rF   rI   rM   rO   r/   r(   r&   r1   r1   '   s    $!* .r(   r1   c                       e Zd ZdZd Zd Zy)TestConfigMissingEnvVarsu6   필수 환경변수 누락 시 에러 발생 테스트c                     |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= t        j                  t
              5  ddl}ddd       y# 1 sw Y   yxY w)	uJ   GEMINI_BOT_TOKEN 환경변수가 없으면 KeyError가 발생해야 한다r   Fraisingr   r
   r   r   N)delenvr   r   pytestraisesKeyErrorr   r    r!   r   s      r&   .test_missing_gemini_bot_token_raises_key_errorzGTestConfigMissingEnvVars.test_missing_gemini_bot_token_raises_key_errors   sz    -u=,e<-u=s{{"H%]]8$ 		 	 	s   6BBc                    |j                  dd       |j                  dd       |j                  dd       dt        j                  v rt        j                  d= t	        j
                  t              5  dd	l}d	d	d	       y	# 1 sw Y   y	xY w)
uI   CODEX_BOT_TOKEN 환경변수가 없으면 KeyError가 발생해야 한다r   r3   r
   r   FrS   r   r   N)r   rU   r   r   rV   rW   rX   r   rY   s      r&   -test_missing_codex_bot_token_raises_key_errorzFTestConfigMissingEnvVars.test_missing_codex_bot_token_raises_key_error   st    -}=-}=,e<s{{"H%]]8$ 		 	 	s   4BBN)r+   r,   r-   r.   rZ   r\   r/   r(   r&   rQ   rQ   p   s    @

r(   rQ   )builtinsr   _pytest.assertion.rewrite	assertionrewriter   r   ospathinsertjoindirname__file__rV   r   r1   rQ   r/   r(   r&   <module>rg      sa      
 	 277<< 94@ A = =<F. F.R r(   