Skip to content

Commit

Permalink
Some more tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
nehpetsde committed Mar 20, 2017
1 parent eb11d8f commit 9f68535
Show file tree
Hide file tree
Showing 4 changed files with 219 additions and 14 deletions.
62 changes: 57 additions & 5 deletions tests/base_clf_pn53x.py
Original file line number Diff line number Diff line change
Expand Up @@ -473,13 +473,65 @@ def test_tg_get_target_status(self, chipset):


class TestDevice:
def test_sense_tta_no_target_found(self, device):
def pn53x_test_sense_tta_no_target_found(self, device):
device.chipset.transport.read.side_effect = [
ACK(), RSP('4B 00'), # InListPassiveTarget
ACK(), RSP('07 26'), # ReadRegister
ACK(), RSP('4B 00'), # InListPassiveTarget
ACK(), self.reg_rsp('26'), # ReadRegister
]
assert device.sense_tta(nfc.clf.RemoteTarget('106A')) is None
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('4A 0100'), # InListPassiveTarget
CMD('06 6339'), # ReadRegister
CMD('4A 0100'), # InListPassiveTarget
CMD('06 6339'), # ReadRegister
]]

def pn53x_test_sense_ttb_no_target_found(self, device):
device.chipset.transport.read.side_effect = [
ACK(), RSP('4B 00'), # InListPassiveTarget
]
assert device.sense_ttb(nfc.clf.RemoteTarget('106B')) is None
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('4A 010300'), # InListPassiveTarget
]]

def pn53x_test_sense_ttf_no_target_found(self, device):
device.chipset.transport.read.side_effect = [
ACK(), self.reg_rsp('03'), # ReadRegister
ACK(), RSP('4B 00'), # InListPassiveTarget
]
assert device.sense_ttf(nfc.clf.RemoteTarget('212F')) is None
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('06 6304'), # ReadRegister
CMD('4A 010100ffff0100'), # InListPassiveTarget
]]

def pn53x_test_sense_dep_no_target_found(self, device):
device.chipset.transport.read.side_effect = [
ACK(), RSP('47 01'), # InJumpForPSL
ACK(), RSP('09 00'), # WriteRegister
]
atr_req = HEX('D400 30313233343536373839 00000000')
target = nfc.clf.RemoteTarget('106A', atr_req=atr_req)
assert device.sense_dep(target) is None
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('46 01000230313233343536373839'), # InJumpForPSL
CMD('08 63013b'), # WriteRegister
]]

def pn53x_test_listen_tta_not_activated(self, device):
device.chipset.transport.read.side_effect = [
ACK(), RSP('09 00'), # WriteRegister
ACK(), IOError(errno.ETIMEDOUT, ""), # WriteRegister
]
target = nfc.clf.LocalTarget('106A')
target.sens_res = HEX("4400")
target.sel_res = HEX("00")
target.sdd_res = HEX("08010203")
assert device.listen_tta(target, 1.0) is None
print(device.chipset.transport.write.mock_calls)
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('08 63013f'), # WriteRegister
CMD('8c 0144000102030000 0102030405060708'
' 090a0b0c0d0e0f10 1100010203040506'
' 0700000000'), # TgInitAsTarget
ACK(),
]]
48 changes: 40 additions & 8 deletions tests/test_clf_pn531.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import nfc.clf
import nfc.clf.pn531

import errno
import pytest
from pytest_mock import mocker # noqa: F401
from mock import call
Expand All @@ -26,8 +27,8 @@ def transport(mocker):
transport = nfc.clf.transport.USB(1, 1)
mocker.patch.object(transport, 'write', autospec=True)
mocker.patch.object(transport, 'read', autospec=True)
transport._manufacturer_name = "Manufacturer Name"
transport._product_name = "Product Name"
transport._manufacturer_name = "Company"
transport._product_name = "Reader"
transport.context = None
transport.usb_dev = None
return transport
Expand Down Expand Up @@ -80,7 +81,7 @@ def test_tg_init_tama_target(self, chipset):
]


