[CMF-checkins] SVN: CMF/branches/1.6/CMF backported r40413 from trunk:

Yvo Schubbe y.2005- at wcm-solutions.de
Tue Nov 29 15:05:50 EST 2005


Log message for revision 40415:
  backported r40413 from trunk:
  - moved setup handlers from CMFSetup to CMFCore/exportimport
  - converted top level adapters from node to xml adapters

Changed:
  U   CMF/branches/1.6/CMFActionIcons/exportimport.py
  U   CMF/branches/1.6/CMFCore/exportimport/cachingpolicymgr.py
  A   CMF/branches/1.6/CMFCore/exportimport/catalog.py
  U   CMF/branches/1.6/CMFCore/exportimport/configure.zcml
  U   CMF/branches/1.6/CMFCore/exportimport/contenttyperegistry.py
  U   CMF/branches/1.6/CMFCore/exportimport/cookieauth.py
  A   CMF/branches/1.6/CMFCore/exportimport/mailhost.py
  U   CMF/branches/1.6/CMFCore/exportimport/properties.py
  U   CMF/branches/1.6/CMFCore/exportimport/skins.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_actions.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_cachingpolicymgr.py
  A   CMF/branches/1.6/CMFCore/exportimport/tests/test_catalog.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_contenttyperegistry.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_cookieauth.py
  A   CMF/branches/1.6/CMFCore/exportimport/tests/test_mailhost.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_properties.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_skins.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_typeinfo.py
  U   CMF/branches/1.6/CMFCore/exportimport/tests/test_workflow.py
  U   CMF/branches/1.6/CMFCore/exportimport/typeinfo.py
  U   CMF/branches/1.6/CMFDefault/profiles/default/export_steps.xml
  U   CMF/branches/1.6/CMFDefault/profiles/default/import_steps.xml

-=-
Modified: CMF/branches/1.6/CMFActionIcons/exportimport.py
===================================================================
--- CMF/branches/1.6/CMFActionIcons/exportimport.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFActionIcons/exportimport.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -24,11 +24,11 @@
 
 from Products.CMFCore.utils import getToolByName
 
-from Products.CMFSetup.utils import CONVERTER
-from Products.CMFSetup.utils import DEFAULT
-from Products.CMFSetup.utils import ExportConfiguratorBase
-from Products.CMFSetup.utils import ImportConfiguratorBase
-from Products.CMFSetup.utils import KEY
+from Products.GenericSetup.utils import CONVERTER
+from Products.GenericSetup.utils import DEFAULT
+from Products.GenericSetup.utils import ExportConfiguratorBase
+from Products.GenericSetup.utils import ImportConfiguratorBase
+from Products.GenericSetup.utils import KEY
 
 from permissions import ManagePortal
 
@@ -75,6 +75,7 @@
 
     return 'Action icons tool settings exported.'
 
+
 class ActionIconsToolExportConfigurator(ExportConfiguratorBase):
     """ Synthesize XML description of cc properties.
     """
@@ -100,6 +101,7 @@
 
 InitializeClass(ActionIconsToolExportConfigurator)
 
+
 class ActionIconsToolImportConfigurator(ImportConfiguratorBase):
 
     def _getImportMapping(self):
@@ -115,4 +117,7 @@
              },
           }
 
+    def _convertToInteger(self, val):
+        return int(val.strip())
+
 InitializeClass(ActionIconsToolImportConfigurator)

Modified: CMF/branches/1.6/CMFCore/exportimport/cachingpolicymgr.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/cachingpolicymgr.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/cachingpolicymgr.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,20 +10,27 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Caching policy manager node adapters.
+"""Caching policy manager xml adapters and setup handlers.
 
 $Id: cachingpolicymgr.py 40087 2005-11-13 19:55:09Z yuppie $
 """
 
+from zope.app import zapi
+
+from Products.GenericSetup.interfaces import IBody
 from Products.GenericSetup.interfaces import INodeExporter
 from Products.GenericSetup.interfaces import INodeImporter
 from Products.GenericSetup.interfaces import PURGE
 from Products.GenericSetup.utils import NodeAdapterBase
+from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import ICachingPolicy
 from Products.CMFCore.interfaces import ICachingPolicyManager
+from Products.CMFCore.utils import getToolByName
 
+_FILENAME = 'cachingpolicymgr.xml'
 
+
 class CachingPolicyNodeAdapter(NodeAdapterBase):
 
     """Node im- and exporter for CachingPolicy.
@@ -107,19 +114,23 @@
         self.context.__init__(**info)
 
 
-class CachingPolicyManagerNodeAdapter(NodeAdapterBase):
+class CachingPolicyManagerXMLAdapter(XMLAdapterBase):
 
-    """Node im- and exporter for CachingPolicyManager.
+    """XML im- and exporter for CachingPolicyManager.
     """
 
     __used_for__ = ICachingPolicyManager
 
+    _LOGGER_ID = 'cachingpolicies'
+
     def exportNode(self, doc):
         """Export the object as a DOM node.
         """
         self._doc = doc
         node = self._getObjectNode('object')
         node.appendChild(self._extractCachingPolicies())
+
+        self._logger.info('Caching policy manager exported.')
         return node
 
     def importNode(self, node, mode=PURGE):
@@ -130,6 +141,8 @@
 
         self._initCachingPolicies(node, mode)
 
+        self._logger.info('Caching policy manager imported.')
+
     def _extractCachingPolicies(self):
         fragment = self._doc.createDocumentFragment()
         for policy_id, policy in self.context.listPolicies():
@@ -155,3 +168,40 @@
 
             policy = self.context._policies[policy_id]
             INodeImporter(policy).importNode(child, mode)
+
+
+def importCachingPolicyManager(context):
+    """Import caching policy manager settings from an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('cachingpolicies')
+    tool = getToolByName(site, 'caching_policy_manager')
+
+    body = context.readDataFile(_FILENAME)
+    if body is None:
+        logger.info('Nothing to import.')
+        return
+
+    importer = zapi.queryMultiAdapter((tool, context), IBody)
+    if importer is None:
+        logger.warning('Import adapter misssing.')
+        return
+
+    importer.body = body
+
+def exportCachingPolicyManager(context):
+    """Export caching policy manager settings as an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('cachingpolicies')
+    tool = getToolByName(site, 'caching_policy_manager', None)
+    if tool is None:
+        logger.info('Nothing to export.')
+        return
+
+    exporter = zapi.queryMultiAdapter((tool, context), IBody)
+    if exporter is None:
+        logger.warning('Export adapter misssing.')
+        return
+
+    context.writeDataFile(_FILENAME, exporter.body, exporter.mime_type)

Copied: CMF/branches/1.6/CMFCore/exportimport/catalog.py (from rev 40413, CMF/trunk/CMFCore/exportimport/catalog.py)

Modified: CMF/branches/1.6/CMFCore/exportimport/configure.zcml
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/configure.zcml	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/configure.zcml	2005-11-29 20:05:50 UTC (rev 40415)
@@ -22,18 +22,13 @@
       />
 
   <adapter
-      factory=".cachingpolicymgr.CachingPolicyManagerNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeExporter"
-      for="Products.CMFCore.interfaces.ICachingPolicyManager"
+      factory=".cachingpolicymgr.CachingPolicyManagerXMLAdapter"
+      provides="Products.GenericSetup.interfaces.IBody"
+      for="Products.CMFCore.interfaces.ICachingPolicyManager
+           Products.GenericSetup.interfaces.ISetupContext"
       />
 
   <adapter
-      factory=".cachingpolicymgr.CachingPolicyManagerNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeImporter"
-      for="Products.CMFCore.interfaces.ICachingPolicyManager"
-      />
-
-  <adapter
       factory=".content.StructureFolderWalkingAdapter"
       provides="Products.GenericSetup.interfaces.IFilesystemExporter"
       for="Products.CMFCore.interfaces.IFolderish"
@@ -46,42 +41,27 @@
       />
 
   <adapter
-      factory=".contenttyperegistry.ContentTypeRegistryNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeExporter"
-      for="Products.CMFCore.interfaces.IContentTypeRegistry"
+      factory=".contenttyperegistry.ContentTypeRegistryXMLAdapter"
+      provides="Products.GenericSetup.interfaces.IBody"
+      for="Products.CMFCore.interfaces.IContentTypeRegistry
+           Products.GenericSetup.interfaces.ISetupContext"
       />
 
   <adapter
-      factory=".contenttyperegistry.ContentTypeRegistryNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeImporter"
-      for="Products.CMFCore.interfaces.IContentTypeRegistry"
+      factory=".cookieauth.CookieCrumblerXMLAdapter"
+      provides="Products.GenericSetup.interfaces.IBody"
+      for="Products.CMFCore.interfaces.ICookieCrumbler
+           Products.GenericSetup.interfaces.ISetupContext"
       />
 
   <adapter
-      factory=".cookieauth.CookieCrumblerNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeExporter"
-      for="Products.CMFCore.interfaces.ICookieCrumbler"
+      factory=".properties.PropertiesXMLAdapter"
+      provides="Products.GenericSetup.interfaces.IBody"
+      for="Products.CMFCore.interfaces.ISiteRoot
+           Products.GenericSetup.interfaces.ISetupContext"
       />
 
   <adapter
