Merge pull request #35 from d0/master
Minor improvements to CardGenerator and the corresponding unit test
This commit is contained in:
@@ -380,19 +380,21 @@ class CardGenerator(object):
|
||||
if sam != None:
|
||||
self.sam = sam
|
||||
|
||||
|
||||
def loadCard(self, filename):
|
||||
"""Load a card from disk"""
|
||||
db = anydbm.open(filename, 'r')
|
||||
|
||||
if self.password is None:
|
||||
self.password = getpass.getpass("Please enter your password:")
|
||||
|
||||
serializedMF = read_protected_string(db["mf"], self.password)
|
||||
serializedSAM = read_protected_string(db["sam"], self.password)
|
||||
db = anydbm.open(filename, 'r')
|
||||
try:
|
||||
serializedMF = read_protected_string(db["mf"], self.password)
|
||||
serializedSAM = read_protected_string(db["sam"], self.password)
|
||||
self.type = db["type"]
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
self.sam = loads(serializedSAM)
|
||||
self.mf = loads(serializedMF)
|
||||
self.type = db["type"]
|
||||
|
||||
def saveCard(self, filename):
|
||||
"""Save the currently running card to disk"""
|
||||
@@ -406,7 +408,7 @@ class CardGenerator(object):
|
||||
|
||||
if self.mf == None or self.sam == None:
|
||||
raise ValueError("Card Generator wasn't set up properly" +\
|
||||
"(missing MF or SAM).")
|
||||
"(missing MF or SAM).")
|
||||
|
||||
mf_string = dumps(self.mf)
|
||||
sam_string = dumps(self.sam)
|
||||
@@ -414,23 +416,24 @@ class CardGenerator(object):
|
||||
protectedSAM = protect_string(sam_string, self.password)
|
||||
|
||||
db = anydbm.open(filename, 'c')
|
||||
db["mf"] = protectedMF
|
||||
db["sam"] = protectedSAM
|
||||
db["type"] = self.type
|
||||
db["version"] = "0.1"
|
||||
db.close()
|
||||
try:
|
||||
db["mf"] = protectedMF
|
||||
db["sam"] = protectedSAM
|
||||
db["type"] = self.type
|
||||
db["version"] = "0.1"
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
def readDatagroups(self, datasetfile):
|
||||
"""Read Datagroups from file"""
|
||||
with open(datasetfile, 'r') as f:
|
||||
for line in f:
|
||||
if (not line.startswith("#")) and (not len(line.strip()) == 0):
|
||||
# spaces after equal sign are allowed to get strings with leading spaces!
|
||||
line=line.replace(" =", "=")
|
||||
splitLine = line.split("=")
|
||||
# we don't want to have the newline char from dataset file as part of the value!!
|
||||
self.datagroups[splitLine[0]] = splitLine[1].rstrip("\n\r")
|
||||
f.close()
|
||||
for line in f:
|
||||
if (not line.startswith("#")) and (not len(line.strip()) == 0):
|
||||
# spaces after equal sign are allowed to get strings with leading spaces!
|
||||
line=line.replace(" =", "=")
|
||||
splitLine = line.split("=")
|
||||
# we don't want to have the newline char from dataset file as part of the value!!
|
||||
self.datagroups[splitLine[0]] = splitLine[1].rstrip("\n\r")
|
||||
|
||||
if __name__ == "__main__":
|
||||
from optparse import OptionParser
|
||||
|
||||
@@ -17,9 +17,10 @@
|
||||
# virtualsmartcard. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import unittest
|
||||
import tempfile
|
||||
import anydbm
|
||||
import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from virtualsmartcard.CardGenerator import CardGenerator
|
||||
|
||||
class TestNPACardGenerator(unittest.TestCase):
|
||||
@@ -29,15 +30,13 @@ class TestNPACardGenerator(unittest.TestCase):
|
||||
self.nPA_generator = CardGenerator('nPA')
|
||||
self.nPA_generator.password = "TestPassword"
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(self.filename)
|
||||
|
||||
def test_nPA_creation(self):
|
||||
self.nPA_generator.generateCard()
|
||||
self.nPA_generator.saveCard(self.filename)
|
||||
mf, sam = self.nPA_generator.getCard()
|
||||
self.assertIsNotNone(mf)
|
||||
self.assertIsNotNone(sam)
|
||||
os.unlink(self.filename)
|
||||
|
||||
def test_load_nPA_from_file_nPA_from_file(self):
|
||||
self.nPA_generator.generateCard()
|
||||
@@ -48,6 +47,11 @@ class TestNPACardGenerator(unittest.TestCase):
|
||||
mf, sam = local_generator.getCard()
|
||||
self.assertIsNotNone(mf)
|
||||
self.assertIsNotNone(sam)
|
||||
os.unlink(self.filename)
|
||||
|
||||
def test_load_nonexistent_file(self):
|
||||
with self.assertRaises(anydbm.error):
|
||||
self.nPA_generator.loadCard(self.filename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user