| import unittest | |
| from aioice import Candidate | |
| class CandidateTest(unittest.TestCase): | |
| def test_can_pair_ipv4(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 12345 typ host generation 0" | |
| ) | |
| self.assertTrue(candidate_a.can_pair_with(candidate_b)) | |
| def test_can_pair_ipv4_case_insensitive(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 1 UDP 659136 1.2.3.4 12345 typ host generation 0" | |
| ) | |
| self.assertTrue(candidate_a.can_pair_with(candidate_b)) | |
| def test_can_pair_ipv6(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 2a02:0db8:85a3:0000:0000:8a2e:0370:7334 31102" | |
| " typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 2a02:0db8:85a3:0000:0000:8a2e:0370:7334 12345" | |
| " typ host generation 0" | |
| ) | |
| self.assertTrue(candidate_a.can_pair_with(candidate_b)) | |
| def test_cannot_pair_ipv4_ipv6(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 2a02:0db8:85a3:0000:0000:8a2e:0370:7334 12345" | |
| " typ host generation 0" | |
| ) | |
| self.assertFalse(candidate_a.can_pair_with(candidate_b)) | |
| def test_cannot_pair_different_components(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 2 udp 659136 1.2.3.4 12345 typ host generation 0" | |
| ) | |
| self.assertFalse(candidate_a.can_pair_with(candidate_b)) | |
| def test_cannot_pair_different_transports(self): | |
| candidate_a = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| candidate_b = Candidate.from_sdp( | |
| "6815297761 1 tcp 659136 1.2.3.4 12345 typ host generation 0 tcptype active" | |
| ) | |
| self.assertFalse(candidate_a.can_pair_with(candidate_b)) | |
| def test_from_sdp_udp(self): | |
| candidate = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| self.assertEqual(candidate.foundation, "6815297761") | |
| self.assertEqual(candidate.component, 1) | |
| self.assertEqual(candidate.transport, "udp") | |
| self.assertEqual(candidate.priority, 659136) | |
| self.assertEqual(candidate.host, "1.2.3.4") | |
| self.assertEqual(candidate.port, 31102) | |
| self.assertEqual(candidate.type, "host") | |
| self.assertEqual(candidate.generation, 0) | |
| self.assertEqual( | |
| candidate.to_sdp(), | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0", | |
| ) | |
| def test_from_sdp_udp_srflx(self): | |
| candidate = Candidate.from_sdp( | |
| "1 1 UDP 1686052863 1.2.3.4 42705 typ srflx raddr 192.168.1.101 rport 42705" | |
| ) | |
| self.assertEqual(candidate.foundation, "1") | |
| self.assertEqual(candidate.component, 1) | |
| self.assertEqual(candidate.transport, "UDP") | |
| self.assertEqual(candidate.priority, 1686052863) | |
| self.assertEqual(candidate.host, "1.2.3.4") | |
| self.assertEqual(candidate.port, 42705) | |
| self.assertEqual(candidate.type, "srflx") | |
| self.assertEqual(candidate.related_address, "192.168.1.101") | |
| self.assertEqual(candidate.related_port, 42705) | |
| self.assertEqual(candidate.generation, None) | |
| self.assertEqual( | |
| candidate.to_sdp(), | |
| "1 1 UDP 1686052863 1.2.3.4 42705 typ srflx raddr 192.168.1.101 " | |
| "rport 42705", | |
| ) | |
| def test_from_sdp_tcp(self): | |
| candidate = Candidate.from_sdp( | |
| "1936595596 1 tcp 1518214911 1.2.3.4 9 typ host " | |
| "tcptype active generation 0 network-id 1 network-cost 10" | |
| ) | |
| self.assertEqual(candidate.foundation, "1936595596") | |
| self.assertEqual(candidate.component, 1) | |
| self.assertEqual(candidate.transport, "tcp") | |
| self.assertEqual(candidate.priority, 1518214911) | |
| self.assertEqual(candidate.host, "1.2.3.4") | |
| self.assertEqual(candidate.port, 9) | |
| self.assertEqual(candidate.type, "host") | |
| self.assertEqual(candidate.tcptype, "active") | |
| self.assertEqual(candidate.generation, 0) | |
| self.assertEqual( | |
| candidate.to_sdp(), | |
| "1936595596 1 tcp 1518214911 1.2.3.4 9 typ host tcptype active " | |
| "generation 0", | |
| ) | |
| def test_from_sdp_no_generation(self): | |
| candidate = Candidate.from_sdp("6815297761 1 udp 659136 1.2.3.4 31102 typ host") | |
| self.assertEqual(candidate.foundation, "6815297761") | |
| self.assertEqual(candidate.component, 1) | |
| self.assertEqual(candidate.transport, "udp") | |
| self.assertEqual(candidate.priority, 659136) | |
| self.assertEqual(candidate.host, "1.2.3.4") | |
| self.assertEqual(candidate.port, 31102) | |
| self.assertEqual(candidate.type, "host") | |
| self.assertEqual(candidate.generation, None) | |
| self.assertEqual( | |
| candidate.to_sdp(), "6815297761 1 udp 659136 1.2.3.4 31102 typ host" | |
| ) | |
| def test_from_sdp_truncated(self): | |
| with self.assertRaises(ValueError): | |
| Candidate.from_sdp("6815297761 1 udp 659136 1.2.3.4 31102 typ") | |
| def test_repr(self): | |
| candidate = Candidate.from_sdp( | |
| "6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0" | |
| ) | |
| self.assertEqual( | |
| repr(candidate), | |
| "Candidate(6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0)", | |
| ) | |