Commit graph

170 commits

Author SHA1 Message Date
Marco Trevisan (Treviño)
5e6af4d56d device: Return enroll-duplicate error on FP_DEVICE_ERROR_DATA_DUPLICATE 2025-02-20 20:15:17 +01:00
Marco Trevisan (Treviño)
798f608033 device: Map the removed and too-hot device errors to disconnected 2025-02-20 20:15:17 +01:00
Marco Trevisan (Treviño)
afb1011e44 device: Add enroll-too-fast error 2025-02-20 20:15:17 +01:00
Marco Trevisan (Treviño)
244be2511f device: Generalize verify-too-fast error
It's not just related to swipe devices, so let's make it more generic
2025-02-20 20:15:17 +01:00
MrNerdHair
b64a4f7fbd Handle new FP_DEVICE_RETRY_TOO_FAST error code 2025-02-13 23:55:33 +00:00
Marco Trevisan (Treviño)
e429e68246 tests/fprintd: Make tests pass with libfprint 1.94.7 2024-04-04 03:13:40 +02:00
Marco Trevisan (Treviño)
d065842604 tests/fprintd: Close opened pipes on tests cleanup 2024-04-04 03:13:40 +02:00
Benjamin Berg
b440acb57d tests: Use dbusmock start_system_bus instead of GLib server 2021-09-15 15:06:06 +00:00
Benjamin Berg
0cf0fea902 tests: Better cleanup helper processes and objects
We were leaking the bus connections for the proxy objects. Also, now the
subprocesses will be forcefully killed at shutdown.
2021-09-15 15:06:06 +00:00
Benjamin Berg
b3d6bf0825 tests: Set G_MESSAGES_DEBUG=all for daemon as it is needed
Otherwise executing the test script outside of the meson environment
will fail as the inhibitor test relies on being able to parse the log.
2021-09-15 15:06:06 +00:00
Benjamin Berg
fc65055279 device: Always report selected finger if there is only one
If the user specified "any" finger, then we would mirror this back even
if there is only one finger available. Change it so that we act as if
that finger was passed explicitly, meaning we use the "verify" method
and also send the signal for the selected finger accordingly.
2021-09-15 15:00:14 +00:00
Benjamin Berg
e4c155d5b8 tests: Give fprintd some more time to be ready
While the delay inhibitor is grabbed almost immediately, this can be
slow enough to not have happened immediately after the bus name has been
registered. Add a generous timeout to prevent issues.
2021-08-25 15:27:26 +02:00
Benjamin Berg
717a919996 tests: Make class cleanup more robust
Use addClassCleanup rather than doing cleanup in tearDownClass, which
may not be called in all cases.
2021-08-25 15:22:42 +02:00
Benjamin Berg
e6fc854a9a tests: Use addCleanup to stop polkitd 2021-08-25 15:19:43 +02:00
Benjamin Berg
5d7422e17a tests: Cleanup inhibitor fifo properly
Unlink the fifo itself and use addCleanup to close it.
2021-08-25 13:43:30 +02:00
Benjamin Berg
626128a0fa device: Remove local storage prints if they've been removed from device
If a print we have stored locally is not available in device anymore, we
need to cleanup the local database.

We do not get a proper DATA_NOT_FOUND error for most devices (indeed, at
this point no device does this properly). As such, do this when we see a
DATA_NOT_FOUND error and the first time that we get a verify-no-match
results on a device which is capable of listing all known prints.

Co-Authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net>
2021-08-19 18:22:36 +02:00
Marco Trevisan (Treviño)
0bba073dff device: Handle data not-found error as verify-no-match
In case we got a data-not-found error, it means that the device has not
such prints stored, and thus the verification failed, and there's no
need to expose the internal reasons to fprintd clients.
2021-08-18 13:09:38 +02:00
Benjamin Berg
70182083a1 Implement suspend/resume handling 2021-08-09 13:25:11 +02:00
Benjamin Berg
80eb673e83 tests: Remove broken test_verify_stop_restarts_immediately test
Before VerifyStart can be called again the current verify operation
needs to be completed. This requires waiting for VerifyStop to happen.

As such, remove the test, which is expected to fail randomly.
2021-08-02 13:00:43 +02:00
Benjamin Berg
6bc19c8892 tests: Speed up tests by only using parts of the image
We just need large enough samples to tell them apart correctly. For this
a 128x128 area from the center of each image is sufficient.

This speeds up the test run considerably. Other ways of achieving this
could be to also lower the number of enroll steps for the image device.
2021-07-31 11:53:33 +02:00
Benjamin Berg
3c8ac241b8 tests: Try to show backtrace when killed by SIGTERM
This means that we may manage to show a backtrace if meson kills the
test process due to a timeout.
2021-07-30 23:52:00 +02:00
Benjamin Berg
f398d09b23 device: Delete existing print in EnrollStart
gnome-control-center expects to be able to re-enroll an existing print
when calling EnrollStart without deleting it first. As such, implicitly
delete the existing print rather than throwing an error.

