Skip to content

Commit

Permalink
test_PCSCExceptions: fix execution on Windows
Browse files Browse the repository at this point in the history
The PC/SC messages are not the same as with pcsc-lite.
  • Loading branch information
LudovicRousseau committed Dec 26, 2021
1 parent b8ed261 commit 624874c
Showing 1 changed file with 40 additions and 13 deletions.
53 changes: 40 additions & 13 deletions test/test_PCSCExceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,58 +16,85 @@ def test_ListReadersException(self):
exc = ListReadersException(0)
self.assertEqual(exc.hresult, 0)
text = str(exc)
if not get_platform().startswith('win'):
self.assertEqual(text, "Failed to list readers: Command successful. (0x00000000)")
if get_platform().startswith('win'):
expected = "Failed to list readers: The operation completed successfully. (0x00000000)"
else:
expected = "Failed to list readers: Command successful. (0x00000000)"
self.assertEqual(text, expected)

exc = ListReadersException(0x42)
self.assertEqual(exc.hresult, 0x42)
text = str(exc)
if not get_platform().startswith('win'):
if get_platform().startswith('win'):
expected = "Failed to list readers: The network resource type is not correct. (0x00000042)"
else:
expected = "Failed to list readers: Unknown error: 0x00000042 (0x00000042)"
macos_bug_expected = expected.replace("Unknown", "Unkown")
print(expected, macos_bug_expected)
self.assertIn(text, [expected, macos_bug_expected])
macos_bug_expected = expected.replace("Unknown", "Unkown")
self.assertIn(text, [expected, macos_bug_expected])

exc = ListReadersException(SCARD_S_SUCCESS)
self.assertEqual(exc.hresult, 0)

exc = ListReadersException(SCARD_E_NO_SERVICE)
self.assertEqual(exc.hresult, SCARD_E_NO_SERVICE)
text = str(exc)
if not get_platform().startswith('win'):
self.assertEqual(text, "Failed to list readers: Service not available. (0x8010001D)")
if get_platform().startswith('win'):
expected = "Failed to list readers: The Smart Card Resource Manager is not running. (0x8010001D)"
else:
expected = "Failed to list readers: Service not available. (0x8010001D)"
self.assertEqual(text, expected)

def test_EstablishContextException(self):
exc = EstablishContextException(SCARD_E_NO_SERVICE)
self.assertEqual(exc.hresult, SCARD_E_NO_SERVICE)
text = str(exc)
self.assertEqual(text, "Failed to establish context: Service not available. (0x8010001D)")
if get_platform().startswith('win'):
expected = "Failed to establish context: The Smart Card Resource Manager is not running. (0x8010001D)"
else:
expected = "Failed to establish context: Service not available. (0x8010001D)"
self.assertEqual(text, expected)

def test_IntroduceReaderException(self):
exc = IntroduceReaderException(SCARD_E_DUPLICATE_READER, "foobar")
self.assertEqual(exc.hresult, SCARD_E_DUPLICATE_READER)
text = str(exc)
self.assertEqual(text, "Failed to introduce a new reader: foobar: Reader already exists. (0x8010001B)")
if get_platform().startswith('win'):
expected = "Failed to introduce a new reader: foobar: The reader driver did not produce a unique reader name. (0x8010001B)"
else:
expected = "Failed to introduce a new reader: foobar: Reader already exists. (0x8010001B)"
self.assertEqual(text, expected)

def test_RemoveReaderFromGroupException(self):
exc = RemoveReaderFromGroupException(SCARD_E_INVALID_HANDLE,
"readername", "readergroup")
self.assertEqual(exc.hresult, SCARD_E_INVALID_HANDLE)
text = str(exc)
self.assertEqual(text, "Failed to remove reader: readername from group: readergroup: Invalid handle. (0x80100003)")
if get_platform().startswith('win'):
expected = "Failed to remove reader: readername from group: readergroup: The supplied handle was invalid. (0x80100003)"
else:
expected = "Failed to remove reader: readername from group: readergroup: Invalid handle. (0x80100003)"
self.assertEqual(text, expected)

def test_AddReaderToGroupException(self):
exc = AddReaderToGroupException(SCARD_E_INVALID_HANDLE,
"reader", "group")
self.assertEqual(exc.hresult, SCARD_E_INVALID_HANDLE)
text = str(exc)
self.assertEqual(text, "Failed to add reader: reader to group: group: Invalid handle. (0x80100003)")
if get_platform().startswith('win'):
expected = "Failed to add reader: reader to group: group: The supplied handle was invalid. (0x80100003)"
else:
expected = "Failed to add reader: reader to group: group: Invalid handle. (0x80100003)"
self.assertEqual(text, expected)

def test_ReleaseContextException(self):
exc = ReleaseContextException(SCARD_E_INVALID_HANDLE)
self.assertEqual(exc.hresult, SCARD_E_INVALID_HANDLE)
text = str(exc)
self.assertEqual(text, "Failed to release context: Invalid handle. (0x80100003)")
if get_platform().startswith('win'):
expected = "Failed to release context: The supplied handle was invalid. (0x80100003)"
else:
expected = "Failed to release context: Invalid handle. (0x80100003)"
self.assertEqual(text, expected)

if __name__ == '__main__':
unittest.main()

0 comments on commit 624874c

Please sign in to comment.