Ejemplo n.º 1
0
 def test_set_registry_record_on_invalid_interface(self):
     """Test that passing an invalid interface raises an Exception."""
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record('something',
                                    'value',
                                    interface=ImNotAnInterface)
Ejemplo n.º 2
0
 def test_set_valid_registry_record(self):
     """Test that setting a valid registry record succeeds."""
     registry = getUtility(IRegistry)
     registry.records['plone.api.plone_power'] = Record(
         field.TextLine(title=u"Plone's Power"))
     portal.set_registry_record('plone.api.plone_power', u'awesome')
     self.assertEqual(registry['plone.api.plone_power'], u'awesome')
Ejemplo n.º 3
0
 def test_set_missing_param_registry_record(self):
     """Test that when set_registry_record is called without
     parameters, a MissingParameterError exception is raised.
     """
     from plone.api.exc import MissingParameterError
     with self.assertRaises(MissingParameterError):
         portal.set_registry_record()
Ejemplo n.º 4
0
 def test_set_valid_registry_record(self):
     """Test that setting a valid registry record succeeds."""
     registry = getUtility(IRegistry)
     registry.records['plone.api.plone_power'] = Record(
         field.TextLine(title=u"Plone's Power"))
     portal.set_registry_record('plone.api.plone_power', u'awesome')
     self.assertEqual(registry['plone.api.plone_power'], u'awesome')
Ejemplo n.º 5
0
    def setUp(self):
        """Shared test environment set-up, ran before every test."""
        self.portal = self.layer['portal']

        # Mock the mail host so we can test sending the email
        mockmailhost = MockMailHost('MailHost')

        if not getattr(mockmailhost, 'smtp_host', None):
            mockmailhost.smtp_host = 'localhost'

        self.portal.MailHost = mockmailhost
        sm = self.portal.getSiteManager()
        sm.registerUtility(component=mockmailhost, provided=IMailHost)

        self.mailhost = portal.get_tool('MailHost')
        if HAS_PLONE5:
            portal.set_registry_record(
                'plone.email_from_name',
                u'Portal Owner',
            )
            portal.set_registry_record(
                'plone.email_from_address',
                '*****@*****.**',
            )
        else:
            self.portal._updateProperty(
                'email_from_name',
                'Portal Owner',
            )
            self.portal._updateProperty(
                'email_from_address',
                '*****@*****.**',
            )
Ejemplo n.º 6
0
 def setUp(self):
     """
     """
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     set_registry_record(
         'enabled_types', ['Document'], interface=IRerSolrpushSettings
     )
     self.published_doc = api.content.create(
         container=self.portal, type='Document', title='Published Document'
     )
     api.content.transition(obj=self.published_doc, transition='publish')
     self.unpublished_doc = api.content.create(
         container=self.portal,
         type='Document',
         title='Unpublished Document',
     )
     self.published_news = api.content.create(
         container=self.portal, type='News Item', title='Published News'
     )
     self.unpublished_news = api.content.create(
         container=self.portal, type='News Item', title='Unpublished News'
     )
     api.content.transition(obj=self.published_news, transition='publish')
     init_solr_push()
Ejemplo n.º 7
0
    def test_maintenance_reindex_with_unwanted_types(self):
        self.reindex_view()
        solr_results = search(query={'*': '*', 'b_size': 100000}, fl='UID')
        self.assertEqual(solr_results.hits, 1)

        set_registry_record(
            'enabled_types',
            ['Document', 'News Item'],
            interface=IRerSolrpushSettings,
        )
        commit()
        api.content.transition(obj=self.news, transition='publish')
        commit()
        api.content.transition(obj=self.unpublished_doc, transition='publish')
        commit()
        solr_results = search(query={
            '*': '*',
            'b_size': 100000
        },
                              fl='UID,portal_type')
        self.assertEqual(solr_results.hits, 3)

        set_registry_record('enabled_types', ['Document'],
                            interface=IRerSolrpushSettings)
        self.reindex_view()
        solr_results = search(query={'*': '*', 'b_size': 100000}, fl='UID')
        # News isn't removed because reindex view only reindex values from
        # Plone
        self.assertEqual(solr_results.hits, 3)