-      factory=".cookieauth.CookieCrumblerNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeImporter"
-      for="Products.CMFCore.interfaces.ICookieCrumbler"
-      />
-
-  <adapter
-      factory=".properties.PropertiesNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeExporter"
-      for="Products.CMFCore.interfaces.ISiteRoot"
-      />
-
-  <adapter
-      factory=".properties.PropertiesNodeAdapter"
-      provides="Products.GenericSetup.interfaces.INodeImporter"
-      for="Products.CMFCore.interfaces.ISiteRoot"
-      />
-
-  <adapter
       factory=".skins.DirectoryViewNodeAdapter"
       provides="Products.GenericSetup.interfaces.INodeExporter"
       for="Products.CMFCore.interfaces.IDirectoryView"

Modified: CMF/branches/1.6/CMFCore/exportimport/contenttyperegistry.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/contenttyperegistry.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/contenttyperegistry.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,30 +10,40 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Content type registry node adapters.
+"""Content type registry xml adapters and setup handlers.
 
 $Id: contenttyperegistry.py 40087 2005-11-13 19:55:09Z yuppie $
 """
 
+from zope.app import zapi
+
+from Products.GenericSetup.interfaces import IBody
 from Products.GenericSetup.interfaces import PURGE
-from Products.GenericSetup.utils import NodeAdapterBase
+from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import IContentTypeRegistry
+from Products.CMFCore.utils import getToolByName
 
+_FILENAME = 'contenttyperegistry.xml'
 
-class ContentTypeRegistryNodeAdapter(NodeAdapterBase):
 
-    """Node im- and exporter for ContentTypeRegistry.
+class ContentTypeRegistryXMLAdapter(XMLAdapterBase):
+
+    """XML im- and exporter for ContentTypeRegistry.
     """
 
     __used_for__ = IContentTypeRegistry
 
+    _LOGGER_ID = 'contenttypes'
+
     def exportNode(self, doc):
         """Export the object as a DOM node.
         """
         self._doc = doc
         node = self._getObjectNode('object')
         node.appendChild(self._extractPredicates())
+
+        self._logger.info('Content type registry exported.')
         return node
 
     def importNode(self, node, mode=PURGE):
@@ -44,6 +54,8 @@
 
         self._initPredicates(node, mode)
 
+        self._logger.info('Content type registry imported.')
+
     def _extractPredicates(self):
         fragment = self._doc.createDocumentFragment()
         for predicate_id, info in self.context.listPredicates():
@@ -97,3 +109,40 @@
         if cracker is not None:
             return cracker(predicate)
         return ()  # XXX:  raise?
+
+
+def importContentTypeRegistry(context):
+    """Import content type registry settings from an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('contenttypes')
+    tool = getToolByName(site, 'content_type_registry')
+
+    body = context.readDataFile(_FILENAME)
+    if body is None:
+        logger.info('Nothing to import.')
+        return
+
+    importer = zapi.queryMultiAdapter((tool, context), IBody)
+    if importer is None:
+        logger.warning('Import adapter misssing.')
+        return
+
+    importer.body = body
+
+def exportContentTypeRegistry(context):
+    """Export content type registry settings as an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('contenttypes')
+    tool = getToolByName(site, 'content_type_registry', None)
+    if tool is None:
+        logger.info('Nothing to export.')
+        return
+
+    exporter = zapi.queryMultiAdapter((tool, context), IBody)
+    if exporter is None:
+        logger.warning('Export adapter misssing.')
+        return
+
+    context.writeDataFile(_FILENAME, exporter.body, exporter.mime_type)

Modified: CMF/branches/1.6/CMFCore/exportimport/cookieauth.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/cookieauth.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/cookieauth.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,31 +10,41 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Cookie crumbler node adapters.
+"""Cookie crumbler xml adapters and setup handlers.
 
 $Id: cookieauth.py 39493 2005-10-17 18:48:24Z yuppie $
 """
 
+from zope.app import zapi
+
+from Products.GenericSetup.interfaces import IBody
 from Products.GenericSetup.interfaces import PURGE
-from Products.GenericSetup.utils import NodeAdapterBase
 from Products.GenericSetup.utils import PropertyManagerHelpers
+from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import ICookieCrumbler
+from Products.CMFCore.utils import getToolByName
 
+_FILENAME = 'cookieauth.xml'
 
-class CookieCrumblerNodeAdapter(NodeAdapterBase, PropertyManagerHelpers):
 
-    """Node im- and exporter for CookieCrumbler.
+class CookieCrumblerXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
+
+    """XML im- and exporter for CookieCrumbler.
     """
 
     __used_for__ = ICookieCrumbler
 
+    _LOGGER_ID = 'cookies'
+
     def exportNode(self, doc):
         """Export the object as a DOM node.
         """
         self._doc = doc
         node = self._getObjectNode('object')
         node.appendChild(self._extractProperties())
+
+        self._logger.info('Cookie crumbler exported.')
         return node
 
     def importNode(self, node, mode=PURGE):
@@ -44,3 +54,42 @@
             self._purgeProperties()
 
         self._initProperties(node, mode)
+
+        self._logger.info('Cookie crumbler imported.')
+
+
+def importCookieCrumbler(context):
+    """Import cookie crumbler settings from an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('cookies')
+    tool = getToolByName(site, 'cookie_authentication')
+
+    body = context.readDataFile(_FILENAME)
+    if body is None:
+        logger.info('Nothing to import.')
+        return
+
+    importer = zapi.queryMultiAdapter((tool, context), IBody)
+    if importer is None:
+        logger.warning('Import adapter misssing.')
+        return
+
+    importer.body = body
+
+def exportCookieCrumbler(context):
+    """Export cookie crumbler settings as an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('cookies')
+    tool = getToolByName(site, 'cookie_authentication', None)
+    if tool is None:
+        logger.info('Nothing to export.')
+        return
+
+    exporter = zapi.queryMultiAdapter((tool, context), IBody)
+    if exporter is None:
+        logger.warning('Export adapter misssing.')
+        return
+
+    context.writeDataFile(_FILENAME, exporter.body, exporter.mime_type)

Copied: CMF/branches/1.6/CMFCore/exportimport/mailhost.py (from rev 40413, CMF/trunk/CMFCore/exportimport/mailhost.py)

Modified: CMF/branches/1.6/CMFCore/exportimport/properties.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/properties.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/properties.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,31 +10,40 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Site properties node adapters.
+"""Site properties xml adapters and setup handlers.
 
 $Id: properties.py 39947 2005-11-06 16:41:15Z yuppie $
 """
 
+from zope.app import zapi
+
+from Products.GenericSetup.interfaces import IBody
 from Products.GenericSetup.interfaces import PURGE
-from Products.GenericSetup.utils import NodeAdapterBase
 from Products.GenericSetup.utils import PropertyManagerHelpers
+from Products.GenericSetup.utils import XMLAdapterBase
 
 from Products.CMFCore.interfaces import ISiteRoot
 
+_FILENAME = 'properties.xml'
 
-class PropertiesNodeAdapter(NodeAdapterBase, PropertyManagerHelpers):
 
-    """Node im- and exporter for properties.
+class PropertiesXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
+
+    """XML im- and exporter for properties.
     """
 
     __used_for__ = ISiteRoot
 
+    _LOGGER_ID = 'properties'
+
     def exportNode(self, doc):
         """Export the object as a DOM node.
         """
         self._doc = doc
         node = self._doc.createElement('site')
         node.appendChild(self._extractProperties())
+
+        self._logger.info('Site properties exported.')
         return node
 
     def importNode(self, node, mode=PURGE):
@@ -44,3 +53,37 @@
             self._purgeProperties()
 
         self._initProperties(node, mode)
+
+        self._logger.info('Site properties imported.')
+
+
+def importSiteProperties(context):
+    """ Import site properties from an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('properties')
+
+    body = context.readDataFile(_FILENAME)
+    if body is None:
+        logger.info('Nothing to import.')
+        return
+
+    importer = zapi.queryMultiAdapter((site, context), IBody)
+    if importer is None:
+        logger.warning('Import adapter misssing.')
+        return
+
+    importer.body = body
+
+def exportSiteProperties(context):
+    """ Export site properties as an XML file.
+    """
+    site = context.getSite()
+    logger = context.getLogger('properties')
+
+    exporter = zapi.queryMultiAdapter((site, context), IBody)
+    if exporter is None:
+        logger.warning('Export adapter misssing.')
+        return
+
+    context.writeDataFile(_FILENAME, exporter.body, exporter.mime_type)

Modified: CMF/branches/1.6/CMFCore/exportimport/skins.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/skins.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/skins.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -234,7 +234,7 @@
         logger.info('Nothing to export.')
         return
 
-    exporter = zapi.getMultiAdapter((tool, context), IBody)
+    exporter = zapi.queryMultiAdapter((tool, context), IBody)
     if exporter is None:
         logger.warning('Export adapter misssing.')
         return

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_actions.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_actions.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_actions.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -232,12 +232,10 @@
                 import exportActionProviders
 
         site = self._initSite()
-
         context = DummyExportContext(site)
         exportActionProviders(context)
 
         self.assertEqual(len(context._wrote), 1)
