From b8ddd0279aefcf67d5583d3da974b4cf731ee50e Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 10 Oct 2013 17:18:02 +0200 Subject: [PATCH] Test of PIN cancel function --- tests/test_protect_call.py | 4 ++++ trezorlib/client.py | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/test_protect_call.py b/tests/test_protect_call.py index 03c662bdc..db32a2f42 100644 --- a/tests/test_protect_call.py +++ b/tests/test_protect_call.py @@ -26,6 +26,10 @@ class TestProtectCall(common.TrezorTest): def test_incorrect_pin(self): self.client.setup_debuglink(button=True, pin_correct=False) self.assertRaises(PinException, self._some_protected_call) + + def test_cancelled_pin(self): + self.client.setup_debuglink(button=True, pin_correct=-1) # PIN cancel + self.assertRaises(PinException, self._some_protected_call) if __name__ == '__main__': unittest.main() diff --git a/trezorlib/client.py b/trezorlib/client.py index f24b7a0aa..ccb058c53 100644 --- a/trezorlib/client.py +++ b/trezorlib/client.py @@ -102,11 +102,14 @@ class TrezorClient(object): if isinstance(resp, proto.PinMatrixRequest): if self.debuglink: - if self.debug_pin: + if self.debug_pin == 1: pin = self.debuglink.read_pin_encoded() msg2 = proto.PinMatrixAck(pin=pin) + elif self.debug_pin == -1: + msg2 = proto.PinMatrixCancel() else: msg2 = proto.PinMatrixAck(pin='444444222222') + else: pin = self.pin_func("PIN required: ", resp.message) msg2 = proto.PinMatrixAck(pin=pin) @@ -118,7 +121,7 @@ class TrezorClient(object): if isinstance(resp, proto.Failure): self.message_func(resp.message) - + if resp.code == 4: raise CallException("Action cancelled by user")