Ejemplo n.º 8
0
    def setUp(self):
        """Shared test environment set-up, ran before every test."""
        self.portal = self.layer['portal']

        # Mock the mail host so we can test sending the email
        mockmailhost = MockMailHost('MailHost')

        if not getattr(mockmailhost, 'smtp_host', None):
            mockmailhost.smtp_host = 'localhost'

        self.portal.MailHost = mockmailhost
        sm = self.portal.getSiteManager()
        sm.registerUtility(component=mockmailhost, provided=IMailHost)

        self.mailhost = portal.get_tool('MailHost')
        if HAS_PLONE5:
            portal.set_registry_record(
                'plone.email_from_name', u'Portal Owner'
            )
            portal.set_registry_record(
                'plone.email_from_address',
                '*****@*****.**'
            )
        else:
            self.portal._updateProperty('email_from_name', 'Portal Owner')
            self.portal._updateProperty(
                'email_from_address', '*****@*****.**'
            )
Ejemplo n.º 9
0
 def setUp(self):
     """
     We create objects before initializing solr settings, so solr core is
     always empty on setUp.
     """
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     set_registry_record(
         'enabled_types',
         ['Document', 'News Item'],
         interface=IRerSolrpushSettings,
     )
     get_registry_record('enabled_types', interface=IRerSolrpushSettings)
     init_solr_push()
     commit()
     self.document = api.content.create(container=self.portal,
                                        type='Document',
                                        title='Document foo')
     api.content.transition(obj=self.document, transition='publish')
     commit()
     self.news = api.content.create(container=self.portal,
                                    type='News Item',
                                    title='News bar')
     api.content.transition(obj=self.news, transition='publish')
     commit()
Ejemplo n.º 10
0
 def test_set_missing_param_registry_record(self):
     """Test that when set_registry_record is called without
     parameters, a MissingParameterError exception is raised.
     """
     from plone.api.exc import MissingParameterError
     with self.assertRaises(MissingParameterError):
         portal.set_registry_record()
Ejemplo n.º 11
0
    def test_maintenance_reindex_with_unwanted_types(self):
        self.reindex_view()
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        self.assertEqual(solr_results.hits, 1)

        set_registry_record(
            "enabled_types",
            [u"Document", u"News Item"],
            interface=IRerSolrpushSettings,
        )
        api.content.transition(obj=self.news, transition="publish")
        api.content.transition(obj=self.unpublished_doc, transition="publish")
        commit()
        solr_results = search(query={
            "*": "*",
            "b_size": 100000
        },
                              fl="UID,portal_type")
        self.assertEqual(solr_results.hits, 3)

        set_registry_record("enabled_types", [u"Document"],
                            interface=IRerSolrpushSettings)
        self.reindex_view()
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        # News isn't removed because reindex view only reindex values from
        # Plone
        self.assertEqual(solr_results.hits, 3)
Ejemplo n.º 12
0
    def test_maintenance_reindex(self):
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        self.assertEqual(solr_results.hits, 0)
        self.reindex_view()
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        self.assertEqual(solr_results.hits, 1)
        self.assertEqual(solr_results.docs[0]["UID"], self.published_doc.UID())

        # now, disable solr indexer and publish other two items
        set_registry_record("active", False, interface=IRerSolrpushSettings)
        api.content.transition(obj=self.news, transition="publish")
        api.content.transition(obj=self.unpublished_doc, transition="publish")
        commit()
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        self.assertEqual(solr_results.hits, 1)

        # now, enable and reindex
        set_registry_record("active", True, interface=IRerSolrpushSettings)
        self.reindex_view()
        solr_results = search(query={"*": "*", "b_size": 100000}, fl="UID")
        # news items are not enabled
        self.assertEqual(solr_results.hits, 2)
        self.assertEqual(
            set(doc["UID"] for doc in solr_results.docs),
            set([self.published_doc.UID(),
                 self.unpublished_doc.UID()]),
        )
Ejemplo n.º 13
0
 def tearDownPloneSite(self, portal):
     set_registry_record("active", True, interface=IRerSolrpushSettings)
     set_registry_record(
         "solr_url",
         self.solr_layer.solr_url,
         interface=IRerSolrpushSettings,
     )
     self.solr_layer.tearDown()
Ejemplo n.º 14
0
 def setUpPloneSite(self, portal):
     self.solr_layer.setUp()
     applyProfile(portal, 'rer.solrpush:default')
     set_registry_record('active', True, interface=IRerSolrpushSettings)
     set_registry_record(
         'solr_url',
         self.solr_layer.solr_url,
         interface=IRerSolrpushSettings,
     )
