[Checkins]
SVN: z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/
Quick updates. Add test.
Randy Crafton
randycrafton at gmail.com
Thu Jun 26 18:01:04 EDT 2008
Log message for revision 87815:
Quick updates. Add test.
Changed:
A z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/README.txt
U z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/interfaces.py
A z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/tests.py
-=-
Added: z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/README.txt
===================================================================
--- z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/README.txt (rev 0)
+++ z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/README.txt 2008-06-26 22:01:01 UTC (rev 87815)
@@ -0,0 +1,60 @@
+Encrypted Persistence
+---------------------
+
+This package also provides integration with persistent objects. Ususally,
+objects are stored in the ZODB in plain text. The ``EncryptedPersistent`` base
+class ensures that all data of the class is encrypted before being stored.
+
+ >>> from z3c.encryptedpersistent import encryptedpersistent
+ >>> class MyObject(encryptedpersistent.EncryptedPersistent):
+ ... name = None
+
+ >>> myObj = MyObject()
+ >>> myObj.name = u'Stephan Richter'
+
+
+When an object is stored to a database, its ``__getstate__`` method is called:
+
+
+ >> myObj.__getstate__()
+ ('key1',
+ "psHem+cmqG{(dp1\nS'name'\np2\nVStephan Richter\np3\nsS'__key__'\np4\nS'key1'\np5\ns.}")
+
+When an object is loaded from the database, the state is passed into the
+``__setstate__`` method:
+
+ >> state = myObj.__getstate__()
+
+ >>> myObj2 = MyObject()
+ >>> myObj2.__setstate__(state)
+ >>> myObj2.name
+ u'Stephan Richter'
+
+Let's now test this with a full database. Since we want to test, whether the
+data is stored encrypted, we have to create a file:
+
+ >>> import tempfile
+ >>> dbFile = tempfile.mktemp('.fs')
+
+Let's now add one of the encrypted persistent objects to the database:
+
+ >>> from ZODB.DB import DB
+ >>> from ZODB.FileStorage import FileStorage
+ >>> db = DB(FileStorage(dbFile))
+ >>> conn = db.open()
+ >>> root = conn.root()
+
+ >>> root['obj'] = myObj
+
+ >>> import transaction
+ >>> transaction.commit()
+
+When the database is loaded again, the object's data is still there, ...
+
+ >>> db.open().root()['obj'].name
+ u'Stephan Richter'
+
+and the data is truly encrypted in the file:
+
+ >>> state[1] in open(dbFile).read()
+ True
Modified: z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/interfaces.py
===================================================================
--- z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/interfaces.py 2008-06-26 20:47:10 UTC (rev 87814)
+++ z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/interfaces.py 2008-06-26 22:01:01 UTC (rev 87815)
@@ -12,7 +12,7 @@
#
##############################################################################
"""
-$Id:$
+$Id$
"""
__docformat__ = "reStructuredText"
@@ -29,3 +29,5 @@
def decrypt(data):
"""Returns the decrypted data"""
+class IEncryptedPersistent(zope.interface.Interface):
+ """ """
\ No newline at end of file
Added: z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/tests.py
===================================================================
--- z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/tests.py (rev 0)
+++ z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/tests.py 2008-06-26 22:01:01 UTC (rev 87815)
@@ -0,0 +1,21 @@
+##############################################################################
+#
+# Copyright (c) 2008 by JSA Technologies, Inc
+#
+##############################################################################
+"""
+$Id$
+"""
+import unittest
+import doctest
+from zope.testing.doctestunit import DocFileSuite
+from zope.app.testing import placelesssetup, setup
+
+
+def test_suite():
+ return unittest.TestSuite((
+ DocFileSuite(
+ 'README.txt',
+ setUp=placelesssetup.setUp, tearDown=placelesssetup.tearDown,
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS),
+ ))
\ No newline at end of file
Property changes on: z3c.encryptedpersistent/trunk/src/z3c/encryptedpersistent/tests.py
___________________________________________________________________
Name: svn:keywords
+ Id
More information about the Checkins
mailing list