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()