[Pcsclite-git-commit] [PCSC] 05/06: Unit Test for 74656f24
Ludovic Rousseau
rousseau at moszumanska.debian.org
Fri May 20 16:12:51 UTC 2016
This is an automated email from the git hooks/post-receive script.
rousseau pushed a commit to branch master
in repository PCSC.
commit f3a6ccac63abd4d7d0e4eeced059128919286bab
Author: Ludovic Rousseau <ludovic.rousseau at free.fr>
Date: Fri May 20 17:07:03 2016 +0200
Unit Test for 74656f24
SCardEndTransaction(): no card action in a transaction
---
UnitaryTests/SCardBeginTransaction_Reset.py | 85 +++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
diff --git a/UnitaryTests/SCardBeginTransaction_Reset.py b/UnitaryTests/SCardBeginTransaction_Reset.py
new file mode 100755
index 0000000..b478740
--- /dev/null
+++ b/UnitaryTests/SCardBeginTransaction_Reset.py
@@ -0,0 +1,85 @@
+#! /usr/bin/env python
+
+# SCardBeginTransaction_ExclusiceMode.py : Unitary test for SCardDisconnect()
+# Copyright (C) 2016 Ludovic Rousseau
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, see <http://www.gnu.org/licenses/>.
+
+# Check that a transaction will not reset a card while another
+# transaction is ongoing.
+# Test for the patch in 74656f24db3da1532040a1775ceffa225fbc3d00
+
+from smartcard.scard import *
+from smartcard.pcsc.PCSCExceptions import *
+from time import sleep
+
+hresult, hcontext1 = SCardEstablishContext(SCARD_SCOPE_USER)
+if hresult != SCARD_S_SUCCESS:
+ raise EstablishContextException(hresult)
+
+hresult, readers = SCardListReaders(hcontext1, [])
+if hresult != SCARD_S_SUCCESS:
+ raise ListReadersException(hresult)
+print 'PC/SC Readers:', readers
+reader = readers[0]
+print "Using reader:", reader
+
+hresult, hcontext2 = SCardEstablishContext(SCARD_SCOPE_USER)
+if hresult != SCARD_S_SUCCESS:
+ raise EstablishContextException(hresult)
+
+hresult, hcard1, dwActiveProtocol = SCardConnect(hcontext1, reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_ANY)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult, hcard2, dwActiveProtocol = SCardConnect(hcontext1, reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_ANY)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult = SCardBeginTransaction(hcard1)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+# try to reset the card
+hresult = SCardEndTransaction(hcard2, SCARD_UNPOWER_CARD)
+if hresult != SCARD_S_SUCCESS:
+ # we should get an error here
+ # but the card shall not be reseted
+ if hresult == SCARD_E_SHARING_VIOLATION:
+ print "We got the expected error"
+ else:
+ raise BaseSCardException(hresult)
+
+hresult, reader, state, protocol, atr = SCardStatus(hcard1)
+if hresult == SCARD_W_RESET_CARD:
+ print "The test failed"
+ print "The card should not been reseted"
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult = SCardEndTransaction(hcard1, SCARD_LEAVE_CARD)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult = SCardDisconnect(hcard1, SCARD_LEAVE_CARD)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult = SCardDisconnect(hcard2, SCARD_LEAVE_CARD)
+if hresult != SCARD_S_SUCCESS:
+ raise BaseSCardException(hresult)
+
+hresult = SCardReleaseContext(hcontext1)
+if hresult != SCARD_S_SUCCESS:
+ raise ReleaseContextException(hresult)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pcsclite/PCSC.git
More information about the Pcsclite-cvs-commit
mailing list