Projeto do Agent Contas ORACLE
This commit is contained in:
69
tests/migration/test_tim_contract_parity.py
Normal file
69
tests/migration/test_tim_contract_parity.py
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
|
||||
def test_protocol_v2_contract(monkeypatch):
|
||||
from app.domain.contas.client import TimApiClient
|
||||
|
||||
monkeypatch.setenv("TIM_USE_MOCK_GATEWAY", "false")
|
||||
monkeypatch.setenv("TIM_GATEWAY_MODE", "real")
|
||||
monkeypatch.setenv("TIM_PROTOCOL_URL", "http://test/protocol")
|
||||
client = TimApiClient()
|
||||
captured = {}
|
||||
|
||||
def fake_request(method, url, **kwargs):
|
||||
captured.update(method=method, url=url, **kwargs)
|
||||
return {"interactionProtocol": "PRT-999"}
|
||||
|
||||
monkeypatch.setattr(client, "request", fake_request)
|
||||
result = client.abrir_protocolo({
|
||||
"msisdn": "11999998888",
|
||||
"socialSecNo": "12345678900",
|
||||
"customerId": "C1",
|
||||
"customerName": "Cliente Teste",
|
||||
"customerEmail": "teste@example.com",
|
||||
"customerPhone1": "11999999999",
|
||||
"accessType": "Pós-Pago",
|
||||
"serviceRequestUserId": "USR123",
|
||||
"reason1": "Vendas", "reason2": "Cancelamento", "reason3": "Retencao",
|
||||
"requestStatus": "Aberto", "status": "OPENED",
|
||||
"serviceRequestNotes": "Obs",
|
||||
"interactionCallId": "CALL-1",
|
||||
"interactionReasonId": "R1", "interactionAmount": "1", "interactionRequestSla": "SLA-1",
|
||||
"directionContact": "FROM-CLIENT", "clientId": "BFFDIGITAL", "messageId": "msg-9",
|
||||
"authorization_oam": "Bearer oam", "cn_field": "CN", "type_field": "TYPE",
|
||||
})
|
||||
assert result["interactionProtocol"] == "PRT-999"
|
||||
assert captured["method"] == "POST"
|
||||
body = captured["payload"]
|
||||
assert body["assetId"] == "11999998888"
|
||||
assert body["channel"] == "AIAGENTCR"
|
||||
assert body["serviceRequest"]["reason2"] == "Cancelamento"
|
||||
assert body["interaction"]["crmSource"] == "Siebel Pós"
|
||||
assert body["interaction"]["source"] == "AIAGENTCR"
|
||||
assert body["interaction"]["requestFlag"] is False
|
||||
assert captured["headers"]["messageId"] == "msg-9"
|
||||
assert captured["headers"]["Authorizationoam"] == "Bearer oam"
|
||||
|
||||
|
||||
def test_rct_retry_policy_preserves_attempt_semantics():
|
||||
from app.domain.contas.rct_policy import rct_tags_for_attempt
|
||||
assert rct_tags_for_attempt("cancela_vas", 1, success=False) == ("RCT.002",)
|
||||
assert rct_tags_for_attempt("cancela_vas", 2, success=True) == ("RCT.003",)
|
||||
assert rct_tags_for_attempt("sgr_codbar", 1, success=False) == ("RCT.014",)
|
||||
assert rct_tags_for_attempt("sgr_codbar", 2, success=True) == ("RCT.015",)
|
||||
assert rct_tags_for_attempt("contestacao", 3, success=True) == ("RCT.011",)
|
||||
|
||||
|
||||
def test_billing_analysis_anexa_transport_metadata_de_tentativas(monkeypatch):
|
||||
from app.domain.contas.client import TimApiClient
|
||||
client = TimApiClient(); client.mock = False
|
||||
monkeypatch.setenv("TIM_DIVERGENCIA_URL", "http://tim/billingAnalysis")
|
||||
def fake_request(method, url, **kwargs):
|
||||
kwargs["attempt_log"].extend([
|
||||
{"attempt": 1, "success": False, "status_code": 500, "latency_ms": 10, "error": "x"},
|
||||
{"attempt": 2, "success": True, "status_code": 200, "latency_ms": 8},
|
||||
])
|
||||
return {"invoiceExplanation": "ok"}
|
||||
monkeypatch.setattr(client, "request", fake_request)
|
||||
result = client.billing_analysis("11999999999")
|
||||
assert result["_transport"]["rct_operation"] == "base_conhecimento"
|
||||
assert [a["attempt"] for a in result["_transport"]["attempts"]] == [1, 2]
|
||||
Reference in New Issue
Block a user