Ejemplo n.º 15
0
 def test_set_registry_record_on_invalid_interface(self):
     """Test that passing an invalid interface raises an Exception."""
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record(
             'something',
             'value',
             interface=ImNotAnInterface
         )
Ejemplo n.º 16
0
    def test_search_with_elevate(self):
        doc3 = api.content.create(container=self.portal,
                                  type="Document",
                                  title="Third page")
        # page with the shortest title containing keyword has the better score
        doc4 = api.content.create(container=self.portal,
                                  type="Document",
                                  title="page")
        api.content.transition(obj=doc3, transition="publish")
        api.content.transition(obj=doc4, transition="publish")
        commit()

        solr_results = search(query={
            "SearchableText": "page"
        },
                              fl=["UID", "Title", "[elevated]"]).docs
        self.assertEqual(len(solr_results), 4)
        self.assertEqual(
            solr_results[0],
            {
                "UID": doc4.UID(),
                "Title": doc4.Title(),
                "[elevated]": False
            },
        )

        # now let's set an elevate for third document
        value = json.dumps([{"text": [u"page"], "uid": [{"UID": doc3.UID()}]}])
        if six.PY2:
            value = value.decode("utf-8")
        set_registry_record(
            "elevate_schema",
            value,
            interface=IElevateSettings,
        )
        solr_results = search(query={
            "SearchableText": "page"
        },
                              fl=["UID", "Title", "[elevated]"]).docs
        self.assertEqual(len(solr_results), 4)
        self.assertEqual(
            solr_results[0],
            {
                "UID": doc3.UID(),
                "Title": doc3.Title(),
                "[elevated]": True
            },
        )
        self.assertEqual(
            solr_results[1],
            {
                "UID": doc4.UID(),
                "Title": doc4.Title(),
                "[elevated]": False
            },
        )
Ejemplo n.º 17
0
 def setUp(self):
     """"""
     self.portal = self.layer["portal"]
     self.request = self.layer["request"]
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     set_registry_record(
         "enabled_types",
         [u"Document", u"News Item"],
         interface=IRerSolrpushSettings,
     )
     #  initialize solr push, so solr will be populated automatically
     # on commits
     init_solr_push()
     commit()
     self.doc1 = api.content.create(
         container=self.portal,
         type="Document",
         title="First Document",
         description="lorem ipsum",
         subject=["foo", "bar"],
     )
     self.doc2 = api.content.create(
         container=self.portal,
         type="Document",
         title="Second Document",
         description="lorem ipsum dolor sit amet",
     )
     self.unpublished_doc = api.content.create(
         container=self.portal,
         type="Document",
         title="Unpublished Document",
     )
     self.published_news = api.content.create(
         container=self.portal,
         type="News Item",
         title="Published News",
         subject=["foo", "news category"],
     )
     self.unpublished_news = api.content.create(
         container=self.portal,
         type="News Item",
         title="Unpublished News",
         subject=["foo"],
     )
     self.event = api.content.create(container=self.portal,
                                     type="Event",
                                     title="Event",
                                     subject=["foo"])
     api.content.transition(obj=self.doc1, transition="publish")
     # commit()
     api.content.transition(obj=self.doc2, transition="publish")
     # commit()
     api.content.transition(obj=self.published_news, transition="publish")
     # commit()
     api.content.transition(obj=self.event, transition="publish")
     commit()
Ejemplo n.º 18
0
 def setUp(self):
     """
     """
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     set_registry_record(
         'enabled_types',
         ['Document', 'News Item'],
         interface=IRerSolrpushSettings,
     )
     #  initialize solr push, so solr will be populated automatically
     # on commits
     init_solr_push()
     commit()
     self.doc1 = api.content.create(
         container=self.portal,
         type='Document',
         title='First Document',
         description='lorem ipsum',
         subject=['foo', 'bar'],
     )
     self.doc2 = api.content.create(
         container=self.portal,
         type='Document',
         title='Second Document',
         description='lorem ipsum dolor sit amet',
     )
     self.unpublished_doc = api.content.create(
         container=self.portal,
         type='Document',
         title='Unpublished Document',
     )
     self.published_news = api.content.create(
         container=self.portal,
         type='News Item',
         title='Published News',
         subject=['foo', 'news category'],
     )
     self.unpublished_news = api.content.create(
         container=self.portal,
         type='News Item',
         title='Unpublished News',
         subject=['foo'],
     )
     self.event = api.content.create(
         container=self.portal, type='Event', title='Event', subject=['foo']
     )
     api.content.transition(obj=self.doc1, transition='publish')
     commit()
     api.content.transition(obj=self.doc2, transition='publish')
     commit()
     api.content.transition(obj=self.published_news, transition='publish')
     commit()
     api.content.transition(obj=self.event, transition='publish')
     commit()
