Files
agent-call/tests/test_sip_probe.py
2026-09-14 14:57:18 +08:00

45 lines
1.6 KiB
Python

import base64
import unittest
from deploy import sip_probe
class SipProbeTests(unittest.TestCase):
def test_summarize_uses_first_final_response(self):
output = """CALL_START
INVITE sip:708913851814181@provider SIP/2.0
SIP/2.0 100 trying
SIP/2.0 404 Not Found
Reason: Q.850;cause=16;text=\"NORMAL_CLEARING\"
SIP/2.0 200 OK
0 active channels
"""
result = sip_probe.summarize(output, "708913851814181")
self.assertEqual(result["result"], "rejected")
self.assertEqual(result["final_response"]["code"], 404)
self.assertEqual(result["reason"], 'Q.850;cause=16;text="NORMAL_CLEARING"')
self.assertEqual(result["active_channels"], 0)
def test_remote_command_is_short_and_keeps_logger_on(self):
command = sip_probe.remote_command("13851814181", "708913851814181", 5)
self.assertIn("pjsip set logger on", command)
self.assertIn("Wait 5", command)
self.assertIn("sleep 7", command)
self.assertNotIn("pjsip set logger off", command)
def test_output_text_accepts_plain_and_base64(self):
plain = "CALL_START\nSIP/2.0 404 Not Found\n"
encoded = base64.b64encode(plain.encode()).decode()
self.assertEqual(sip_probe.output_text({"Output": plain}), plain)
self.assertEqual(sip_probe.output_text({"Output": encoded}), plain)
def test_number_validation_preserves_original_digits(self):
number = "001380051234567"
self.assertEqual(sip_probe.validate_number(number), number)
with self.assertRaises(ValueError):
sip_probe.validate_number("+861380051234567")
if __name__ == "__main__":
unittest.main()