[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