Ejemplo n.º 19
0
 def test_set_non_existing_record_value(self):
     """Test that setting the value of a non existent record raises
     an Exception.
     """
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record(
             name='nonexistent.sharepoint.power',
             value=u'Zero',
         )
Ejemplo n.º 20
0
 def setUp(self):
     """Custom shared utility setup for tests."""
     self.portal = self.layer["portal"]
     self.request = self.layer["request"]
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     set_registry_record(
         "enabled_types",
         [u"Document", u"File"],
         interface=IRerSolrpushSettings,
     )
Ejemplo n.º 21
0
 def setUp(self):
     """Custom shared utility setup for tests."""
     self.portal = self.layer['portal']
     self.request = self.layer['request']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     set_registry_record(
         'enabled_types',
         ['Document', 'File'],
         interface=IRerSolrpushSettings,
     )
Ejemplo n.º 22
0
 def setUpPloneSite(self, portal):
     self.solr_layer.setUp()
     applyProfile(portal, "rer.solrpush:default")
     set_registry_record("active", True, interface=IRerSolrpushSettings)
     set_registry_record(
         "solr_url",
         self.solr_layer.solr_url,
         interface=IRerSolrpushSettings,
     )
     init_solr_push()
Ejemplo n.º 23
0
 def test_set_non_existing_record_value(self):
     """Test that setting the value of a non existent record raises
     an Exception.
     """
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record(
             name='nonexistent.sharepoint.power',
             value=u'Zero',
         )
Ejemplo n.º 24
0
 def test_set_invalid_key_type_record(self):
     """Test that trying to set the value of a record by passing a
     list for the record name instead of a string, raises an error.
     """
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record(
             name=['foo', 'bar'],
             value=u"baz",
         )
Ejemplo n.º 25
0
 def test_set_invalid_key_type_record(self):
     """Test that trying to set the value of a record by passing a
     list for the record name instead of a string, raises an error.
     """
     from plone.api.exc import InvalidParameterError
     with self.assertRaises(InvalidParameterError):
         portal.set_registry_record(
             name=['foo', 'bar'],
             value=u"baz",
         )
Ejemplo n.º 26
0
    def setUp(self):
        """
        We create objects before initializing solr settings, so solr core is
        always empty on setUp.
        """
        self.portal = self.layer["portal"]
        self.request = self.layer["request"]
        setRoles(self.portal, TEST_USER_ID, ["Manager"])
        set_registry_record(
            "enabled_types",
            [u"Document", u"News Item"],
            interface=IRerSolrpushSettings,
        )
        init_solr_push()
        commit()
        # set_registry_record("active", True, interface=IRerSolrpushSettings)
        self.docs = {}
        for i in range(20):
            searchwords = []
            id = "doc-%03d" % i
            if i == 5:
                id = "doc-odd"
                title = "Document %s" % i
                searchwords = ["odd"]
            elif i % 2 == 0:
                title = "Document %s even even" % i
            else:
                title = "Document %s odd odd" % i
            obj = self.docs[i] = api.content.create(
                container=self.portal,
                type="Document",
                id=id,
                title=title,
                searchwords=searchwords,
            )
            # obj.reindexObject(idxs=['Title'])
            api.content.transition(obj=obj, transition="publish")
        for i in range(10):
            id = "event-%03d" % i
            if i == 5:
                id = "event-odd"
                title = "Event %s" % i
            elif i % 2 == 0:
                title = "Event %s even even" % i
            else:
                title = "Event %s odd odd" % i
            obj = self.docs[i] = api.content.create(
                container=self.portal,
                type="Event",
                id=id,
                title=title,
            )
            api.content.transition(obj=obj, transition="publish")

        commit()
