
    i6                     f    d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
mZmZ d Zd Zd Zd Zd	 ZdS )
u   配置模块测试。    N)Path)Settingsload_configc                     t                      } | j        }d}||k    }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    dx}x}}| j
        }d	}||k    }|st          j        d|fd
||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    dx}x}}| j        }d}||u }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    dx}x}}dS )u   测试默认配置值。i  ==)z<%(py2)s
{%(py2)s = %(py0)s.session_idle_timeout
} == %(py5)ssettings)py0py2py5assert %(py7)spy7N   )z<%(py2)s
{%(py2)s = %(py0)s.session_max_per_user
} == %(py5)sTis)z9%(py2)s
{%(py2)s = %(py0)s.guardrail_enabled
} is %(py5)s)r   session_idle_timeout
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationsession_max_per_userguardrail_enabled)r	   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s         ,/root/projects/qq-shell/tests/test_config.pytest_default_settingsr#      s   zzH(0D0(D0000000000(D0000000000008000008000000(0000D000000000000000000000000000(-A-(A----------(A------------8-----8------(----A---------------------------%--%----------%------------8-----8------%---------------------------------    c                 J   |                      dd           t                      }d}|j        }||v }|st          j        d|fd||f          t          j        |          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}x}}d}|j        }||v }|st          j        d|fd||f          t          j        |          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}x}}d
S )u   测试环境变量覆盖。BUTLER_ALLOWED_USERSz["123", "456"]123)in)z5%(py1)s in %(py5)s
{%(py5)s = %(py3)s.allowed_users
}r	   )py1py3r   r   r   N456)setenvr   allowed_usersr   r   r   r   r   r   r   r   )monkeypatchr	   @py_assert0r   @py_assert2r    r!   s          r"   test_env_overrider1      s   -/?@@@zzH*H**5***********5******5***********H*****H***********************************H**5***********5******5***********H*****H************************************r$   c                 x   | dz  }|                     d           t          |          }|d         d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    dx}x}}dS )u   测试从 YAML 加载配置。zconfig.yamlz+
butler:
  session:
    idle_timeout: 7200
butlersessionidle_timeouti   r   )z%(py1)s == %(py4)s)r)   py4zassert %(py6)spy6N)
write_textr   r   r   r   r   r   )tmp_pathconfig_fileconfigr/   r   r0   @py_format5@py_format7s           r"   test_load_config_from_yamlr>      s    ]*K    
 %%F(I&~6>$>6$>>>>>>>>>>6$>>>>>6>>>>$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>r$   c                     t          ddg          } | j        }d} ||          }d}||u }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          t          j        |          dz  }d	d
|iz  }t          t          j	        |                    dx}x}x}x}}| j        }d} ||          }d}||u }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          t          j        |          dz  }d	d
|iz  }t          t          j	        |                    dx}x}x}x}}dS )u   测试用户白名单检查。user123user456r-   Tr   zU%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_user_allowed
}(%(py4)s)
} is %(py9)sr	   r
   r   r6   r7   py9assert %(py11)spy11Nuser789F
r   is_user_allowedr   r   r   r   r   r   r   r   r	   r   r   @py_assert5@py_assert8@py_assert7@py_format10@py_format12s           r"   test_is_user_allowedrQ   $   s]   y)&<===H#6I6##I..6$6.$6666666666.$6666666666668666668666666#6666I6666.6666$6666666666666666666666666666666#7I7##I..7%7.%7777777777.%7777777777778777778777777#7777I7777.7777%777777777777777777777777777777777r$   c                     t          g           } | j        }d} ||          }d}||u }|st          j        d|fd||f          dt	          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          t          j        |          dz  }dd	|iz  }t          t          j	        |                    d
x}x}x}x}}d
S )u!   空白名单允许所有用户。rB   anyoneTr   rC   r	   rD   rF   rG   NrI   rK   s           r"   test_empty_whitelist_allows_allrT   +   s8   b)))H#5H5##H--55-5555555555-5555555555558555558555555#5555H5555-5555555555555555555555555555555555555r$   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   pytestpathlibr   butler.configr   r   r#   r1   r>   rQ   rT    r$   r"   <module>r^      s                          / / / / / / / /. . .+ + +	? 	? 	?8 8 86 6 6 6 6r$   