Files
carinha-control-panel/tests/test_api_config.py

21 lines
1.3 KiB
Python

import unittest,tempfile,os,json
from pathlib import Path
from unittest.mock import patch
import gemini
from api_config import ConfigAPI
class APIConfigTest(unittest.TestCase):
def test_persistencia_e_sem_chave_na_resposta(self):
with tempfile.TemporaryDirectory() as d,patch.dict(os.environ,{'GEMINI_API_KEY':'teste-chave-original-123456'}),patch.object(gemini,'MODELO','modelo-original'):
p=Path(d)/'api.json';c=ConfigAPI(p);secret='nova-chave-de-teste-123456'
status=c.salvar(dict(modelo='gemini-flash-lite-latest',chave=secret))
self.assertNotIn(secret,json.dumps(status));self.assertTrue(status['configurada'])
c.salvar(dict(modelo='gemini-flash-latest'));self.assertEqual(json.loads(p.read_text())['chave'],secret)
loaded=ConfigAPI(p);self.assertEqual(loaded.status()['modelo'],'gemini-flash-latest')
def test_teste_de_conexao_e_validacao(self):
with tempfile.TemporaryDirectory() as d:
c=ConfigAPI(Path(d)/'api.json')
with self.assertRaises(ValueError):c.salvar(dict(modelo='../invalido',chave='abc'))
with patch('gemini.gerar_json',return_value={'ok':True}):self.assertTrue(c.testar()['ok'])
with patch('gemini.gerar_json',side_effect=RuntimeError('segredo')):
result=c.testar();self.assertFalse(result['ok']);self.assertNotIn('segredo',json.dumps(result))