Projeto do Agent Contas ORACLE

This commit is contained in:
2026-08-19 09:35:50 -03:00
commit 950a2bcd33
1366 changed files with 177217 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
from __future__ import annotations
import os
from unittest.mock import patch
from app.domain.contas.client import TimApiClient
def _real_client() -> TimApiClient:
c = TimApiClient()
c.mock = False
return c
def test_vas_history_preserves_original_header_contract(monkeypatch):
monkeypatch.setenv("TIM_VAS_HISTORY_URL", "http://mock/servicesHistory")
monkeypatch.setenv("TIM_VAS_HISTORY_AUTH", "Basic token")
monkeypatch.setenv("TIM_VAS_HISTORY_CLIENT_ID", "TIMX")
monkeypatch.setenv("TIM_VAS_HISTORY_MESSAGE_ID", "msg-1")
c = _real_client()
with patch.object(c, "request", return_value={}) as req:
c.historico_vas("12981114135")
args, kwargs = req.call_args
assert args[:2] == ("GET", "http://mock/servicesHistory?msisdn=12981114135")
assert kwargs["headers"]["clientId"] == "TIMX"
assert kwargs["headers"]["messageId"] == "msg-1"
assert kwargs["headers"]["Authorization"] == "Basic token"
def test_contrato_uses_clientId_not_client_id(monkeypatch):
monkeypatch.setenv("TIM_CONTRATO_URL", "http://test")
monkeypatch.setenv("TIM_CONTRATO_AUTH", "Basic test")
monkeypatch.setenv("TIM_CONTRATO_CLIENT_ID", "TEST")
c = _real_client()
with patch.object(c, "request", return_value={}) as req:
c.contrato("11988888888")
args, kwargs = req.call_args
assert args[:2] == ("GET", "http://test/11988888888")
assert kwargs["headers"]["clientId"] == "TEST"
assert "client_id" not in kwargs["headers"]
assert kwargs["headers"]["Authorization"] == "Basic test"
def test_profile_full_uses_original_ClientID_header(monkeypatch):
monkeypatch.setenv("TIM_PROFILE_FULL_URL", "http://test/access/v1/info/{msisdn}")
monkeypatch.setenv("TIM_PROFILE_FULL_AUTH", "Basic token")
monkeypatch.setenv("TIM_PROFILE_FULL_CLIENT_ID", "AIAGENTCR")
c = _real_client()
with patch.object(c, "request", return_value={}) as req:
c.profile_full("5511999999999")
args, kwargs = req.call_args
assert args[:2] == ("GET", "http://test/access/v1/info/5511999999999")
assert kwargs["headers"]["ClientID"] == "AIAGENTCR"
assert kwargs["headers"]["Authorization"] == "Basic token"
def test_cancelamento_always_sends_non_empty_message_id(monkeypatch):
monkeypatch.setenv("TIM_CANCELAMENTO_URL", "http://test/cancel")
c = _real_client()
service = {"appId": "14534", "cspId": "740"}
with patch.object(c, "request", return_value={"ok": True}) as req:
c.cancelar_vas("11943896592", service, protocol="PROT-789")
_args, kwargs = req.call_args
assert kwargs["payload"]["channel"] == "AIAGENTCR"
assert kwargs["payload"]["interactionProtocol"] == "PROT-789"
assert kwargs["headers"]["messageId"]
def test_sms_preserva_sender_name_original(monkeypatch):
from app.domain.contas.client import TimApiClient
monkeypatch.setenv("TIM_USE_MOCK_GATEWAY", "false")
monkeypatch.setenv("TIM_GATEWAY_MODE", "real")
monkeypatch.setenv("TIM_SMS_URL", "http://test/sms")
monkeypatch.setenv("TIM_SMS_AUTH", "Basic static")
monkeypatch.setenv("TIM_SMS_CLIENT_ID", "CHAT")
monkeypatch.setenv("TIM_SMS_SENDER_ADDRESS", "324")
monkeypatch.delenv("TIM_SMS_SENDER_NAME", raising=False)
client = TimApiClient()
captured = {}
def fake_request(method, url, **kwargs):
captured.update({"method": method, "url": url, **kwargs})
return {"resourceURL": "http://sms/1"}
monkeypatch.setattr(client, "request", fake_request)
client.sms("11999999999", "mensagem")
assert captured["method"] == "POST"
assert captured["payload"]["senderAddress"] == "324"
assert captured["payload"]["senderName"] == "TIM Brasil"
assert captured["payload"]["longURL"] == "mensagem"
assert captured["headers"]["clientId"] == "CHAT"
assert captured["headers"]["Authorization"] == "Basic static"
def test_service_request_status_message_id_prioriza_call_id(monkeypatch):
from app.domain.contas.client import TimApiClient
monkeypatch.setenv("TIM_USE_MOCK_GATEWAY", "false")
monkeypatch.setenv("TIM_GATEWAY_MODE", "real")
monkeypatch.setenv("TIM_SERVICE_REQUEST_STATUS_URL", "http://test/sr")
client = TimApiClient()
captured = {}
def fake_request(method, url, **kwargs):
captured.update({"method": method, "url": url, **kwargs})
return {"ok": True}
monkeypatch.setattr(client, "request", fake_request)
client.status_sr({
"channel": "AIAGENTCR",
"protocolNumber": "PRT-123",
"ura_call_id": "CALL-123",
"session_id": "sess-1",
})
assert captured["payload"]["serviceRequest"]["protocolNumber"] == "PRT-123"
assert captured["headers"]["messageId"] == "CALL-123"