Ejemplo n.º 27
0
    def test_search_bq(self):
        solr_results = search(query={"": "odd"}, fl=["UID", "id", "Title"])
        self.assertEqual(solr_results.hits, len(self.docs) / 2)
        self.assertNotEqual(solr_results.docs[0]["id"], "odd")

        set_registry_record("bq", u"id:odd", interface=IRerSolrpushSettings)
        commit()

        solr_results = search(query={"": "odd"}, fl=["UID", "id", "Title"])
        self.assertEqual(solr_results.hits, len(self.docs) / 2)
        self.assertEqual(solr_results.docs[0]["id"], "odd")
Ejemplo n.º 28
0
    def test_set_no_value_param_for_existing_record(self):
        """Test that calling portal.set_registry_record with a name
        parameter for an existing record, but without a value, raises
        an Exception.
        """
        registry = getUtility(IRegistry)
        registry.records['plone.api.plone_power'] = Record(
            field.TextLine(title=u"Plone's Power"))

        from plone.api.exc import MissingParameterError
        with self.assertRaises(MissingParameterError):
            portal.set_registry_record(name='plone.api.plone_power')
Ejemplo n.º 29
0
    def test_set_no_value_param_for_existing_record(self):
        """Test that calling portal.set_registry_record with a name
        parameter for an existing record, but without a value, raises
        an Exception.
        """
        registry = getUtility(IRegistry)
        registry.records['plone.api.plone_power'] = Record(
            field.TextLine(title=u"Plone's Power"))

        from plone.api.exc import MissingParameterError
        with self.assertRaises(MissingParameterError):
            portal.set_registry_record(name='plone.api.plone_power')
def importVarious(context):
    """
    Import various settings."""
    # Only run step if a flag file is present
    if context.readDataFile('PloneSurvey.txt') is None:
        return
    registry = getUtility(IRegistry)
    navigation_settings = registry.forInterface(INavigationSchema, prefix='plone')
    if 'Survey' not in navigation_settings.displayed_types:
        tmp = tuple(navigation_settings.displayed_types)
        # XXX this doesn't work in registry.xml in tests
        portal.set_registry_record('plone.displayed_types', tmp + ('Survey',))
Ejemplo n.º 31
0
    def test_set_registry_record_from_interface(self):
        """Test that setting a value on a record from an interface works."""
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        text = u'random text'
        portal.set_registry_record('field_one',
                                   text,
                                   interface=IMyRegistrySettings)
        self.assertEqual(
            portal.get_registry_record('field_one',
                                       interface=IMyRegistrySettings), text)
Ejemplo n.º 32
0
    def test_set_invalid_registry_record_from_interface(self):
        """Test that trying to set an invalid field from an interface raises
        an Exception.
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError):
            portal.set_registry_record('non_existing_field',
                                       'value',
                                       interface=IMyRegistrySettings)
Ejemplo n.º 33
0
    def test_set_invalid_value_on_registry_record_from_interface(self):
        """Test that setting a value not meant for the record raises an
        Exception..
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError):
            portal.set_registry_record('field_one',
                                       'value',
                                       interface=IMyRegistrySettings)
Ejemplo n.º 34
0
    def test_set_registry_record_on_invalid_interface_msg(self):
        """Test that a helpful message is shown when passing an invalid
        interface.
        """
        from plone.api.exc import InvalidParameterError
        with self.assertRaises(InvalidParameterError) as cm:
            portal.set_registry_record('something',
                                       'value',
                                       interface=ImNotAnInterface)
        exc_str = str(cm.exception)

        # Check if there is an error message.
        self.assertTrue(exc_str.startswith('The interface parameter has to '))
Ejemplo n.º 35
0
def importVarious(context):
    """
    Import various settings."""
    # Only run step if a flag file is present
    if context.readDataFile('PloneSurvey.txt') is None:
        return
    registry = getUtility(IRegistry)
    navigation_settings = registry.forInterface(INavigationSchema,
                                                prefix='plone')
    if 'Survey' not in navigation_settings.displayed_types:
        tmp = tuple(navigation_settings.displayed_types)
        # XXX this doesn't work in registry.xml in tests
        portal.set_registry_record('plone.displayed_types', tmp + ('Survey', ))