class TestDevice:
class TestDevice(base_clf_pn53x.TestDevice):
@pytest.fixture()
def device(self, transport):
transport.write.return_value = None
Expand All @@ -95,6 +96,7 @@ def device(self, transport):
ACK(), RSP('33'), # RFConfiguration
]
device = nfc.clf.pn531.init(transport)
device._path = 'usb:001:001'
assert isinstance(device, nfc.clf.pn531.Device)
assert isinstance(device.chipset, nfc.clf.pn531.Chipset)
assert transport.write.mock_calls == [call(_) for _ in [
Expand All @@ -120,13 +122,43 @@ def device(self, transport):
call(CMD('32 0102')), # RFConfiguration
]

def reg_rsp(self, hexdata):
return RSP('07' + hexdata)

def test_sense_tta_no_target_found(self, device):
self.pn53x_test_sense_tta_no_target_found(device)

def test_sense_ttb_is_not_supported(self, device):
with pytest.raises(nfc.clf.UnsupportedTargetError) as excinfo:
device.sense_ttb(nfc.clf.RemoteTarget('106B'))
assert "does not support sense for Type B Target" in str(excinfo.value)

def test_sense_ttf_no_target_found(self, device):
self.pn53x_test_sense_ttf_no_target_found(device)

def test_sense_dep_no_target_found(self, device):
self.pn53x_test_sense_dep_no_target_found(device)

def test_listen_tta_not_activated(self, device):
device.chipset.transport.read.side_effect = [
ACK(), RSP('4B 00'), # InListPassiveTarget
ACK(), RSP('07 26'), # ReadRegister
ACK(), RSP('09 00'), # WriteRegister
ACK(), IOError(errno.ETIMEDOUT, ""), # WriteRegister
]
assert device.sense_tta(nfc.clf.RemoteTarget('106A')) is None
target = nfc.clf.LocalTarget('106A')
target.sens_res = HEX("4400")
target.sel_res = HEX("00")
target.sdd_res = HEX("08010203")
assert device.listen_tta(target, 1.0) is None
print(device.chipset.transport.write.mock_calls)
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
CMD('4A 0100'), # InListPassiveTarget
CMD('06 6339'), # ReadRegister
CMD('08 63013f'), # WriteRegister
CMD('8c 0144000102030000 0102030405060708'
' 090a0b0c0d0e0f10 1100010203040506'
' 070000'), # TgInitAsTarget
ACK(),
]]

def test_listen_ttb_is_not_supported(self, device):
with pytest.raises(nfc.clf.UnsupportedTargetError) as excinfo:
device.listen_ttb(nfc.clf.LocalTarget('106B'), 1.0)
assert "does not support listen as Type B Target" in str(excinfo.value)
20 changes: 19 additions & 1 deletion tests/test_clf_pn532.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ def test_init_transport_type_not_tty(self, transport):
nfc.clf.pn532.init(transport)
assert excinfo.value.errno == errno.ENODEV

def test_close(self, device):
def test_close_transport_type_not_tty(self, device):
device.chipset.transport.TYPE = "test"
transport = device.chipset.transport
chipset = device.chipset
Expand All @@ -464,3 +464,21 @@ def test_close(self, device):
device.chipset = chipset
device.chipset.transport = transport
device.chipset.transport.TYPE = "TTY"

def reg_rsp(self, hexdata):
return RSP('07' + hexdata)

def test_sense_tta_no_target_found(self, device):
self.pn53x_test_sense_tta_no_target_found(device)

def test_sense_ttb_no_target_found(self, device):
self.pn53x_test_sense_ttb_no_target_found(device)

def test_sense_ttf_no_target_found(self, device):
self.pn53x_test_sense_ttf_no_target_found(device)

def test_listen_tta_not_activated(self, device):
self.pn53x_test_listen_tta_not_activated(device)