-
         filename, text, content_type = context._wrote[0]
         self.assertEqual(filename, 'actions.xml')
         self._compareDOM(text, _NORMAL_EXPORT)

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_cachingpolicymgr.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_cachingpolicymgr.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_cachingpolicymgr.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,7 +10,7 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Caching policy manager node adapter unit tests.
+"""Caching policy manager xml adapter and setup handler unit tests.
 
 $Id: test_cachingpolicymgr.py 40087 2005-11-13 19:55:09Z yuppie $
 """
@@ -18,9 +18,17 @@
 import unittest
 import Testing
 
-from Products.CMFCore.tests.base.testcase import PlacelessSetup
+import Products
+from OFS.Folder import Folder
+from Products.Five import zcml
+
+from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.testing import NodeAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
 
+from Products.CMFCore.tests.base.testcase import PlacelessSetup
 
 _CP_XML = """\
 <caching-policy name="foo_policy" enable_304s="False" etag_func=""
@@ -30,7 +38,8 @@
    proxy_revalidate="False" public="False" vary=""/>
 """
 
-_CPM_XML = """\
+_CPM_BODY = """\
+<?xml version="1.0"?>
 <object name="caching_policy_manager" meta_type="CMF Caching Policy Manager">
  <caching-policy name="foo_policy" enable_304s="False" etag_func=""
     last_modified="True" max_age_secs="600" mtime_func="object/modified"
@@ -64,14 +73,13 @@
         self._XML = _CP_XML
 
 
-class CachingPolicyManagerNodeAdapterTests(PlacelessSetup,
-                                           NodeAdapterTestCase):
+class CachingPolicyManagerXMLAdapterTests(BodyAdapterTestCase):
 
     def _getTargetClass(self):
         from Products.CMFCore.exportimport.cachingpolicymgr \
-                import CachingPolicyManagerNodeAdapter
+                import CachingPolicyManagerXMLAdapter
 
-        return CachingPolicyManagerNodeAdapter
+        return CachingPolicyManagerXMLAdapter
 
     def _populate(self, obj):
         obj.addPolicy('foo_policy',
@@ -79,23 +87,161 @@
                       'object/modified', 600, 0, 0, 0, '', '')
 
     def setUp(self):
+        import Products.CMFCore.exportimport
         from Products.CMFCore.CachingPolicyManager import CachingPolicyManager
-        import Products.CMFCore.exportimport
-        import Products.Five
-        from Products.Five import zcml
 
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
+
+        self._obj = CachingPolicyManager()
+        self._BODY = _CPM_BODY
+
+
+class _CachingPolicyManagerSetup(PlacelessSetup, BaseRegistryTests):
+
+    POLICY_ID = 'policy_id'
+    PREDICATE = "python:object.getId() == 'foo'"
+    MTIME_FUNC = "object/modified"
+    MAX_AGE_SECS = 60
+    VARY = "Test"
+    ETAG_FUNC = "object/getETag"
+    S_MAX_AGE_SECS = 120
+    PRE_CHECK = 42
+    POST_CHECK = 43
+
+    _EMPTY_EXPORT = """\
+<?xml version="1.0"?>
+<object name="caching_policy_manager" meta_type="CMF Caching Policy Manager"/>
+"""
+
+    _WITH_POLICY_EXPORT = """\
+<?xml version="1.0"?>
+<object name="caching_policy_manager" meta_type="CMF Caching Policy Manager">
+ <caching-policy name="%s" enable_304s="True"
+    etag_func="%s" last_modified="False" max_age_secs="%d"
+    mtime_func="%s" must_revalidate="True" no_cache="True"
+    no_store="True" no_transform="True" post_check="%d" pre_check="%d"
+    predicate="%s" private="True"
+    proxy_revalidate="True" public="True" s_max_age_secs="%d" vary="%s"/>
+</object>
+""" % (POLICY_ID, ETAG_FUNC, MAX_AGE_SECS, MTIME_FUNC, POST_CHECK, PRE_CHECK,
+       PREDICATE, S_MAX_AGE_SECS, VARY)
+
+    def _initSite(self, with_policy=False):
+        from Products.CMFCore.CachingPolicyManager import CachingPolicyManager
+
+        self.root.site = Folder(id='site')
+        site = self.root.site
+        mgr = CachingPolicyManager()
+        site._setObject( mgr.getId(), mgr )
+
+        if with_policy:
+            mgr.addPolicy( policy_id=self.POLICY_ID
+                         , predicate=self.PREDICATE
+                         , mtime_func=self.MTIME_FUNC
+                         , max_age_secs=self.MAX_AGE_SECS
+                         , no_cache=True
+                         , no_store=True
+                         , must_revalidate=True
+                         , vary=self.VARY
+                         , etag_func=self.ETAG_FUNC
+                         , s_max_age_secs=self.S_MAX_AGE_SECS
+                         , proxy_revalidate=True
+                         , public=True
+                         , private=True
+                         , no_transform=True
+                         , enable_304s=True
+                         , last_modified=False
+                         , pre_check=self.PRE_CHECK
+                         , post_check=self.POST_CHECK
+                         )
+
+        return site
+
+    def setUp(self):
         PlacelessSetup.setUp(self)
+        BaseRegistryTests.setUp(self)
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
 
-        self._obj = CachingPolicyManager()
-        self._XML = _CPM_XML
+    def tearDown(self):
+        BaseRegistryTests.tearDown(self)
+        PlacelessSetup.tearDown(self)
 
 
+class exportCachingPolicyManagerTests(_CachingPolicyManagerSetup):
+
+    def test_empty(self):
+        from Products.CMFCore.exportimport.cachingpolicymgr \
+                import exportCachingPolicyManager
+
+        site = self._initSite(with_policy=False)
+        context = DummyExportContext(site)
+        exportCachingPolicyManager(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'cachingpolicymgr.xml')
+        self._compareDOM(text, self._EMPTY_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+    def test_with_policy(self):
+        from Products.CMFCore.exportimport.cachingpolicymgr \
+                import exportCachingPolicyManager
+
+        site = self._initSite(with_policy=True)
+        context = DummyExportContext(site)
+        exportCachingPolicyManager(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'cachingpolicymgr.xml')
+        self._compareDOM(text, self._WITH_POLICY_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+
+class importCachingPolicyManagerTests(_CachingPolicyManagerSetup):
+
+    def test_normal(self):
+        from Products.CMFCore.exportimport.cachingpolicymgr \
+                import importCachingPolicyManager
+
+        site = self._initSite(with_policy=False)
+        cpm = site.caching_policy_manager
+        self.assertEqual(len(cpm.listPolicies()), 0)
+
+        context = DummyImportContext(site)
+        context._files['cachingpolicymgr.xml'] = self._WITH_POLICY_EXPORT
+        importCachingPolicyManager(context)
+
+        self.assertEqual(len(cpm.listPolicies()), 1)
+        policy_id, policy = cpm.listPolicies()[0]
+        self.assertEqual(policy.getPolicyId(), self.POLICY_ID)
+        self.assertEqual(policy.getPredicate(), self.PREDICATE)
+        self.assertEqual(policy.getMTimeFunc(), self.MTIME_FUNC)
+        self.assertEqual(policy.getVary(), self.VARY)
+        self.assertEqual(policy.getETagFunc(), self.ETAG_FUNC)
+        self.assertEqual(policy.getMaxAgeSecs(), self.MAX_AGE_SECS)
+        self.assertEqual(policy.getSMaxAgeSecs(), self.S_MAX_AGE_SECS)
+        self.assertEqual(policy.getPreCheck(), self.PRE_CHECK)
+        self.assertEqual(policy.getPostCheck(), self.POST_CHECK)
+        self.assertEqual(policy.getLastModified(), False)
+        self.assertEqual(policy.getNoCache(), True)
+        self.assertEqual(policy.getNoStore(), True)
+        self.assertEqual(policy.getMustRevalidate(), True)
+        self.assertEqual(policy.getProxyRevalidate(), True)
+        self.assertEqual(policy.getNoTransform(), True)
+        self.assertEqual(policy.getPublic(), True)
+        self.assertEqual(policy.getPrivate(), True)
+        self.assertEqual(policy.getEnable304s(), True)
+
+
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(CachingPolicyNodeAdapterTests),
-        unittest.makeSuite(CachingPolicyManagerNodeAdapterTests),
+        unittest.makeSuite(CachingPolicyManagerXMLAdapterTests),
+        unittest.makeSuite(exportCachingPolicyManagerTests),
+        unittest.makeSuite(importCachingPolicyManagerTests),
         ))
 
 if __name__ == '__main__':

Copied: CMF/branches/1.6/CMFCore/exportimport/tests/test_catalog.py (from rev 40413, CMF/trunk/CMFCore/exportimport/tests/test_catalog.py)

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_contenttyperegistry.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_contenttyperegistry.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_contenttyperegistry.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,7 +10,7 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Content type registry node adapter unit tests.
+"""Content type registry xml adapter and setup handler unit tests.
 
 $Id: test_contenttyperegistry.py 40087 2005-11-13 19:55:09Z yuppie $
 """
@@ -18,11 +18,26 @@
 import unittest
 import Testing
 
+import Products
+from OFS.Folder import Folder
+from Products.Five import zcml
+
+from Products.GenericSetup.testing import BodyAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
+
 from Products.CMFCore.tests.base.testcase import PlacelessSetup
