class TestMac(unittest.TestCase): def setUp(self): self.socket = FakeSocket() self.verifier = FakeVerifier() self.mac_adapter = MacOSAdapter(socket_=self.socket, verifier=self.verifier) def test_is_link_local_address(self): # unicast, link-local, no scope id embedded is_link_local = self.mac_adapter._is_link_local(b"\xfe\x80\x00\x00\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97") self.assertTrue(is_link_local) # unicast, link-local, scope id embedded is_link_local = self.mac_adapter._is_link_local(b"\xfe\x80\x00\x05\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97") self.assertTrue(is_link_local) # multicast, link-local, no scope id embedded is_link_local = self.mac_adapter._is_link_local(b"\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01") self.assertTrue(is_link_local) # multicast, link-local, scope id embedded is_link_local = self.mac_adapter._is_link_local(b"\xff\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01") self.assertTrue(is_link_local) # unicast global is_link_local = self.mac_adapter._is_link_local(b"\x20\x01\x0d\xb8\x85\xa3\x00\x00\x00\x00\x8a\x2e\x03\x70\x73\x34") self.assertFalse(is_link_local) def test_remove_scope_id_from_addrs(self): # no scope id included, nothing to do header = bytearray(b"\x60\x00\x00\x00\x01\xc8\x3a\xff\xfe\x80\x00\x00\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01") header_corrected = b"\x60\x00\x00\x00\x01\xc8\x3a\xff\xfe\x80\x00\x00\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" self.mac_adapter._remove_scope_id_from_addrs(header) self.assertEqual(header, header_corrected) # scope id included header = bytearray(b"\x60\x00\x00\x00\x01\xc8\x3a\xff\xfe\x80\x00\x04\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97\xff\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01") header_corrected = b"\x60\x00\x00\x00\x01\xc8\x3a\xff\xfe\x80\x00\x00\x00\x00\x00\x00\x2c\xf2\x7e\xf7\x8f\x98\xdf\x97\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01" scopeid = self.mac_adapter._remove_scope_id_from_addrs(header) self.assertEqual(header, header_corrected) self.assertEqual(scopeid, 4) def test_send_result_accept(self): ID = b"\x08\x00\x00\x00\x00\x00\x00\x00" self.mac_adapter._send_result(ID, self.mac_adapter.ACTION_ACCEPT) self.assertEqual(len(self.socket.data), 1) self.assertEqual(self.socket.data[0], ID + b"\x00\x00\x00\x00\x00\x00\x00\x00") def test_send_result_reject(self): ID = b"\x05\x00\x00\x00\x00\x00\x00\x00" self.mac_adapter._send_result(ID, self.mac_adapter.ACTION_REJECT) self.assertEqual(len(self.socket.data), 1) self.assertEqual(self.socket.data[0], ID + b"\x01\x00\x00\x00\x00\x00\x00\x00")
def setUp(self): self.socket = FakeSocket() self.verifier = FakeVerifier() self.mac_adapter = MacOSAdapter(socket_=self.socket, verifier=self.verifier)