Ideally, we'll change the API, but we need to give API users time to
adjust to the world.
2021-07-01 12:59:11 +02:00
Benjamin Berg
d7da04fa4b tests: Check storage is cleared if device does not support listing
On the first enroll, the storage must be cleared. Check that this is the
case for the first enroll but not the second.
2021-06-25 16:56:49 +02:00
Benjamin Berg
7f2b5fe7ff device: Avoid clearing storage when we can garbage collect
If the device supports listing prints, then we can do more targeted
deletes once the storage runs out. As such, do not try to clear the
storage on first enroll (therefore allowing dual boot setups to work to
a limited degree).
2021-06-25 15:52:41 +02:00
Vincent Huang
f44233461f device: Clear storage before enrolling the first print
Clear the device storage before we enroll the first print. At that
point, we know that the storage should be completely empty and we have
no way of deleting "garbage" prints later if the device does not support
listing prints.
2021-04-30 14:41:12 +02:00
Marco Trevisan (Treviño)
4f4b0d5f11 tests/fprintd: Check that garbage collecting works on duplicated print 2021-04-02 00:22:16 +02:00
Marco Trevisan (Treviño)
aae37304e5 tests/fprintd: Cleanup FPrintdVirtualStorageDeviceTests
Avoid repeating the same things multiple times
2021-04-02 00:22:16 +02:00
Marco Trevisan (Treviño)
8869b8296f tests/fprintd: Check an error is thrown if trying to re-enroll a finger 2021-04-02 00:22:16 +02:00
Marco Trevisan (Treviño)
41086ac4c6 tests/fprintd: Test enroll multiple prints with duplicates 2021-04-02 00:22:16 +02:00
Marco Trevisan (Treviño)
4e075ba491 tests/fprintd: Repeat enroll tests with virtual device with no storage
No storage-device does not support identification so we need to try this
case as well
2021-04-01 23:09:30 +02:00
Marco Trevisan (Treviño)
e8622b3e63 device: Support enrolling on devices with no identification support 2021-04-01 23:09:29 +02:00
Benjamin Berg
5785dc65b4 device: Add duplicate checking during enroll
Always do an identify step before starting an enroll. If we find an
existing print, delete or throw an error depending on what is
appropriate.

Doing this ensures that we should not get duplicate prints system wide.
This means we will be able to identify the user that is trying to log
in. But more importantly, we need to do these checks for MoC devices,
which always run "identify" against all device stored prints rather than
the passed gallery.
2021-04-01 22:47:42 +02:00
Marco Trevisan (Treviño)
0af8cf1d56 tests/fprintd: Use intermediate timeouts based on default setup 2021-03-03 19:51:07 +01:00
Marco Trevisan (Treviño)
3a05589685 utils/delete: Add ability to delete single user fingerprints by finger name
Each user can now be followed by an `-f`/`--finger` parameter that when
available will be used to delete a single fingerprint for the user.

Add tests
2021-03-03 19:51:07 +01:00
Marco Trevisan (Treviño)
bb722a0373 tests/fprintd: Add tests for 'verify' utility 2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
022ee1a4c5 tests/fprintd: Add test for the enroll utility using virtual device commands 2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
aba0f0a714 tests/fprintd: Add test for device error during Claim 2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
b1a218d56a tests/fprintd: Add tests to check errors when using the 'delete' tool 2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
59c2dc5df2 tests/fprintd: Use output checker in FPrintdUtilsTest 2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
f4d2e905bd tests/fprintd: Use storage device for more tests
It's quicker to use for various operations, so better to use it
2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
6f355797f8 device: Throw a NoEnrolledPrints error if trying to delete a device with no prints
Adjust tests accordingly
2021-03-03 19:49:07 +01:00
Marco Trevisan (Treviño)
8da1b5e7f5 device: Do not set the device in verification state if we've errored
During VerifyStart we may return early if there are no enrolled prints.
In such case we don't require the verification to be stopped if we're
using identification, but in the verification case we may leave the
device into the verification state.

So ensure we only set the device current state only when we're about to
start it.

Add tests ensuring those cases
2021-03-02 17:15:14 +01:00
Marco Trevisan (Treviño)
1511eb93ea device: Do not list invalid prints as enrolled
The user may have some invalid prints saved (like the ones enrolled with
fprintd 1) in the storage, this lead to list such prints as enrolled but
they're actually not valid.

So load the prints to ensure that those are of the valid type instead of
just discovering them.

We may make just store.discover_prints to be aware of this, but this
would break some assumptions we do in tests, so better to go this way.
2021-03-02 17:15:14 +01:00
Marco Trevisan (Treviño)
a04a60cd8e tests/fprintd: Add better tests for ListEnrolledFingers in unclaimed state 2021-03-02 17:15:14 +01:00
Marco Trevisan (Treviño)
02bd36d8d9 tests/fprintd: Check that we can't try to release a device while closing 2021-01-27 18:18:57 +01:00
Marco Trevisan (Treviño)
b92f39be3d tests/fprintd: Add test to check errors during release 2021-01-27 18:18:57 +01:00
Marco Trevisan (Treviño)
b46aba6fb2 tests/fprintd: Ensure stored print deletion error has higher prio than device error 2021-01-27 18:18:57 +01:00
Marco Trevisan (Treviño)
2b81184b42 device: Fail with any non-zero return value on storage print_data_save()
When saving the prints we use g_file_set_contents under the hood and in
case return its error code that is a positive value.

So in such case we don't fail if we have a write failure at the end of
the enrollment.

While we could ensure in file storage to always return a negative value,
it's always better to ensure that is has to be 0 when we didn't get an
error.

Add a test checking for this case.
2021-01-27 17:52:05 +01:00
Marco Trevisan (Treviño)
2af0e6407a 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.
2021-01-27 17:52:05 +01:00
Marco Trevisan (Treviño)
9a39f1fde8 tests/fprintd: Verify the case we can't delete prints from device 2021-01-27 17:52:05 +01:00