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)
Example #3
0
        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']))
Example #4
0
    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))
Example #5
0
    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'))
Example #6
0
    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'])
Example #7
0
    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'))
Example #9
0
    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']))
Example #12
0
    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())
Example #14
0
    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'))
Example #15
0
    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)
Example #16
0
    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)
Example #17
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)
Example #18
0
    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())
Example #19
0
    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)
Example #20
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)
Example #21
0
    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', ))
Example #22
0
    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)
Example #23
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))
Example #24
0
    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())
Example #25
0
    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())
Example #26
0
    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', ))
Example #27
0
    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)
Example #28
0
    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())
Example #29
0
    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)
Example #30
0
    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)