From a170a3a09f5f2547e1dddb864509681436545548 Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Sat, 5 Dec 2020 00:09:23 +0100 Subject: [PATCH] tests: Check that PAM stops if the device could not be claimed --- tests/dbusmock/fprintd.py | 8 ++++++++ tests/pam/test_pam_fprintd.py | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tests/dbusmock/fprintd.py b/tests/dbusmock/fprintd.py index 62cae9e..9eae4e4 100644 --- a/tests/dbusmock/fprintd.py +++ b/tests/dbusmock/fprintd.py @@ -429,3 +429,11 @@ def SetVerifyScript(device, script): ''' device.verify_script = script + +@dbus.service.method(DEVICE_MOCK_IFACE, + in_signature='s', out_signature='') +def SetClaimed(device, user): + if user == '': + device.claimed_user = None + else: + device.claimed_user = user diff --git a/tests/pam/test_pam_fprintd.py b/tests/pam/test_pam_fprintd.py index 1462eb5..d40bb96 100755 --- a/tests/pam/test_pam_fprintd.py +++ b/tests/pam/test_pam_fprintd.py @@ -252,6 +252,20 @@ class TestPamFprintd(dbusmock.DBusTestCase): self.assertRegex(res.errors[1], r'Failed to match fingerprint') self.assertRegex(res.errors[2], r'Failed to match fingerprint') + def test_pam_already_claimed(self): + self.setup_device() + script = [ + ( 'verify-match', True, 2 ) + ] + self.device_mock.SetVerifyScript(script) + self.device_mock.SetClaimed('toto') + + tc = pypamtest.TestCase(pypamtest.PAMTEST_AUTHENTICATE, expected_rv=PAM_AUTHINFO_UNAVAIL) + res = pypamtest.run_pamtest("toto", "fprintd-pam-test", [tc], [ 'unused' ]) + + self.assertEqual(len(res.info), 0) + self.assertEqual(len(res.errors), 0) + def test_pam_timeout(self): self.setup_device()