forked from onflow/ledger-app-flow
-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_error_cmd.py
41 lines (27 loc) · 1.37 KB
/
test_error_cmd.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import pytest
from application_client.flow_command_sender import ClaType, InsType, P1, Errors
from ragger.error import ExceptionRAPDU
def test_bad_cla(backend):
""" Ensure the app returns an error when a bad CLA is used """
with pytest.raises(ExceptionRAPDU) as err:
backend.exchange(cla=ClaType.CLA_APP + 1, ins=InsType.GET_VERSION)
assert err.value.status == Errors.SW_CLA_NOT_SUPPORTED
def test_bad_ins(backend):
""" Ensure the app returns an error when a bad INS is used """
with pytest.raises(ExceptionRAPDU) as err:
backend.exchange(cla=ClaType.CLA_APP, ins=0xff)
assert err.value.status == Errors.SW_INS_NOT_SUPPORTED
def test_wrong_p1(backend):
""" Ensure the app returns an error when a bad P1 is used """
with pytest.raises(ExceptionRAPDU) as err:
backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_LAST_MESSAGE + 1)
assert err.value.status == Errors.SW_INVALIDP1P2
def test_wrong_data_length(backend):
""" Ensure the app returns an error when a bad data length is used """
data: bytes = bytes()
data += int(ClaType.CLA_APP).to_bytes(1, byteorder='little')
data += int(InsType.GET_PUBKEY).to_bytes(1, byteorder='little')
data += bytes.fromhex("000001")
with pytest.raises(ExceptionRAPDU) as err:
backend.exchange_raw(data)
assert err.value.status == Errors.SW_WRONG_LENGTH