Ejemplo n.º 36
0
 def handle_update_default(self, data, type):
     should_update_registy = data.get('update_default_{}'.format(type),
                                      False)
     form_value = data.get('view_more_{}'.format(type), None)
     if should_update_registy and form_value:
         record_name = 'castle.resource_slide_view_more_{}'.format(type)
         try:
             default_value = get_registry_record(record_name)
         except Exception:
             return
         if form_value != default_value:
             set_registry_record(record_name, form_value)
     data['update_default_{}'.format(type)] = False
Ejemplo n.º 37
0
    def _set_localization_date_format(self):
        """Set the expected localized date format."""
        from plone.api.exc import InvalidParameterError

        name_root = 'Products.CMFPlone.i18nl10n.override_dateformat.'
        try:
            portal.set_registry_record(
                name=name_root + 'Enabled',
                value=True,
            )
            portal.set_registry_record(
                name=name_root + 'date_format_long',
                value='%b %d, %Y %I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'time_format',
                value='%I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'date_format_short',
                value='%b %d, %Y',
            )
        except InvalidParameterError:
            # before Plone 4.3, date formats were stored in portal_properties
            properties = portal.get_tool('portal_properties')
            properties.localLongTimeFormat = '%b %d, %Y %I:%M %p'
            properties.localTimeOnlyFormat = '%I:%M %p'
            properties.localTimeFormat = '%b %d, %Y'
Ejemplo n.º 38
0
    def test_search_qf(self):
        solr_results = search(query={"": "odd"}, fl=["UID", "id", "Title"])
        self.assertEqual(solr_results.hits, len(self.docs) / 2)
        self.assertNotEqual(solr_results.docs[0]["id"], "odd")

        set_registry_record(
            "qf",
            u"id^1000.0 SearchableText^1.0",
            interface=IRerSolrpushSettings,
        )
        commit()
        solr_results = search(query={"": "odd"}, fl=["UID", "id", "Title"])
        self.assertEqual(solr_results.hits, len(self.docs) / 2)
        self.assertEqual(solr_results.docs[0]["id"], "odd")
Ejemplo n.º 39
0
    def test_set_invalid_registry_record_from_interface(self):
        """Test that trying to set an invalid field from an interface raises
        an Exception.
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError):
            portal.set_registry_record(
                'non_existing_field',
                'value',
                interface=IMyRegistrySettings
            )
Ejemplo n.º 40
0
    def test_set_invalid_value_on_registry_record_from_interface(self):
        """Test that setting a value not meant for the record raises an
        Exception..
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError):
            portal.set_registry_record(
                'field_one',
                'value',
                interface=IMyRegistrySettings
            )
Ejemplo n.º 41
0
    def test_get_localized_time(self):
        """Test getting the localized time."""
        from plone.api.exc import InvalidParameterError

        # set the expected localized date format
        name_root = "Products.CMFPlone.i18nl10n.override_dateformat."
        try:
            portal.set_registry_record(name=name_root + "Enabled", value=True)
            portal.set_registry_record(name=name_root + "date_format_long", value="%b %d, %Y %I:%M %p")
            portal.set_registry_record(name=name_root + "time_format", value="%I:%M %p")
            portal.set_registry_record(name=name_root + "date_format_short", value="%b %d, %Y")
        except InvalidParameterError:
            # before Plone 4.3, date formats were stored in portal_properties
            properties = portal.get_tool("portal_properties")
            properties.localLongTimeFormat = "%b %d, %Y %I:%M %p"
            properties.localTimeOnlyFormat = "%I:%M %p"
            properties.localTimeFormat = "%b %d, %Y"

        # tests
        result = portal.get_localized_time(datetime=DateTime(1999, 12, 31, 23, 59), long_format=True)
        self.assertEqual(result, "Dec 31, 1999 11:59 PM")

        result = portal.get_localized_time(datetime=DateTime(1999, 12, 31, 23, 59), time_only=True)
        self.assertEqual(result, "11:59 PM")

        result = portal.get_localized_time(datetime=DateTime(1999, 12, 31, 23, 59))
        self.assertEqual(result, "Dec 31, 1999")