-from Products.GenericSetup.testing import NodeAdapterTestCase
 
+_TEST_PREDICATES = (
+ ('plain_text', 'major_minor', ('text', 'plain,javascript'), 'File'),
+ ('stylesheets', 'extension', ('css,xsl,xslt',), 'Text File'),
+ ('images', 'mimetype_regex', ('image/.*',), 'Image'),
+ ('logfiles', 'name_regex', ('error_log-.*',), 'Log File'),
+)
 
-_CTR_XML = """\
+_CTR_BODY = """\
+<?xml version="1.0"?>
 <object name="content_type_registry" meta_type="Content Type Registry">
  <predicate name="foo_predicate" content_type_name="Foo Type"
     predicate_type="major_minor">
@@ -45,14 +60,13 @@
 """
 
 
-class ContentTypeRegistryNodeAdapterTests(PlacelessSetup,
-                                          NodeAdapterTestCase):
+class ContentTypeRegistryXMLAdapterTests(BodyAdapterTestCase):
 
     def _getTargetClass(self):
         from Products.CMFCore.exportimport.contenttyperegistry \
-                import ContentTypeRegistryNodeAdapter
+                import ContentTypeRegistryXMLAdapter
 
-        return ContentTypeRegistryNodeAdapter
+        return ContentTypeRegistryXMLAdapter
 
     def _populate(self, obj):
         obj.addPredicate('foo_predicate', 'major_minor')
@@ -69,22 +83,176 @@
         obj.assignTypeName('foobar_predicate', 'Foobar Type')
 
     def setUp(self):
+        import Products.CMFCore.exportimport
         from Products.CMFCore.ContentTypeRegistry import ContentTypeRegistry
-        import Products.CMFCore.exportimport
-        import Products.Five
-        from Products.Five import zcml
 
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
+
+        self._obj = ContentTypeRegistry()
+        self._BODY = _CTR_BODY
+
+
+class _ContentTypeRegistrySetup(PlacelessSetup, BaseRegistryTests):
+
+    MAJOR_MINOR_ID = _TEST_PREDICATES[0][0]
+    MAJOR = _TEST_PREDICATES[0][2][0]
+    MINOR = _TEST_PREDICATES[0][2][1]
+    MAJOR_MINOR_TYPENAME = _TEST_PREDICATES[0][3]
+    EXTENSION_ID = _TEST_PREDICATES[1][0]
+    EXTENSIONS = _TEST_PREDICATES[1][2][0]
+    EXTENSION_TYPENAME = _TEST_PREDICATES[1][3]
+    MIMETYPE_REGEX_ID = _TEST_PREDICATES[2][0]
+    MIMETYPE_REGEX = _TEST_PREDICATES[2][2][0]
+    MIMETYPE_REGEX_TYPENAME = _TEST_PREDICATES[2][3]
+    NAME_REGEX_ID = _TEST_PREDICATES[3][0]
+    NAME_REGEX = _TEST_PREDICATES[3][2][0]
+    NAME_REGEX_TYPENAME = _TEST_PREDICATES[3][3]
+
+    _EMPTY_EXPORT = """\
+<?xml version="1.0"?>
+<object name="content_type_registry" meta_type="Content Type Registry"/>
+"""
+
+    _WITH_POLICY_EXPORT = """\
+<?xml version="1.0"?>
+<object name="content_type_registry" meta_type="Content Type Registry">
+ <predicate name="%s" content_type_name="%s"
+    predicate_type="major_minor">
+  <argument value="%s"/>
+  <argument value="%s"/>
+ </predicate>
+ <predicate name="%s" content_type_name="%s"
+    predicate_type="extension">
+  <argument value="%s"/>
+ </predicate>
+ <predicate name="%s" content_type_name="%s"
+    predicate_type="mimetype_regex">
+  <argument value="%s"/>
+ </predicate>
+ <predicate name="%s" content_type_name="%s"
+    predicate_type="name_regex">
+  <argument value="%s"/>
+ </predicate>
+</object>
+""" % (MAJOR_MINOR_ID,
+       MAJOR_MINOR_TYPENAME,
+       MAJOR,
+       MINOR,
+       EXTENSION_ID,
+       EXTENSION_TYPENAME,
+       EXTENSIONS,
+       MIMETYPE_REGEX_ID,
+       MIMETYPE_REGEX_TYPENAME,
+       MIMETYPE_REGEX,
+       NAME_REGEX_ID,
+       NAME_REGEX_TYPENAME,
+       NAME_REGEX,
+      )
+
+    def _initSite(self, mit_predikat=False):
+        from Products.CMFCore.ContentTypeRegistry import ContentTypeRegistry
+
+        self.root.site = Folder(id='site')
+        site = self.root.site
+        ctr = ContentTypeRegistry()
+        site._setObject( ctr.getId(), ctr )
+
+        if mit_predikat:
+            for (predicate_id, predicate_type, edit_args, content_type_name
+                ) in _TEST_PREDICATES:
+                ctr.addPredicate(predicate_id, predicate_type) 
+                predicate = ctr.getPredicate(predicate_id)
+                predicate.edit(*edit_args)
+                ctr.assignTypeName(predicate_id, content_type_name)
+
+        return site
+
+    def setUp(self):
         PlacelessSetup.setUp(self)
+        BaseRegistryTests.setUp(self)
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
 
-        self._obj = ContentTypeRegistry()
-        self._XML = _CTR_XML
+    def tearDown(self):
+        BaseRegistryTests.tearDown(self)
+        PlacelessSetup.tearDown(self)
 
 
+class exportContentTypeRegistryTests(_ContentTypeRegistrySetup):
+
+    def test_empty(self):
+        from Products.CMFCore.exportimport.contenttyperegistry \
+                import exportContentTypeRegistry
+
+        site = self._initSite(mit_predikat=False)
+        context = DummyExportContext(site)
+        exportContentTypeRegistry(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'contenttyperegistry.xml')
+        self._compareDOM(text, self._EMPTY_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+    def test_with_policy(self):
+        from Products.CMFCore.exportimport.contenttyperegistry \
+                import exportContentTypeRegistry
+
+        site = self._initSite(mit_predikat=True)
+        context = DummyExportContext(site)
+        exportContentTypeRegistry(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'contenttyperegistry.xml')
+        self._compareDOM(text, self._WITH_POLICY_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+
+class importContentTypeRegistryTests(_ContentTypeRegistrySetup):
+
+    def test_normal(self):
+        from Products.CMFCore.exportimport.contenttyperegistry \
+                import importContentTypeRegistry
+
+        site = self._initSite(mit_predikat=False)
+        ctr = site.content_type_registry
+        self.assertEqual(len(ctr.listPredicates()), 0)
+
+        context = DummyImportContext(site)
+        context._files['contenttyperegistry.xml'] = self._WITH_POLICY_EXPORT
+        importContentTypeRegistry(context)
+
+        self.assertEqual(len(ctr.listPredicates()), len(_TEST_PREDICATES))
+        predicate_id, (predicate, content_type_name) = ctr.listPredicates()[0]
+        self.assertEqual(predicate_id, self.MAJOR_MINOR_ID)
+        self.assertEqual(predicate.PREDICATE_TYPE, 'major_minor')
+        self.assertEqual(content_type_name, self.MAJOR_MINOR_TYPENAME)
+        self.assertEqual(predicate.major, self.MAJOR.split(','))
+        self.assertEqual(predicate.minor, self.MINOR.split(','))
+        predicate_id, (predicate, content_type_name) = ctr.listPredicates()[1]
+        self.assertEqual(predicate_id, self.EXTENSION_ID)
+        self.assertEqual(predicate.PREDICATE_TYPE, 'extension')
+        self.assertEqual(content_type_name, self.EXTENSION_TYPENAME)
+        self.assertEqual(predicate.extensions, self.EXTENSIONS.split(','))
+        predicate_id, (predicate, content_type_name) = ctr.listPredicates()[2]
+        self.assertEqual(predicate_id, self.MIMETYPE_REGEX_ID)
+        self.assertEqual(predicate.PREDICATE_TYPE, 'mimetype_regex')
+        self.assertEqual(content_type_name, self.MIMETYPE_REGEX_TYPENAME)
+        self.assertEqual(predicate.pattern.pattern, self.MIMETYPE_REGEX)
+        predicate_id, (predicate, content_type_name) = ctr.listPredicates()[3]
+        self.assertEqual(predicate_id, self.NAME_REGEX_ID)
+        self.assertEqual(predicate.PREDICATE_TYPE, 'name_regex')
+        self.assertEqual(content_type_name, self.NAME_REGEX_TYPENAME)
+        self.assertEqual(predicate.pattern.pattern, self.NAME_REGEX)
+
+
 def test_suite():
     return unittest.TestSuite((
-        unittest.makeSuite(ContentTypeRegistryNodeAdapterTests),
+        unittest.makeSuite(ContentTypeRegistryXMLAdapterTests),
+        unittest.makeSuite(exportContentTypeRegistryTests),
+        unittest.makeSuite(importContentTypeRegistryTests),
         ))
 
 if __name__ == '__main__':

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_cookieauth.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_cookieauth.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_cookieauth.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,7 +10,7 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Cookie crumbler node adapter unit tests.
+"""Cookie crumbler xml adapter and setup handler unit tests.
 
 $Id: test_cookieauth.py 39963 2005-11-07 19:06:45Z tseaver $
 """
@@ -18,11 +18,36 @@
 import unittest
 import Testing
 
+import Products
+from OFS.Folder import Folder
+from Products.Five import zcml
+
+from Products.GenericSetup.testing import BodyAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
+
+from Products.CMFCore.CookieCrumbler import CookieCrumbler
 from Products.CMFCore.tests.base.testcase import PlacelessSetup
-from Products.GenericSetup.testing import NodeAdapterTestCase
 
+_COOKIECRUMBLER_BODY = """\
+<?xml version="1.0"?>
+<object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
+ <property name="auth_cookie">__ac</property>
+ <property name="name_cookie">__ac_name</property>
+ <property name="pw_cookie">__ac_password</property>
+ <property name="persist_cookie">__ac_persistent</property>
+ <property name="auto_login_page">login_form</property>
+ <property name="logout_page">logged_out</property>
+ <property name="unauth_page"></property>
+ <property name="local_cookie_path">False</property>
+ <property name="cache_header_value">private</property>
+ <property name="log_username">True</property>
+</object>
+"""
 
-_COOKIECRUMBLER_XML = """\
+_DEFAULT_EXPORT = """\
+<?xml version="1.0"?>
 <object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
  <property name="auth_cookie">__ac</property>
  <property name="name_cookie">__ac_name</property>
@@ -37,32 +62,135 @@
 </object>
 """
 
