[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