Ejemplo n.º 42
0
    def _set_localization_date_format(self):
        """Set the expected localized date format."""
        from plone.api.exc import InvalidParameterError

        name_root = 'Products.CMFPlone.i18nl10n.override_dateformat.'
        try:
            portal.set_registry_record(
                name=name_root + 'Enabled',
                value=True,
            )
            portal.set_registry_record(
                name=name_root + 'date_format_long',
                value='%b %d, %Y %I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'time_format',
                value='%I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'date_format_short',
                value='%b %d, %Y',
            )
        except InvalidParameterError:
            # before Plone 4.3, date formats were stored in portal_properties
            properties = portal.get_tool('portal_properties')
            properties.localLongTimeFormat = '%b %d, %Y %I:%M %p'
            properties.localTimeOnlyFormat = '%I:%M %p'
            properties.localTimeFormat = '%b %d, %Y'
Ejemplo n.º 43
0
    def test_set_registry_record_on_invalid_interface_msg(self):
        """Test that a helpful message is shown when passing an invalid
        interface.
        """
        from plone.api.exc import InvalidParameterError
        with self.assertRaises(InvalidParameterError) as cm:
            portal.set_registry_record(
                'something',
                'value',
                interface=ImNotAnInterface
            )
        exc_str = str(cm.exception)

        # Check if there is an error message.
        self.assertTrue(exc_str.startswith('The interface parameter has to '))
Ejemplo n.º 44
0
 def test_set_registry_record(self):
     registry = getUtility(IRegistry)
     registry.records['plone.api.plone_power'] = Record(
         field.TextLine(title=u"Plone's Power"))
     portal.set_registry_record('plone.api.plone_power', u'awesome')
     self.assertEqual(registry['plone.api.plone_power'], u'awesome')
     self.assertRaises(KeyError, portal.set_registry_record,
                       name='nonexistent.sharepoint.power',
                       value=u'Zero')
     self.assertRaises(MissingParameterError, portal.set_registry_record)
     self.assertRaises(MissingParameterError, portal.set_registry_record,
                       name='plone.api.plone_power')
     self.assertRaises(InvalidParameterError, portal.set_registry_record,
                       name=['foo', 'bar'],
                       value=u"baz")
Ejemplo n.º 45
0
    def test_send_email_with_config_in_registry(self):
        """Test mail-setting being stored in registry
        """
        self.mailhost.reset()

        portal.set_registry_record('plone.email_from_address',
                                   '*****@*****.**')  # ASCII
        portal.set_registry_record('plone.email_from_name',
                                   u'Registry')  # TextLine
        portal.send_email(
            recipient='*****@*****.**',
            subject='Trappist',
            body=u'One for you Bob!',
        )
        self.assertEqual(len(self.mailhost.messages), 1)
        msg = message_from_string(self.mailhost.messages[0])
        self.assertEqual(msg['From'], 'Registry <*****@*****.**>')
Ejemplo n.º 46
0
    def test_set_registry_record_from_interface(self):
        """Test that setting a value on a record from an interface works."""
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        text = u'random text'
        portal.set_registry_record(
            'field_one',
            text,
            interface=IMyRegistrySettings
        )
        self.assertEqual(
            portal.get_registry_record(
                'field_one',
                interface=IMyRegistrySettings
            ),
            text
        )