def test_sense_dep_no_target_found(self, device):
self.pn53x_test_sense_dep_no_target_found(device)
103 changes: 103 additions & 0 deletions tests/test_clf_pn533.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,106 @@ def test_tg_init_as_target(self, chipset):
call(CMD('8C 03 010203040506 010203040506070809101112131415161718'
'01020304050607080910 03 313233 00'))
]


class TestDevice(base_clf_pn53x.TestDevice):
@pytest.fixture()
def device(self, transport):
transport.write.return_value = None
transport.read.side_effect = [
ACK(), RSP('01 00'
'000102030405060708090a0b0c0d0e0f'
'101112131415161718191a1b1c1d1e1f'
'202122232425262728292a2b2c2d2e2f'
'303132333435363738393a3b3c3d3e3f'
'404142434445464748494a4b4c4d4e4f'
'505152535455565758595a5b5c5d5e5f'
'606162636465666768696a6b6c6d6e6f'
'707172737475767778797a7b7c7d7e7f'
'808182838485868788898a8b8c8d8e8f'
'909192939495969798999a9b9c9d9e9f'
'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf'
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf'
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf'
'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'
'e0e1e2e3e4e5e6e7e8e9eaebecedeeef'
'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'
'000102030405'), # Diagnose
ACK(), RSP('03 33020707'), # GetFirmwareVersion
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('13'), # SetParameters
ACK(), RSP('07 ff'), # ReadRegister
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
]
device = nfc.clf.pn533.init(transport)
device._path = 'usb:001:001'
assert isinstance(device, nfc.clf.pn533.Device)
assert isinstance(device.chipset, nfc.clf.pn533.Chipset)
assert transport.write.mock_calls == [call(_) for _ in [
ACK(),
CMD('00 00'
'000102030405060708090a0b0c0d0e0f'
'101112131415161718191a1b1c1d1e1f'
'202122232425262728292a2b2c2d2e2f'
'303132333435363738393a3b3c3d3e3f'
'404142434445464748494a4b4c4d4e4f'
'505152535455565758595a5b5c5d5e5f'
'606162636465666768696a6b6c6d6e6f'
'707172737475767778797a7b7c7d7e7f'
'808182838485868788898a8b8c8d8e8f'
'909192939495969798999a9b9c9d9e9f'
'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf'
'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf'
'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf'
'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'
'e0e1e2e3e4e5e6e7e8e9eaebecedeeef'
'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'
'000102030405'), # Diagnose
CMD('02'), # GetFirmwareVersion
CMD('32 0102'), # RFConfiguration
CMD('32 02000b0a'), # RFConfiguration
CMD('32 0400'), # RFConfiguration
CMD('32 05010001'), # RFConfiguration
CMD('12 00'), # SetParameters
CMD('06 a000'), # ReadRegister
CMD('32 0a5af43f114d85616f266287'), # RFConfiguration
CMD('32 0b6aff3f104185616f'), # RFConfiguration
CMD('32 0cff0485'), # RFConfiguration
CMD('32 0d85158a850ab28504da'), # RFConfiguration
]]
transport.write.reset_mock()
transport.read.reset_mock()
yield device
transport.write.reset_mock()
transport.read.reset_mock()
transport.read.side_effect = [
ACK(), RSP('33'), # RFConfiguration
]
device.close()
assert transport.write.mock_calls == [
call(CMD('32 0102')), # RFConfiguration
]

def reg_rsp(self, hexdata):
return RSP('07 00' + hexdata)

def test_sense_tta_no_target_found(self, device):
self.pn53x_test_sense_tta_no_target_found(device)

def test_sense_ttb_no_target_found(self, device):
self.pn53x_test_sense_ttb_no_target_found(device)

def test_sense_ttf_no_target_found(self, device):
self.pn53x_test_sense_ttf_no_target_found(device)

def test_sense_dep_no_target_found(self, device):
self.pn53x_test_sense_dep_no_target_found(device)

def test_listen_tta_not_activated(self, device):
self.pn53x_test_listen_tta_not_activated(device)

0 comments on commit 9f68535

Please sign in to comment.