From f6eb3b3ea5f40777e2244ad4f7c029f154a8b49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Fri, 3 Apr 2020 02:55:33 +0200 Subject: [PATCH] verify: Pass the "any" finger parameter to the daemon fprintd supports "any" finger parameter for the VerifyStart call, and it's up to the daemon to pick the first known if the device doesn't support identification. So remove the check to verify utility and add a test to verify this is respected. --- tests/test_fprintd_utils.py | 19 +++++++++++++++++-- utils/verify.c | 3 +-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/tests/test_fprintd_utils.py b/tests/test_fprintd_utils.py index de9df50..03b61fe 100755 --- a/tests/test_fprintd_utils.py +++ b/tests/test_fprintd_utils.py @@ -89,8 +89,10 @@ class TestFprintdUtilsBase(dbusmock.DBusTestCase): super().tearDown() def setup_device(self): - device_path = self.obj_fprintd_mock.AddDevice('FDO Trigger Finger Laser Reader', 3, 'swipe') - self.device_mock = self.dbus_con.get_object('net.reactivated.Fprint', device_path) + self.device_path = self.obj_fprintd_mock.AddDevice( + 'FDO Trigger Finger Laser Reader', 3, 'swipe') + self.device_mock = self.dbus_con.get_object('net.reactivated.Fprint', + self.device_path) self.set_enrolled_fingers(['left-little-finger', 'right-little-finger']) def set_enrolled_fingers(self, fingers, user='toto'): @@ -236,6 +238,19 @@ class TestFprintdUtilsVerify(TestFprintdUtilsBase): time.sleep(self.sleep_time) self.assertVerifyMatch(True) + def test_fprintd_verify_any_finger_identification(self): + self.obj_fprintd_mock.RemoveDevice(self.device_path) + self.device_path = self.obj_fprintd_mock.AddDevice('Full powered device', + 3, 'press', True) + self.device_mock = self.dbus_con.get_object('net.reactivated.Fprint', + self.device_path) + self.set_enrolled_fingers(VALID_FINGER_NAMES) + self.start_verify_process(finger='any') + + self.device_mock.EmitVerifyStatus('verify-match', True) + time.sleep(self.sleep_time) + self.assertVerifyMatch(True) + def test_fprintd_verify_not_enrolled_fingers(self): for finger in [f for f in VALID_FINGER_NAMES if f not in self.enrolled_fingers]: regex = r'Finger \'{}\' not enrolled'.format(finger) diff --git a/utils/verify.c b/utils/verify.c index 71952b0..719b736 100644 --- a/utils/verify.c +++ b/utils/verify.c @@ -108,8 +108,7 @@ static void find_finger(DBusGProxy *dev, const char *username) exit(1); } - if (finger_name == NULL || strcmp (finger_name, "any") == 0) { - g_free (finger_name); + if (finger_name == NULL) { finger_name = g_strdup (fingers[0]); }