Ejemplo n.º 47
0
    def test_set_invalid_registry_record_from_interface_msg(self):
        """Test that a helpful message is shown when trying to set an invalid
        field from an interface.
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError) as cm:
            portal.set_registry_record(
                'non_existing_field',
                'value',
                interface=IMyRegistrySettings
            )
        exc_str = str(cm.exception)

        # Check if there is an error message.
        self.assertTrue(exc_str.startswith('Cannot find a record with name '))
        self.assertTrue(exc_str.find(' on interface ') != -1)
        self.assertTrue(exc_str.find('field_one') != -1)
        self.assertTrue(exc_str.find('field_two') != -1)
Ejemplo n.º 48
0
    def test_set_invalid_value_on_registry_record_from_interface_msg(self):
        """Test that setting a value not meant for the record raises an
        Exception..
        """
        from plone.api.exc import InvalidParameterError
        registry = getUtility(IRegistry)
        registry.registerInterface(IMyRegistrySettings)

        with self.assertRaises(InvalidParameterError) as cm:
            portal.set_registry_record(
                'field_one',
                'value',
                interface=IMyRegistrySettings
            )
        exc_str = str(cm.exception)

        # Check if there is an error message.
        self.assertTrue(
            exc_str.startswith('The value parameter for the field')
        )
        self.assertTrue(exc_str.find(' needs to be ') != -1)
        self.assertTrue(exc_str.find('TextLine') != -1)
Ejemplo n.º 49
0
    def test_send_email_with_printingmailhost(self):
        """ Test that send_email does not raise an exception when
        Products.PrintingMailHost is installed and active.
        """
        old_flag = portal.PRINTINGMAILHOST_ENABLED

        if HAS_PLONE5:
            old_value = portal.get_registry_record('plone.email_from_address')
            portal.set_registry_record('plone.email_from_address', '')  # ASCII
        else:
            old_smtp_host = self.portal.MailHost.smtp_host
            self.portal.MailHost.smtp_host = None

        # PrintingMailHost disabled
        portal.PRINTINGMAILHOST_ENABLED = False
        with self.assertRaises(ValueError):
            portal.send_email(
                recipient='*****@*****.**',
                sender='*****@*****.**',
                subject='Trappist',
                body=u'One for you Bob!'
            )

        # PrintingMailHost enabled
        portal.PRINTINGMAILHOST_ENABLED = True
        portal.send_email(
            recipient='*****@*****.**',
            sender='*****@*****.**',
            subject='Trappist',
            body=u'One for you Bob!',
        )

        # Prevents sideeffects in other tests.
        if HAS_PLONE5:
            portal.set_registry_record('plone.email_from_address', old_value)
        else:
            self.portal.MailHost.smtp_host = old_smtp_host
        portal.PRINTINGMAILHOST_ENABLED = old_flag
Ejemplo n.º 50
0
    def test_send_email_without_configured_mailhost(self):
        """By default, the MailHost is not configured yet, so we cannot
        send email.
        """
        if HAS_PLONE5:
            old_value = portal.get_registry_record('plone.email_from_address')
            portal.set_registry_record('plone.email_from_address', '')  # ASCII
        else:
            old_smtp_host = self.portal.MailHost.smtp_host
            self.portal.MailHost.smtp_host = None

        with self.assertRaises(ValueError):
            portal.send_email(
                recipient='*****@*****.**',
                sender='*****@*****.**',
                subject='Trappist',
                body=u'One for you Bob!',
            )

        if HAS_PLONE5:
            portal.set_registry_record('plone.email_from_address', old_value)
        else:
            self.portal.MailHost.smtp_host = old_smtp_host
Ejemplo n.º 51
0
    def test_get_localized_time(self):
        """Test getting the localized time."""
        from plone.api.exc import InvalidParameterError

        # set the expected localized date format
        name_root = 'Products.CMFPlone.i18nl10n.override_dateformat.'
        try:
            portal.set_registry_record(
                name=name_root + 'Enabled',
                value=True,
            )
            portal.set_registry_record(
                name=name_root + 'date_format_long',
                value='%b %d, %Y %I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'time_format',
                value='%I:%M %p',
            )
            portal.set_registry_record(
                name=name_root + 'date_format_short',
                value='%b %d, %Y',
            )
        except InvalidParameterError:
            # before Plone 4.3, date formats were stored in portal_properties
            properties = portal.get_tool('portal_properties')
            properties.localLongTimeFormat = '%b %d, %Y %I:%M %p'
            properties.localTimeOnlyFormat = '%I:%M %p'
            properties.localTimeFormat = '%b %d, %Y'

        # tests
        result = portal.get_localized_time(
            datetime=DateTime(1999, 12, 31, 23, 59),
            long_format=True,
        )
        self.assertEqual(result, 'Dec 31, 1999 11:59 PM')

        result = portal.get_localized_time(
            datetime=DateTime(1999, 12, 31, 23, 59),
            time_only=True,
        )
        self.assertEqual(result, '11:59 PM')

        result = portal.get_localized_time(
            datetime=DateTime(1999, 12, 31, 23, 59),
        )
        self.assertEqual(result, 'Dec 31, 1999')
Ejemplo n.º 52
0
 def tearDownPloneSite(self, portal):
     set_registry_record('collective.solr.active', False)
     set_registry_record('collective.solr.port', 8983)
     set_registry_record('collective.solr.base', u'/solr/plone')
     self.solr_layer.tearDown()
Ejemplo n.º 53
0
 def setUpPloneSite(self, portal):
     self.solr_layer.setUp()
     applyProfile(portal, 'collective.solr:default')
     set_registry_record('collective.solr.active', self.solr_active)
     set_registry_record('collective.solr.port', self.solr_port)
     set_registry_record('collective.solr.base', self.solr_base)