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)", )