def test_remove_skin_path(self): from Products.CMFCore.exportimport.skins import importSkinsTool _IDS = ('one', 'two', 'three') _PATHS = {'basic': 'one', 'fancy': 'three, two, one'} site, skins_tool = self._initSite(selections=_PATHS, ids=_IDS) self.assertTrue('fancy' in skins_tool._getSelections()) context = DummyImportContext(site) context._files['skins.xml'] = self._FRAGMENT6_IMPORT importSkinsTool(context) self.assertFalse('fancy' in skins_tool._getSelections())
def test_fragment4_removal(self): from Products.CMFCore.exportimport.skins import importSkinsTool _IDS = ('one', 'two') _PATHS = {'basic': 'one', 'fancy': 'two,one'} site, skins_tool = self._initSite(selections=_PATHS, ids=_IDS) skin_paths = skins_tool.getSkinPaths() self.assertEqual(len(skin_paths), 2) self.assertEqual(skin_paths[0], ('basic', 'one')) self.assertEqual(skin_paths[1], ('fancy', 'two,one')) self.assertEqual(len(skins_tool.objectItems()), 2) context = DummyImportContext(site, False) context._files['skins.xml'] = self._FRAGMENT3_IMPORT importSkinsTool(context) self.assertTrue(site._skin_setup_called) skin_paths = skins_tool.getSkinPaths() self.assertEqual(len(skin_paths), 2) self.assertEqual(skin_paths[0], ('basic', 'three,one,four')) self.assertEqual(skin_paths[1], ('fancy', 'three,two,one,four')) self.assertEqual(len(skins_tool.objectItems()), 4) context = DummyImportContext(site, False) context._files['skins.xml'] = self._FRAGMENT4_IMPORT importSkinsTool(context) self.assertTrue(site._skin_setup_called) skin_paths = skins_tool.getSkinPaths() self.assertEqual(len(skin_paths), 2) self.assertEqual(skin_paths[0], ('basic', 'one,four')) self.assertEqual(skin_paths[1], ('fancy', 'two,one,four')) self.assertEqual(len(skins_tool.objectItems()), 4)
def test_schema_nopurge(self): from Products.LDAPUserFolder.exportimport import \ importLDAPUserFolder site = self._initSite(use_changed=True) acl = site.acl_users context = DummyImportContext(site, purge=False) context._files['ldapuserfolder.xml'] = _SERVERS_SCHEMA_NOPURGE importLDAPUserFolder(context) schema = acl.getSchemaConfig() self.assertEquals(len(schema.keys()), 6) self.assertEquals(set(schema.keys()), set(['cn', 'dc', 'o', 'sn', 'mail', 'uid']))
def test_delete_deprecated(self): xml = """\ <registry> <record name="test.export.simple" delete="true" /> </registry> """ context = DummyImportContext(self.site, purge=False) context._files = {'registry.xml': xml} self.registry.records['test.export.simple'] = \ Record(field.TextLine(title=u"Simple record", default=u"N/A"), value=u"Sample value") importRegistry(context) self.assertEquals(0, len(self.registry.records))
def test_normal(self): from Products.CMFCore.exportimport.memberdata \ import importMemberDataTool site, mdtool = self._initSite() context = DummyImportContext(site) context._files['memberdata.xml'] = _CHANGED_EXPORT importMemberDataTool(context) self.assertEqual(mdtool.email, 'value1') self.assertEqual(mdtool.portal_skin, 'value2') self.assertEqual(mdtool.listed, True) self.assertEqual(mdtool.login_time, DateTime('2010/01/01')) self.assertEqual(mdtool.last_login_time, DateTime('2010/01/01'))
def test_remove_skip_purge(self): from Products.CMFCore.exportimport.actions \ import importActionProviders site = self._initSite(2, 2) atool = site.portal_actions self.assertEqual(atool.listActionProviders(), ['portal_actions', 'portal_foo', 'portal_bar']) context = DummyImportContext(site, False) context._files['actions.xml'] = _REMOVE_IMPORT importActionProviders(context) self.assertEqual(atool.listActionProviders(), ['portal_foo'])
def test_import_multiples_times_purge(self): xml = """\ <sharing> <role id='CopyEditor' title='Can copyedit' permission='Delegate edit copy' interface='zope.interface.Interface' /> </sharing> """ context = DummyImportContext(self.site, purge=False) context._files = {'sharing.xml': xml} import_sharing(context) roles = self.roles() self.assertEqual(1, len(roles)) self.assertEqual('Can copyedit', roles['CopyEditor'].title) self.assertEqual('Delegate edit copy', roles['CopyEditor'].required_permission) self.assertEqual(Interface, roles['CopyEditor'].required_interface) xml = """\ <sharing> <role id='Controller' title='Can control' /> </sharing> """ context = DummyImportContext(self.site, purge=True) context._files = {'sharing.xml': xml} import_sharing(context) roles = self.roles() self.assertEqual(1, len(roles)) self.assertEqual('Can control', roles['Controller'].title) self.assertEqual(None, roles['Controller'].required_permission)
def test_fragment2_skip_purge(self): from ..contenttyperegistry import importContentTypeRegistry site, ctr = self._initSite(mit_predikat=True) self.assertEqual(len(ctr.listPredicates()), len(_TEST_PREDICATES)) self.assertEqual(ctr.predicate_ids, ('plain_text', 'stylesheets', 'images', 'logfiles')) context = DummyImportContext(site, False) context._files['contenttyperegistry.xml'] = self._FRAGMENT2_IMPORT importContentTypeRegistry(context) self.assertEqual(len(ctr.listPredicates()), len(_TEST_PREDICATES)) self.assertEqual(ctr.predicate_ids, ('stylesheets', 'plain_text', 'logfiles', 'images'))
def test_insert_skip_purge(self): from Products.CMFCore.exportimport.actions \ import importActionProviders site = self._initSite(0, 0) atool = site.portal_actions context = DummyImportContext(site) context._files['actions.xml'] = _NEWSYTLE_EXPORT importActionProviders(context) self.assertEqual(len(atool.listActionProviders()), 3) self.assertEqual(atool.objectIds(), ['dummy']) self.assertEqual(atool.dummy.objectIds(), ['baz']) self.assertEqual(atool.dummy.baz.icon_expr, '') context = DummyImportContext(site, False) context._files['actions.xml'] = _INSERT_IMPORT importActionProviders(context) self.assertEqual(len(atool.listActionProviders()), 3) self.assertEqual(atool.objectIds(), ['dummy']) self.assertEqual(atool.dummy.objectIds(), ['spam', 'baz']) self.assertEqual(atool.dummy.baz.icon_expr, 'string:baz_icon.png')
def test_action_not_unicode(self): # The action arg cannot be unicode for unrestrictedTraverse # calls to work properly from Products.CMFFormController.exportimport \ import importCMFFormController site = self._initSite(with_info=False) fc = site.portal_form_controller context = DummyImportContext(site) context._files['cmfformcontroller.xml'] = self._WITH_INFO_EXPORT importCMFFormController(context) action = fc.listFormActions()[0] self.failUnless(isinstance(action.getActionArg(), str))
def test_schema_purge(self): from Products.GenericSetup.tests.common import DummyImportContext from ..exportimport import importLDAPUserFolder site = self._initSite(use_changed=True) acl = site.acl_users context = DummyImportContext(site, purge=False) context._files['ldapuserfolder.xml'] = _SERVERS_SCHEMA_PURGE importLDAPUserFolder(context) schema = acl.getSchemaConfig() self.assertEqual(len(schema), 2) self.assertEqual(set(schema.keys()), set(['o', 'dc']))
def test_remove_skin_path(self): from Products.CMFCore.exportimport.skins import importSkinsTool _IDS = ('one', 'two', 'three') _PATHS = {'basic': 'one', 'fancy': 'three, two, one'} site = self._initSite(selections=_PATHS, ids=_IDS) skins_tool = site.portal_skins self.failUnless(skins_tool._getSelections().has_key('fancy')) context = DummyImportContext(site) context._files['skins.xml'] = self._FRAGMENT6_IMPORT importSkinsTool(context) self.failIf(skins_tool._getSelections().has_key('fancy'))
def test_empty_modifying_plugin_types(self): from Products.GenericSetup.tests.common import DummyImportContext from Products.PluggableAuthService.exportimport import importPAS self._setUpAdapters() app, pas = self._initPAS() ctx = DummyImportContext(pas) ctx._files['PAS/.objects'] = _EMPTY_PAS_OBJECTS ctx._files['PAS/.properties'] = _EMPTY_PAS_PROPERTIES ctx._files['PAS/pluginregistry.xml'] = _EMPTY_PLUGINREGISTRY_EXPORT self.assertTrue(pas.plugins.listPluginTypeInfo()) importPAS(ctx) self.assertFalse(pas.plugins.listPluginTypeInfo())
def test_fragment_skip_purge(self): _ORDER = COMMON_SETUP_ORDER _HIDDEN = COMMON_SETUP_HIDDEN self._populateSite(order=_ORDER, hidden=_HIDDEN) site = self.site utility = self.storage self.assertEqual(len(utility._order.keys()), 2) self.assertEqual(len(utility._hidden.keys()), 1) self.assertEqual(utility.getOrder('top', 'fancy'), ('two', 'three', 'one')) self.assertEqual(utility.getOrder('top', 'undefined (fallback)'), ('two', 'three', 'one')) self.assertEqual(utility.getOrder('top', 'basic'), ('one', )) self.assertEqual(utility.getHidden('top', 'light'), ('two', )) context = DummyImportContext(site, False) context._files['viewlets.xml'] = self._FRAGMENT1_IMPORT importViewletSettingsStorage(context) self.assertEqual(utility.getOrder('top', 'basic'), ('one', )) self.assertEqual(utility.getOrder('top', 'fancy'), ('three', 'two', 'one')) self.assertEqual(utility.getHidden('top', 'light'), ('two', )) context._files['viewlets.xml'] = self._FRAGMENT2_IMPORT importViewletSettingsStorage(context) # as the fragment FRAGMENT2_IMPORT sets the order for all skins # not only 'light', 'fancy' and 'basic' keys show up, also all other # skins registered on portal_skins. Hence adding them to the order skins = len(self.site.portal_skins.getSkinPaths()) self.assertEqual(len(utility._order.keys()), 3 + skins) self.assertEqual(len(utility._hidden.keys()), 1) self.assertEqual(utility.getOrder('top', 'fancy'), ('three', 'four', 'two', 'one')) self.assertEqual(utility.getOrder('top', 'basic'), ('one', 'four')) self.assertEqual(utility.getOrder('top', 'light'), ('four', )) self.assertEqual(utility.getHidden('top', 'light'), ('two', )) context._files['viewlets.xml'] = self._FRAGMENT1_IMPORT importViewletSettingsStorage(context) self.assertEqual(utility.getOrder('top', 'fancy'), ('four', 'three', 'two', 'one'))
def test_normal_update(self): from Products.CMFCore.exportimport.catalog import importCatalogTool site, ctool = self._initSite(2) self.assertEqual(len(ctool.objectIds()), 1) self.assertEqual(len(ctool.indexes()), 1) self.assertEqual(len(ctool.schema()), 1) context = DummyImportContext(site, False) context._files['catalog.xml'] = _UPDATE_IMPORT importCatalogTool(context) self.assertEqual(len(ctool.objectIds()), 1) self.assertEqual(len(ctool.indexes()), 2) self.assertEqual(len(ctool.schema()), 2)
def test_empty_purge(self): from Products.CMFCore.exportimport.catalog import importCatalogTool site, ctool = self._initSite(2) self.assertEqual(len(ctool.objectIds()), 1) self.assertEqual(len(ctool.indexes()), 1) self.assertEqual(len(ctool.schema()), 1) context = DummyImportContext(site, True) context._files['catalog.xml'] = _EMPTY_EXPORT importCatalogTool(context) self.assertEqual(len(ctool.objectIds()), 0) self.assertEqual(len(ctool.indexes()), 0) self.assertEqual(len(ctool.schema()), 0)
def test_migration(self): from ..cookieauth import importCookieCrumbler site, cc = self._initSite() context = DummyImportContext(site) context._files['cookieauth.xml'] = _CMF22_IMPORT 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)
def test_empty_skip_purge(self): from ..actions import importActionProviders site, atool = self._initSite(2, 0) self.assertEqual(len(atool.listActionProviders()), 2) self.assertTrue('portal_foo' in atool.listActionProviders()) self.assertTrue('portal_actions' in atool.listActionProviders()) context = DummyImportContext(site, False) context._files['actions.xml'] = _EMPTY_EXPORT importActionProviders(context) self.assertEqual(len(atool.listActionProviders()), 2) self.assertTrue('portal_foo' in atool.listActionProviders()) self.assertTrue('portal_actions' in atool.listActionProviders())
def test_empty_default_purge(self): from marsapp.categories.exportimport.storage import \ importMarscatsSettingsStorage _FIELDS = COMMON_SETUP self._populateSite(fields=_FIELDS) self.assertEqual(len(self.storage._fields), 2) self.assertEqual(len(self.storage._fields['one']), 1) self.assertEqual(len(self.storage._fields['two']), 1) context = DummyImportContext(self.site) context._files['marscats.xml'] = self._EMPTY_EXPORT importMarscatsSettingsStorage(context) self.assertEqual(len(self.storage._fields), 0)
def test_empty_update(self): from ..catalog import importCatalogTool site, ctool = self._initSite(2) self.assertEqual(len(ctool.objectIds()), 1) self.assertEqual(len(ctool.indexes()), 1) self.assertEqual(len(ctool.schema()), 1) context = DummyImportContext(site, False) context._files['catalog.xml'] = _EMPTY_EXPORT importCatalogTool(context) self.assertEqual(len(ctool.objectIds()), 1) self.assertEqual(len(ctool.indexes()), 1) self.assertEqual(len(ctool.schema()), 1)
def test_normal(self): site = self.site utility = self.storage self.assertEqual(len(utility._order.keys()), 0) self.assertEqual(len(utility._hidden.keys()), 0) context = DummyImportContext(site, False) context._files['viewlets.xml'] = self._VIEWLETS_XML importViewletSettingsStorage(context) self.assertEqual(utility.getOrder('top', 'basic'), ('one', )) self.assertEqual(utility.getOrder('top', 'undefined (fallback)'), ('one', )) self.assertEqual(utility.getOrder('top', 'fancy'), ('two', 'three', 'one')) self.assertEqual(utility.getHidden('top', 'light'), ('two', ))
def test_import_site_with_subitems_and_no_preserve(self): self._setUpAdapters() ITEM_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site') for id in ITEM_IDS: site._setObject(id, _makeItem(id)) context = DummyImportContext(site) # We want to add 'baz' to 'foo', without losing 'bar' context._files['structure/.objects'] = '' importer = self._getImporter() importer(context) self.assertEqual(len(site.objectIds()), 0)
def test_reimport_no_structure_no_delete(self): self._setUpAdapters() ITEM_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site', site_folder=True) for id in ITEM_IDS: site._setObject(id, _makeItem(id)) context = DummyImportContext(site) # no defined structure => no deletion context._files['structure/.objects'] = '' importer = self._getImporter() importer(context) self.assertEqual(len(site.objectIds()), len(ITEM_IDS))
def test_with_filenames(self): from Products.CMFCore.exportimport.typeinfo import importTypesTool site, tool = self._initSite() self.assertEqual(len(tool.objectIds()), 0) context = DummyImportContext(site) context._files['types.xml'] = self._FILENAME_EXPORT context._files['types/foo_object.xml'] = _FOO_EXPORT % 'foo object' context._files['types/bar_object.xml'] = _BAR_EXPORT % 'bar object' importTypesTool(context) self.assertEqual(len(tool.objectIds()), 2) self.assertTrue('foo object' in tool.objectIds()) self.assertTrue('bar object' in tool.objectIds())
def test_normal(self): from Products.CMFCore.exportimport.typeinfo import importTypesTool site, tool = self._initSite() self.assertEqual(len(tool.objectIds()), 0) context = DummyImportContext(site) context._files['types.xml'] = self._NORMAL_TOOL_EXPORT context._files['types/foo.xml'] = _FOO_EXPORT % 'foo' context._files['types/bar.xml'] = _BAR_EXPORT % 'bar' importTypesTool(context) self.assertEqual(len(tool.objectIds()), 2) self.assertTrue('foo' in tool.objectIds()) self.assertTrue('bar' in tool.objectIds())
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_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_import_with_known_CSV(self): ORIG_CSV = """\ one,two,three four,five,six """ NEW_CSV = """\ four,five,six one,two,three """ sheet = _makeCSVAware('config', ORIG_CSV) adapter = self._makeOne(sheet) context = DummyImportContext(None) context._files['subpath/to/sheet/config.csv'] = NEW_CSV adapter.import_(context, 'subpath/to/sheet') self.assertEqual(sheet._was_put.getvalue().strip(), NEW_CSV.strip())
def test_normal(self): from Products.CMFCore.exportimport.cookieauth \ import importCookieCrumbler site, cc = self._initSite() 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)
def testManagerRemove(self): manager = queryUtility(IPortletManager, name=u"test.testcolumn") self.assertNotEquals(None, manager) context = DummyImportContext(self.portal, purge=False) context._files['portlets.xml'] = """<?xml version="1.0"?> <portlets> <portletmanager name="test.testcolumn" remove="True" /> </portlets> """ importPortlets(context) manager = queryUtility(IPortletManager, name=u"test.testcolumn") self.assertEqual(None, manager)