+_CHANGED_EXPORT = """\
+<?xml version="1.0"?>
+<object name="foo_cookiecrumbler" meta_type="Cookie Crumbler">
+ <property name="auth_cookie">value1</property>
+ <property name="name_cookie">value3</property>
+ <property name="pw_cookie">value5</property>
+ <property name="persist_cookie">value4</property>
+ <property name="auto_login_page">value6</property>
+ <property name="logout_page">value8</property>
+ <property name="unauth_page">value7</property>
+ <property name="local_cookie_path">True</property>
+ <property name="cache_header_value">value2</property>
+ <property name="log_username">False</property>
+</object>
+"""
 
-class CookieCrumblerNodeAdapterTests(PlacelessSetup, NodeAdapterTestCase):
 
+class CookieCrumblerXMLAdapterTests(BodyAdapterTestCase):
+
     def _getTargetClass(self):
         from Products.CMFCore.exportimport.cookieauth \
-                import CookieCrumblerNodeAdapter
+                import CookieCrumblerXMLAdapter
 
-        return CookieCrumblerNodeAdapter
+        return CookieCrumblerXMLAdapter
 
     def setUp(self):
+        import Products.CMFCore.exportimport
         from Products.CMFCore.CookieCrumbler import CookieCrumbler
-        import Products.CMFCore.exportimport
-        import Products.Five
-        from Products.Five import zcml
 
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
+
+        self._obj = CookieCrumbler('foo_cookiecrumbler')
+        self._BODY = _COOKIECRUMBLER_BODY
+
+
+class _CookieCrumblerSetup(PlacelessSetup, BaseRegistryTests):
+
+    def _initSite(self, use_changed=False):
+        self.root.site = Folder(id='site')
+        site = self.root.site
+        cc = site.cookie_authentication = CookieCrumbler('foo_cookiecrumbler')
+ 
+        if use_changed:
+            cc.auth_cookie = 'value1'
+            cc.cache_header_value = 'value2'
+            cc.name_cookie = 'value3'
+            cc.log_username = 0
+            cc.persist_cookie = 'value4'
+            cc.pw_cookie = 'value5'
+            cc.local_cookie_path = 1
+            cc.auto_login_page = 'value6'
+            cc.unauth_page = 'value7'
+            cc.logout_page = 'value8'
+
+        return site
+
+    def setUp(self):
         PlacelessSetup.setUp(self)
+        BaseRegistryTests.setUp(self)
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
 
