mirror of
https://github.com/frida/frida-python
synced 2026-06-08 14:16:17 +00:00
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
import threading
|
|
import time
|
|
import unittest
|
|
|
|
import frida
|
|
|
|
|
|
class TestCore(unittest.TestCase):
|
|
def test_enumerate_devices(self):
|
|
devices = frida.get_device_manager().enumerate_devices()
|
|
self.assertTrue(len(devices) > 0)
|
|
|
|
def test_get_existing_device(self):
|
|
device = frida.get_device_matching(lambda d: d.id == "local")
|
|
self.assertEqual(device.name, "Local System")
|
|
|
|
device = frida.get_device_manager().get_device_matching(lambda d: d.id == "local")
|
|
self.assertEqual(device.name, "Local System")
|
|
|
|
def test_get_nonexistent_device(self):
|
|
def get_nonexistent():
|
|
frida.get_device_manager().get_device_matching(lambda device: device.type == "lol")
|
|
|
|
self.assertRaisesRegex(frida.InvalidArgumentError, "device not found", get_nonexistent)
|
|
|
|
def test_wait_for_nonexistent_device(self):
|
|
def wait_for_nonexistent():
|
|
frida.get_device_manager().get_device_matching(lambda device: device.type == "lol", timeout=0.1)
|
|
|
|
self.assertRaisesRegex(frida.InvalidArgumentError, "device not found", wait_for_nonexistent)
|
|
|
|
def test_cancel_wait_for_nonexistent_device(self):
|
|
cancellable = frida.Cancellable()
|
|
|
|
def wait_for_nonexistent():
|
|
frida.get_device_manager().get_device_matching(
|
|
lambda device: device.type == "lol", timeout=-1, cancellable=cancellable
|
|
)
|
|
|
|
def cancel_after_100ms():
|
|
time.sleep(0.1)
|
|
cancellable.cancel()
|
|
|
|
threading.Thread(target=cancel_after_100ms).start()
|
|
self.assertRaisesRegex(frida.OperationCancelledError, "operation was cancelled", wait_for_nonexistent)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|