From 2af0e6407ad654d02335f9bb5049a9cf42f64b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 27 Jan 2021 16:58:30 +0100 Subject: [PATCH] tests/fprintd: Make prints not writable by turning them into directories Given that the storage will use unlink to delete them, we'll just fail while writing them, in this way we'll be able to run such tests also in CI. --- tests/fprintd.py | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/tests/fprintd.py b/tests/fprintd.py index f3d6a62..c59d4ff 100644 --- a/tests/fprintd.py +++ b/tests/fprintd.py @@ -360,6 +360,16 @@ class FPrintdTest(dbusmock.DBusTestCase): def get_print_name_file_path(self, user, finger_name): return self.get_print_file_path(user, FINGERS_MAP[finger_name]) + def set_print_not_writable(self, user, finger): + # Replace the print with a directory, so that deletion via unlink will fail + # But it is still listed, not using chmod as it won't work in CI environment + print_file = self.get_print_file_path(user, finger) + if os.path.exists(print_file): + os.rename(print_file, print_file + '_renamed') + self.addCleanup(os.rename, print_file + '_renamed', print_file) + os.makedirs(print_file) + self.addCleanup(os.rmdir, print_file) + def assertFingerInStorage(self, user, finger): self.assertTrue(os.path.exists(self.get_print_file_path(user, finger))) @@ -1496,11 +1506,7 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.enroll_image('whorl') self.enroll_image('tented_arch', finger='left-index-finger') - print_file = self.get_print_file_path('testuser', FPrint.Finger.RIGHT_INDEX) - device_dir = os.path.dirname(print_file) - os.chmod(device_dir, mode=0o500) - self.addCleanup(os.chmod, device_dir, mode=0o750) - self.skipTestIfCanWrite(device_dir) + self.set_print_not_writable('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) @@ -1509,7 +1515,7 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.device.DeleteEnrolledFingers('(s)', 'testuser') self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) - self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) + self.assertFingerNotInStorage('testuser', FPrint.Finger.LEFT_INDEX) def test_enroll_delete2(self): self.enroll_image('whorl') @@ -1539,11 +1545,7 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.enroll_image('whorl') self.enroll_image('tented_arch', finger='left-index-finger') - print_file = self.get_print_file_path('testuser', FPrint.Finger.RIGHT_INDEX) - device_dir = os.path.dirname(print_file) - os.chmod(device_dir, mode=0o500) - self.addCleanup(os.chmod, device_dir, mode=0o750) - self.skipTestIfCanWrite(device_dir) + self.set_print_not_writable('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) @@ -1552,7 +1554,7 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.device.DeleteEnrolledFingers2() self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) - self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) + self.assertFingerNotInStorage('testuser', FPrint.Finger.LEFT_INDEX) def test_enroll_delete_single(self): self.enroll_image('whorl', finger='right-index-finger') @@ -1573,11 +1575,7 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.enroll_image('whorl', finger='right-index-finger') self.enroll_image('tented_arch', finger='left-index-finger') - print_file = self.get_print_file_path('testuser', FPrint.Finger.RIGHT_INDEX) - device_dir = os.path.dirname(print_file) - os.chmod(device_dir, mode=0o500) - self.addCleanup(os.chmod, device_dir, mode=0o750) - self.skipTestIfCanWrite(device_dir) + self.set_print_not_writable('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) @@ -1588,6 +1586,8 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.assertFingerInStorage('testuser', FPrint.Finger.LEFT_INDEX) self.assertFingerInStorage('testuser', FPrint.Finger.RIGHT_INDEX) + self.set_print_not_writable('testuser', FPrint.Finger.LEFT_INDEX) + with self.assertFprintError('PrintsNotDeleted'): self.device.DeleteEnrolledFinger('(s)', 'left-index-finger') @@ -1613,6 +1613,13 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): with self.assertFprintError('NoEnrolledPrints'): self.device.VerifyStart('(s)', 'any') + def test_verify_read_print_error(self): + self.enroll_image('whorl', finger='left-thumb') + self.set_print_not_writable('testuser', FPrint.Finger.LEFT_THUMB) + + with self.assertFprintError('NoEnrolledPrints'): + self.device.VerifyStart('(s)', 'any') + def test_enroll_stop_cancels(self): self.device.EnrollStart('(s)', 'left-index-finger') self.device.EnrollStop()