-        self._obj = CookieCrumbler('foo_cookiecrumbler')
-        self._XML = _COOKIECRUMBLER_XML
+    def tearDown(self):
+        BaseRegistryTests.tearDown(self)
+        PlacelessSetup.tearDown(self)
 
 
+class exportCookieCrumblerTests(_CookieCrumblerSetup):
+
+    def test_unchanged(self):
+        from Products.CMFCore.exportimport.cookieauth \
+                import exportCookieCrumbler
+
+        site = self._initSite(use_changed=False)
+        context = DummyExportContext(site)
+        exportCookieCrumbler(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'cookieauth.xml')
+        self._compareDOM(text, _DEFAULT_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+    def test_changed(self):
+        from Products.CMFCore.exportimport.cookieauth \
+                import exportCookieCrumbler
+
+        site = self._initSite(use_changed=True)
+        context = DummyExportContext(site)
+        exportCookieCrumbler(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'cookieauth.xml')
+        self._compareDOM(text, _CHANGED_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+
+class importCookieCrumblerTests(_CookieCrumblerSetup):
+
+    def test_normal(self):
+        from Products.CMFCore.exportimport.cookieauth \
+                import importCookieCrumbler
+
+        site = self._initSite()
+        cc = site.cookie_authentication
+
+        context = DummyImportContext(site)
+        context._files['cookieauth.xml'] = _CHANGED_EXPORT
+        importCookieCrumbler(context)
+
+        self.assertEqual( cc.auth_cookie, 'value1' )
+        self.assertEqual( cc.cache_header_value, 'value2' )
+        self.assertEqual( cc.name_cookie, 'value3' )
+        self.assertEqual( cc.log_username, 0 )
+        self.assertEqual( cc.persist_cookie, 'value4' )
+        self.assertEqual( cc.pw_cookie, 'value5' )
+        self.assertEqual( cc.local_cookie_path, 1 )
+        self.assertEqual( cc.auto_login_page, 'value6' )
+        self.assertEqual( cc.unauth_page, 'value7' )
+        self.assertEqual( cc.logout_page, 'value8' )
+
+
 def test_suite():
     return unittest.TestSuite((
-        unittest.makeSuite(CookieCrumblerNodeAdapterTests),
+        unittest.makeSuite(CookieCrumblerXMLAdapterTests),
+        unittest.makeSuite(exportCookieCrumblerTests),
+        unittest.makeSuite(importCookieCrumblerTests),
         ))
 
 if __name__ == '__main__':

Copied: CMF/branches/1.6/CMFCore/exportimport/tests/test_mailhost.py (from rev 40413, CMF/trunk/CMFCore/exportimport/tests/test_mailhost.py)

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_properties.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_properties.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_properties.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -10,7 +10,7 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Site properties node adapter unit tests.
+"""Site properties xml adapter and setup handler unit tests.
 
 $Id: test_properties.py 39963 2005-11-07 19:06:45Z tseaver $
 """
@@ -18,11 +18,17 @@
 import unittest
 import Testing
 
+from Products.Five import zcml
+
+from Products.GenericSetup.testing import BodyAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
+
 from Products.CMFCore.tests.base.testcase import PlacelessSetup
-from Products.GenericSetup.testing import NodeAdapterTestCase
 
-
-_PROPERTIES_XML = """\
+_PROPERTIES_BODY = """\
+<?xml version="1.0"?>
 <site>
  <property name="title">Foo</property>
  <property name="foo_string" type="string">foo</property>
@@ -30,14 +36,35 @@
 </site>
 """
 
+_EMPTY_EXPORT = """\
+<?xml version="1.0" ?>
+<site>
+ <property name="title"/>
+</site>
+"""
 
-class PropertiesNodeAdapterTests(PlacelessSetup, NodeAdapterTestCase):
+_NORMAL_EXPORT = """\
+<?xml version="1.0" ?>
+<site>
+ <property name="title"/>
+ <property name="foo" type="string">Foo</property>
+ <property name="bar" type="tokens">
+  <element value="Bar"/>
+ </property>
+ <property name="moo" type="tokens">
+  <element value="Moo"/>
+ </property>
+</site>
+"""
 
+
+class PropertiesXMLAdapterTests(BodyAdapterTestCase):
+
     def _getTargetClass(self):
         from Products.CMFCore.exportimport.properties \
-                import PropertiesNodeAdapter
+                import PropertiesXMLAdapter
 
-        return PropertiesNodeAdapter
+        return PropertiesXMLAdapter
 
     def _populate(self, obj):
         obj._setPropValue('title', 'Foo')
@@ -45,22 +72,166 @@
         obj._setProperty('foo_boolean', False, 'boolean')
 
     def setUp(self):
+        import Products.CMFCore.exportimport
         from Products.CMFCore.PortalObject import PortalObjectBase
+
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
+
+        self._obj = PortalObjectBase('foo_site')
+        self._BODY = _PROPERTIES_BODY
+
+
+class _SitePropertiesSetup(PlacelessSetup, BaseRegistryTests):
+
+    def _initSite(self, foo=2, bar=2):
+        from Products.CMFCore.PortalObject import PortalObjectBase
+
+        self.root.site = PortalObjectBase('foo_site')
+        site = self.root.site
+
+        if foo > 0:
+            site._setProperty('foo', '', 'string')
+        if foo > 1:
+            site._updateProperty('foo', 'Foo')
+
+        if bar > 0:
+            site._setProperty( 'bar', (), 'tokens' )
+            site._setProperty( 'moo', (), 'tokens' )
+        if bar > 1:
+            site._updateProperty( 'bar', ('Bar',) )
+            site.moo = ['Moo']
+
+        return site
+
+    def setUp(self):
         import Products.CMFCore.exportimport
-        import Products.Five
-        from Products.Five import zcml
 
         PlacelessSetup.setUp(self)
+        BaseRegistryTests.setUp(self)
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('configure.zcml', Products.CMFCore.exportimport)
 
-        self._obj = PortalObjectBase('foo_site')
-        self._XML = _PROPERTIES_XML
+    def tearDown(self):
+        BaseRegistryTests.tearDown(self)
+        PlacelessSetup.tearDown(self)
 
 
+class exportSitePropertiesTests(_SitePropertiesSetup):
+
+    def test_empty(self):
+        from Products.CMFCore.exportimport.properties \
+                import exportSiteProperties
+
+        site = self._initSite(0, 0)
+        context = DummyExportContext(site)
+        exportSiteProperties(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'properties.xml')
+        self._compareDOM(text, _EMPTY_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+    def test_normal(self):
+        from Products.CMFCore.exportimport.properties \
+                import exportSiteProperties
+
+        site = self._initSite()
+        context = DummyExportContext( site )
+        exportSiteProperties(context)
+
+        self.assertEqual(len(context._wrote), 1)
+        filename, text, content_type = context._wrote[0]
+        self.assertEqual(filename, 'properties.xml')
+        self._compareDOM(text, _NORMAL_EXPORT)
+        self.assertEqual(content_type, 'text/xml')
+
+
+class importSitePropertiesTests(_SitePropertiesSetup):
+
+    def test_empty_default_purge(self):
+        from Products.CMFCore.exportimport.properties \
+                import importSiteProperties
+
+        site = self._initSite()
+
+        self.assertEqual( len( site.propertyIds() ), 4 )
+        self.failUnless( 'foo' in site.propertyIds() )
+        self.assertEqual( site.getProperty('foo'), 'Foo' )
+        self.failUnless( 'bar' in site.propertyIds() )
+        self.assertEqual( site.getProperty('bar'), ('Bar',) )
+
+        context = DummyImportContext(site)
+        context._files['properties.xml'] = _EMPTY_EXPORT
+        importSiteProperties(context)
+
+        self.assertEqual( len( site.propertyIds() ), 1 )
+
+    def test_empty_explicit_purge(self):
+        from Products.CMFCore.exportimport.properties \
+                import importSiteProperties
+
+        site = self._initSite()
+
+        self.assertEqual( len( site.propertyIds() ), 4 )
+        self.failUnless( 'foo' in site.propertyIds() )
+        self.assertEqual( site.getProperty('foo'), 'Foo' )
+        self.failUnless( 'bar' in site.propertyIds() )
+        self.assertEqual( site.getProperty('bar'), ('Bar',) )
+
+        context = DummyImportContext(site, True)
+        context._files['properties.xml'] = _EMPTY_EXPORT
+        importSiteProperties(context)
+
+        self.assertEqual( len( site.propertyIds() ), 1 )
+
+    def test_empty_skip_purge(self):
+        from Products.CMFCore.exportimport.properties \
+                import importSiteProperties
+
+        site = self._initSite()
+
+        self.assertEqual( len( site.propertyIds() ), 4 )
+        self.failUnless( 'foo' in site.propertyIds() )
+        self.assertEqual( site.getProperty('foo'), 'Foo' )
+        self.failUnless( 'bar' in site.propertyIds() )
+        self.assertEqual( site.getProperty('bar'), ('Bar',) )
+
+        context = DummyImportContext(site, False)
+        context._files['properties.xml'] = _EMPTY_EXPORT
+        importSiteProperties(context)
+
+        self.assertEqual( len( site.propertyIds() ), 4 )
+        self.failUnless( 'foo' in site.propertyIds() )
+        self.assertEqual( site.getProperty('foo'), 'Foo' )
+        self.failUnless( 'bar' in site.propertyIds() )
+        self.assertEqual( site.getProperty('bar'), ('Bar',) )
+
+    def test_normal(self):
+        from Products.CMFCore.exportimport.properties \
+                import importSiteProperties
+
+        site = self._initSite(0,0)
+
+        self.assertEqual( len( site.propertyIds() ), 1 )
+
+        context = DummyImportContext(site)
+        context._files['properties.xml'] = _NORMAL_EXPORT
+        importSiteProperties(context)
+
+        self.assertEqual( len( site.propertyIds() ), 4 )
+        self.failUnless( 'foo' in site.propertyIds() )
+        self.assertEqual( site.getProperty('foo'), 'Foo' )
+        self.failUnless( 'bar' in site.propertyIds() )
+        self.assertEqual( site.getProperty('bar'), ('Bar',) )
+
+
 def test_suite():
     return unittest.TestSuite((
-        unittest.makeSuite(PropertiesNodeAdapterTests),
+        unittest.makeSuite(PropertiesXMLAdapterTests),
+        unittest.makeSuite(exportSitePropertiesTests),
+        unittest.makeSuite(importSitePropertiesTests),
         ))
 
 if __name__ == '__main__':

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_skins.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_skins.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_skins.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -27,8 +27,6 @@
 from Products.Five import zcml
 from zope.interface import implements
 
-from Products.CMFCore.interfaces import ISkinsTool
-from Products.CMFCore.tests.base.testcase import PlacelessSetup
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.testing import NodeAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
@@ -36,6 +34,9 @@
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
+from Products.CMFCore.interfaces import ISkinsTool
+from Products.CMFCore.tests.base.testcase import PlacelessSetup
+
 _TESTS_PATH = os.path.split(__file__)[0]
 
 _DIRECTORYVIEW_XML = """\
@@ -352,7 +353,7 @@
 class exportSkinsToolTests(_SkinsSetup):
 
     def test_empty(self):
-        from Products.CMFSetup.skins import exportSkinsTool
+        from Products.CMFCore.exportimport.skins import exportSkinsTool
 
         site = self._initSite()
         context = DummyExportContext(site)
@@ -365,7 +366,7 @@
         self.assertEqual(content_type, 'text/xml')
 
     def test_normal(self):
-        from Products.CMFSetup.skins import exportSkinsTool
+        from Products.CMFCore.exportimport.skins import exportSkinsTool
 
         _IDS = ('one', 'two', 'three')
         _PATHS = {'basic': 'one', 'fancy': 'three, two, one'}
@@ -397,7 +398,7 @@
     _NORMAL_EXPORT = _NORMAL_EXPORT
 
     def test_empty_default_purge(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two', 'three')
         _PATHS = {'basic': 'one', 'fancy': 'three, two, one'}
@@ -422,7 +423,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 0)
 
     def test_empty_explicit_purge(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two', 'three')
         _PATHS = {'basic': 'one', 'fancy': 'three, two, one'}
@@ -447,7 +448,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 0)
 
     def test_empty_skip_purge(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two', 'three')
         _PATHS = {'basic': 'one', 'fancy': 'three, two, one'}
@@ -472,7 +473,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 3)
 
     def test_normal(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         site = self._initSite()
         skins_tool = site.portal_skins
@@ -494,7 +495,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 3)
 
     def test_fragment_skip_purge(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two')
         _PATHS = {'basic': 'one', 'fancy': 'two,one'}
@@ -539,7 +540,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 4)
 
     def test_fragment3_skip_purge(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two')
         _PATHS = {'basic': 'one', 'fancy': 'two,one'}
@@ -571,7 +572,7 @@
         self.assertEqual(len(skins_tool.objectItems()), 4)
 
     def test_fragment4_removal(self):
-        from Products.CMFSetup.skins import importSkinsTool
+        from Products.CMFCore.exportimport.skins import importSkinsTool
 
         _IDS = ('one', 'two')
         _PATHS = {'basic': 'one', 'fancy': 'two,one'}

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_typeinfo.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_typeinfo.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_typeinfo.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -22,6 +22,11 @@
 from OFS.Folder import Folder
 from Products.Five import zcml
 
+from Products.GenericSetup.testing import BodyAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
+
 from Products.CMFCore.permissions import View
 from Products.CMFCore.permissions import AccessContentsInformation
 from Products.CMFCore.permissions import ModifyPortalContent
@@ -29,12 +34,7 @@
 from Products.CMFCore.TypesTool import FactoryTypeInformation
 from Products.CMFCore.TypesTool import ScriptableTypeInformation
 from Products.CMFCore.TypesTool import TypesTool
-from Products.GenericSetup.testing import BodyAdapterTestCase
-from Products.GenericSetup.tests.common import BaseRegistryTests
-from Products.GenericSetup.tests.common import DummyExportContext
-from Products.GenericSetup.tests.common import DummyImportContext
 
-
 _FTI_BODY = """\
 <?xml version="1.0"?>
 <object name="foo_fti" meta_type="Factory-based Type Information"
@@ -66,103 +66,6 @@
 </object>
 """
 
-
-class TypeInformationXMLAdapterTests(BodyAdapterTestCase):
-
-    def _getTargetClass(self):
-        from Products.CMFCore.exportimport.typeinfo \
-                import TypeInformationXMLAdapter
-
-        return TypeInformationXMLAdapter
-
-    def _populate(self, obj):
-        obj.addAction('foo_action', 'Foo', 'string:${object_url}/foo',
-                      'python:1', (), 'Bar')
-
-    def _verifyImport(self, obj):
-        self.assertEqual(type(obj._aliases), dict)
-        self.assertEqual(obj._aliases, {'(Default)': 'foo', 'view': 'foo'})
-        self.assertEqual(type(obj._aliases['view']), str)
-        self.assertEqual(obj._aliases['view'], 'foo')
-        self.assertEqual(type(obj._actions), tuple)
-        self.assertEqual(type(obj._actions[0].id), str)
-        self.assertEqual(obj._actions[0].id, 'foo_action')
-        self.assertEqual(type(obj._actions[0].title), str)
-        self.assertEqual(obj._actions[0].title, 'Foo')
-        self.assertEqual(type(obj._actions[0].description), str)
-        self.assertEqual(obj._actions[0].description, '')
-        self.assertEqual(type(obj._actions[0].category), str)
-        self.assertEqual(obj._actions[0].category, 'Bar')
-        self.assertEqual(type(obj._actions[0].condition.text), str)
-        self.assertEqual(obj._actions[0].condition.text, 'python:1')
-
-    def setUp(self):
-        import Products.CMFCore
-        from Products.CMFCore.TypesTool import FactoryTypeInformation
-
-        BodyAdapterTestCase.setUp(self)
-        zcml.load_config('configure.zcml', Products.CMFCore)
-
-        self._obj = FactoryTypeInformation('foo_fti')
-        self._BODY = _FTI_BODY
-
-
-class TypesToolXMLAdapterTests(BodyAdapterTestCase):
-
-    def _getTargetClass(self):
-        from Products.CMFCore.exportimport.typeinfo \
-                import TypesToolXMLAdapter
-
-        return TypesToolXMLAdapter
-
-    def _populate(self, obj):
-        from Products.CMFCore.TypesTool import FactoryTypeInformation
-
-        obj._setObject('foo_type', FactoryTypeInformation('foo_type'))
-
-    def setUp(self):
-        import Products.CMFCore
-        from Products.CMFCore.TypesTool import TypesTool
-
-        BodyAdapterTestCase.setUp(self)
-        zcml.load_config('configure.zcml', Products.CMFCore)
-
-        self._obj = TypesTool()
-        self._BODY = _TYPESTOOL_BODY
-
-
-class _TypeInfoSetup(PlacelessSetup, BaseRegistryTests):
-
-    def _initSite(self, foo=0):
-        self.root.site = Folder(id='site')
-        site = self.root.site
-        ttool = site.portal_types = TypesTool()
-
-        if foo == 1:
-            fti = _TI_LIST[0].copy()
-            ttool._setObject(fti['id'], FactoryTypeInformation(**fti))
-            sti = _TI_LIST[1].copy()
-            ttool._setObject(sti['id'], ScriptableTypeInformation(**sti))
-        elif foo == 2:
-            fti = _TI_LIST_WITH_FILENAME[0].copy()
-            ttool._setObject(fti['id'], FactoryTypeInformation(**fti))
-            sti = _TI_LIST_WITH_FILENAME[1].copy()
-            ttool._setObject(sti['id'], ScriptableTypeInformation(**sti))
-
-        return site
-
-    def setUp(self):
-        PlacelessSetup.setUp(self)
-        BaseRegistryTests.setUp(self)
-        zcml.load_config('meta.zcml', Products.Five)
-        zcml.load_config('permissions.zcml', Products.Five)
-        zcml.load_config('configure.zcml', Products.CMFCore)
-
-    def tearDown(self):
-        BaseRegistryTests.tearDown(self)
-        PlacelessSetup.tearDown(self)
-
-
 _TI_LIST = ({
     'id':                    'foo',
     'title':                 'Foo',
@@ -484,10 +387,106 @@
 """
 
 
+class TypeInformationXMLAdapterTests(BodyAdapterTestCase):
+
+    def _getTargetClass(self):
+        from Products.CMFCore.exportimport.typeinfo \
+                import TypeInformationXMLAdapter
+
+        return TypeInformationXMLAdapter
+
+    def _populate(self, obj):
+        obj.addAction('foo_action', 'Foo', 'string:${object_url}/foo',
+                      'python:1', (), 'Bar')
+
+    def _verifyImport(self, obj):
+        self.assertEqual(type(obj._aliases), dict)
+        self.assertEqual(obj._aliases, {'(Default)': 'foo', 'view': 'foo'})
+        self.assertEqual(type(obj._aliases['view']), str)
+        self.assertEqual(obj._aliases['view'], 'foo')
+        self.assertEqual(type(obj._actions), tuple)
+        self.assertEqual(type(obj._actions[0].id), str)
+        self.assertEqual(obj._actions[0].id, 'foo_action')
+        self.assertEqual(type(obj._actions[0].title), str)
+        self.assertEqual(obj._actions[0].title, 'Foo')
+        self.assertEqual(type(obj._actions[0].description), str)
+        self.assertEqual(obj._actions[0].description, '')
+        self.assertEqual(type(obj._actions[0].category), str)
+        self.assertEqual(obj._actions[0].category, 'Bar')
+        self.assertEqual(type(obj._actions[0].condition.text), str)
+        self.assertEqual(obj._actions[0].condition.text, 'python:1')
+
+    def setUp(self):
+        import Products.CMFCore
+        from Products.CMFCore.TypesTool import FactoryTypeInformation
+
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore)
+
+        self._obj = FactoryTypeInformation('foo_fti')
+        self._BODY = _FTI_BODY
+
+
+class TypesToolXMLAdapterTests(BodyAdapterTestCase):
+
+    def _getTargetClass(self):
+        from Products.CMFCore.exportimport.typeinfo \
+                import TypesToolXMLAdapter
+
+        return TypesToolXMLAdapter
+
+    def _populate(self, obj):
+        from Products.CMFCore.TypesTool import FactoryTypeInformation
+
+        obj._setObject('foo_type', FactoryTypeInformation('foo_type'))
+
+    def setUp(self):
+        import Products.CMFCore
+        from Products.CMFCore.TypesTool import TypesTool
+
+        BodyAdapterTestCase.setUp(self)
+        zcml.load_config('configure.zcml', Products.CMFCore)
+
+        self._obj = TypesTool()
+        self._BODY = _TYPESTOOL_BODY
+
+
+class _TypeInfoSetup(PlacelessSetup, BaseRegistryTests):
+
+    def _initSite(self, foo=0):
+        self.root.site = Folder(id='site')
+        site = self.root.site
+        ttool = site.portal_types = TypesTool()
+
+        if foo == 1:
+            fti = _TI_LIST[0].copy()
+            ttool._setObject(fti['id'], FactoryTypeInformation(**fti))
+            sti = _TI_LIST[1].copy()
+            ttool._setObject(sti['id'], ScriptableTypeInformation(**sti))
+        elif foo == 2:
+            fti = _TI_LIST_WITH_FILENAME[0].copy()
+            ttool._setObject(fti['id'], FactoryTypeInformation(**fti))
+            sti = _TI_LIST_WITH_FILENAME[1].copy()
+            ttool._setObject(sti['id'], ScriptableTypeInformation(**sti))
+
+        return site
+
+    def setUp(self):
+        PlacelessSetup.setUp(self)
+        BaseRegistryTests.setUp(self)
+        zcml.load_config('meta.zcml', Products.Five)
+        zcml.load_config('permissions.zcml', Products.Five)
+        zcml.load_config('configure.zcml', Products.CMFCore)
+
+    def tearDown(self):
+        BaseRegistryTests.tearDown(self)
+        PlacelessSetup.tearDown(self)
+
+
 class exportTypesToolTests(_TypeInfoSetup):
 
     def test_empty(self):
-        from Products.CMFSetup.typeinfo import exportTypesTool
+        from Products.CMFCore.exportimport.typeinfo import exportTypesTool
 
         site = self._initSite()
         context = DummyExportContext(site)
@@ -500,7 +499,7 @@
         self.assertEqual(content_type, 'text/xml')
 
     def test_normal(self):
-        from Products.CMFSetup.typeinfo import exportTypesTool
+        from Products.CMFCore.exportimport.typeinfo import exportTypesTool
 
         site = self._initSite(1)
         context = DummyExportContext(site)
@@ -523,24 +522,21 @@
         self.assertEqual(content_type, 'text/xml')
 
     def test_with_filenames(self):
-        from Products.CMFSetup.typeinfo import exportTypesTool
+        from Products.CMFCore.exportimport.typeinfo import exportTypesTool
 
         site = self._initSite(2)
         context = DummyExportContext(site)
         exportTypesTool(context)
 
         self.assertEqual(len(context._wrote), 3)
-
         filename, text, content_type = context._wrote[0]
         self.assertEqual(filename, 'typestool.xml')
         self._compareDOM(text, _FILENAME_EXPORT)
         self.assertEqual(content_type, 'text/xml')
-
         filename, text, content_type = context._wrote[2]
         self.assertEqual(filename, 'types/bar_object.xml')
         self._compareDOM(text, _BAR_EXPORT % 'bar object')
         self.assertEqual(content_type, 'text/xml')
-
         filename, text, content_type = context._wrote[1]
         self.assertEqual(filename, 'types/foo_object.xml')
         self._compareDOM(text, _FOO_EXPORT % 'foo object')
@@ -554,7 +550,7 @@
     _NORMAL_TOOL_EXPORT = _NORMAL_TOOL_EXPORT
 
     def test_empty_default_purge(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite(1)
         tool = site.portal_types
@@ -568,7 +564,7 @@
         self.assertEqual(len(tool.objectIds()), 0)
 
     def test_empty_explicit_purge(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite(1)
         tool = site.portal_types
@@ -582,7 +578,7 @@
         self.assertEqual(len(tool.objectIds()), 0)
 
     def test_empty_skip_purge(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite(1)
         tool = site.portal_types
@@ -596,7 +592,7 @@
         self.assertEqual(len(tool.objectIds()), 2)
 
     def test_normal(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite()
         tool = site.portal_types
@@ -614,8 +610,8 @@
         self.failUnless('bar' in tool.objectIds())
 
     def test_old_xml(self):
-        from Products.CMFSetup.typeinfo import exportTypesTool
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import exportTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite()
         tool = site.portal_types
@@ -641,7 +637,7 @@
         self.assertEqual(content_type, 'text/xml')
 
     def test_with_filenames(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite()
         tool = site.portal_types
@@ -659,7 +655,7 @@
         self.failUnless('bar object' in tool.objectIds())
 
     def test_normal_update(self):
-        from Products.CMFSetup.typeinfo import importTypesTool
+        from Products.CMFCore.exportimport.typeinfo import importTypesTool
 
         site = self._initSite()
         tool = site.portal_types

Modified: CMF/branches/1.6/CMFCore/exportimport/tests/test_workflow.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/tests/test_workflow.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/tests/test_workflow.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -24,15 +24,16 @@
 from Products.Five import zcml
 from zope.interface import implements
 
-from Products.CMFCore.interfaces import IWorkflowDefinition
-from Products.CMFCore.interfaces import IWorkflowTool
-from Products.CMFCore.tests.base.testcase import PlacelessSetup
 from Products.GenericSetup.testing import BodyAdapterTestCase
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 from Products.GenericSetup.utils import BodyAdapterBase
 
+from Products.CMFCore.interfaces import IWorkflowDefinition
+from Products.CMFCore.interfaces import IWorkflowTool
+from Products.CMFCore.tests.base.testcase import PlacelessSetup
+
 _DUMMY_ZCML = """\
 <configure
     xmlns="http://namespaces.zope.org/zope"

Modified: CMF/branches/1.6/CMFCore/exportimport/typeinfo.py
===================================================================
--- CMF/branches/1.6/CMFCore/exportimport/typeinfo.py	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFCore/exportimport/typeinfo.py	2005-11-29 20:05:50 UTC (rev 40415)
@@ -33,18 +33,17 @@
 from Products.CMFCore.interfaces import ITypesTool
 from Products.CMFCore.utils import getToolByName
 
-
 _FILENAME = 'typestool.xml'
 
 
 class TypeInformationXMLAdapter(XMLAdapterBase, PropertyManagerHelpers):
 
-    """Node im- and exporter for TypeInformation.
+    """XML im- and exporter for TypeInformation.
     """
 
     __used_for__ = ITypeInformation
 
-    _LOGGER_ID = 'typestool'
+    _LOGGER_ID = 'types'
 
     def exportNode(self, doc):
         """Export the object as a DOM node.
@@ -201,12 +200,12 @@
 class TypesToolXMLAdapter(XMLAdapterBase, ObjectManagerHelpers,
                           PropertyManagerHelpers):
 
-    """Node im- and exporter for TypesTool.
+    """XML im- and exporter for TypesTool.
     """
 
     __used_for__ = ITypesTool
 
-    _LOGGER_ID = 'typestool'
+    _LOGGER_ID = 'types'
 
     def exportNode(self, doc):
         """Export the object as a DOM node.
@@ -263,7 +262,7 @@
     """Import types tool and content types from XML files.
     """
     site = context.getSite()
-    logger = context.getLogger('typestool')
+    logger = context.getLogger('types')
     tool = getToolByName(site, 'portal_types')
 
     body = context.readDataFile(_FILENAME)
@@ -283,8 +282,8 @@
     """Export types tool content types as a set of XML files.
     """
     site = context.getSite()
-    logger = context.getLogger('typestool')
-    tool = getToolByName(site, 'portal_types')
+    logger = context.getLogger('types')
+    tool = getToolByName(site, 'portal_types', None)
     if tool is None:
         logger.info('Nothing to export.')
         return

Modified: CMF/branches/1.6/CMFDefault/profiles/default/export_steps.xml
===================================================================
--- CMF/branches/1.6/CMFDefault/profiles/default/export_steps.xml	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFDefault/profiles/default/export_steps.xml	2005-11-29 20:05:50 UTC (rev 40415)
@@ -6,32 +6,32 @@
   Export actions tool's action providers and their actions.
  </export-step>
  <export-step id="caching_policy_mgr"
-              handler="Products.CMFSetup.cachingpolicymgr.exportCachingPolicyManager"
+              handler="Products.CMFCore.exportimport.cachingpolicymgr.exportCachingPolicyManager"
               title="Caching Policies">
   Export caching policy manager's policies.
  </export-step>
  <export-step id="catalog"
-              handler="Products.CMFSetup.catalog.exportCatalogTool"
+              handler="Products.CMFCore.exportimport.catalog.exportCatalogTool"
               title="Catalog Tool">
   Export catalog tool's sub-objects, indexes and columns.
  </export-step>
  <export-step id="content_type_registry"
-              handler="Products.CMFSetup.contenttyperegistry.exportContentTypeRegistry"
+              handler="Products.CMFCore.exportimport.contenttyperegistry.exportContentTypeRegistry"
               title="Content Type Registry">
   Export content type registry's predicates / bindings.
  </export-step>
  <export-step id="cookieauth"
-              handler="Products.CMFSetup.cookieauth.exportCookieCrumbler"
+              handler="Products.CMFCore.exportimport.cookieauth.exportCookieCrumbler"
               title="Cookie Authentication">
   Export cookie crumbler settings
  </export-step>
  <export-step id="mailhost"
-              handler="Products.CMFSetup.mailhost.exportMailHost"
+              handler="Products.CMFCore.exportimport.mailhost.exportMailHost"
               title="MailHost">
   Export the mailhost's settings and properties
  </export-step>
  <export-step id="properties"
-              handler="Products.CMFSetup.properties.exportSiteProperties"
+              handler="Products.CMFCore.exportimport.properties.exportSiteProperties"
               title="Site Properties">
   Export site properties.
  </export-step>

Modified: CMF/branches/1.6/CMFDefault/profiles/default/import_steps.xml
===================================================================
--- CMF/branches/1.6/CMFDefault/profiles/default/import_steps.xml	2005-11-29 19:57:29 UTC (rev 40414)
+++ CMF/branches/1.6/CMFDefault/profiles/default/import_steps.xml	2005-11-29 20:05:50 UTC (rev 40415)
@@ -7,39 +7,39 @@
   Import actions tool's action providers and their actions.
  </import-step>
  <import-step id="caching_policy_mgr" version="20051011-01"
-              handler="Products.CMFSetup.cachingpolicymgr.importCachingPolicyManager"
+              handler="Products.CMFCore.exportimport.cachingpolicymgr.importCachingPolicyManager"
               title="Caching Policies">
   <dependency step="toolset"/>
   Import caching policy manager's policies.
  </import-step>
  <import-step id="catalog" version="20050929-01"
-              handler="Products.CMFSetup.catalog.importCatalogTool"
+              handler="Products.CMFCore.exportimport.catalog.importCatalogTool"
               title="Catalog Tool">
   <dependency step="toolset"/>
   Import catalog tool's sub-objects, indexes and columns.
  </import-step>
  <import-step id="content_type_registry"
               version="20051013-01"
-              handler="Products.CMFSetup.contenttyperegistry.importContentTypeRegistry"
+              handler="Products.CMFCore.exportimport.contenttyperegistry.importContentTypeRegistry"
               title="Content Type Registry">
   <dependency step="toolset"/>
   Import content type registry's predicates and bindings.
  </import-step>
  <import-step id="cookie_authentication"
               version="20050903-01"
-              handler="Products.CMFSetup.cookieauth.importCookieCrumbler"
+              handler="Products.CMFCore.exportimport.cookieauth.importCookieCrumbler"
               title="Cookie Authentication">
   <dependency step="toolset"/>
   Import cookie crumbler settings
  </import-step>
  <import-step id="mailhost" version="20050803-01"
-              handler="Products.CMFSetup.mailhost.importMailHost"
+              handler="Products.CMFCore.exportimport.mailhost.importMailHost"
               title="MailHost">
   <dependency step="toolset"/>
   Import mailhost settings
  </import-step>
  <import-step id="properties" version="20041215-01"
-              handler="Products.CMFSetup.properties.importSiteProperties"
+              handler="Products.CMFCore.exportimport.properties.importSiteProperties"
               title="Site Properties">
   Import site properties.
  </import-step>



More information about the CMF-checkins mailing list