Beispiel #1
0
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")
Beispiel #2
0
 def setUp(self):
     self.socket = FakeSocket()
     self.verifier = FakeVerifier()
     self.mac_adapter = MacOSAdapter(socket_=self.socket, verifier=self.verifier)