Exemplo n.º 1
0
 def test_checkin_without_IRepositoryContent_adapter_should_raise(self):
     manager = ICheckoutManager(self.content)
     checked_out = manager.checkout()
     self._tear_down_adapters()
     manager = ICheckinManager(checked_out)
     self.assertTrue(manager.canCheckin)
     self.assertRaises(LookupError, manager.checkin)
Exemplo n.º 2
0
    def test_checkin_with_veto_should_raise(self):
        self.assertEqual(1, len(self.workingcopy))
        lsc = zeit.cms.content.interfaces.ISemanticChange(
            self.repository['testcontent'])
        changed = lsc.last_semantic_change

        manager = ICheckinManager(self.checked_out)
        with self.assertRaises(CheckinCheckoutError) as e:
            manager.checkin()
            self.assertIn('provoked veto', str(e.exception))

        self.assertEqual(1, len(self.workingcopy))

        lsc = zeit.cms.content.interfaces.ISemanticChange(
            self.repository['testcontent'])
        self.assertEqual(changed, lsc.last_semantic_change)
Exemplo n.º 3
0
 def test_checkin_does_not_unlock_while_publishing(self):
     manager = ICheckoutManager(self.repository['testcontent'])
     checked_out = manager.checkout()
     manager = ICheckinManager(checked_out)
     manager.checkin(publishing=True)
     lockable = zope.app.locking.interfaces.ILockable(
         self.repository['testcontent'])
     self.assertTrue(lockable.locked())
Exemplo n.º 4
0
    def test_event_is_not_sent_for_temporary_workingcopy(self):
        # thus, no validation is performed during publishing, for example
        # XXX this needs to be conceptualized more clearly, see #12701

        # undo setUp, since it doesn't apply for this test
        manager = ICheckinManager(self.checked_out)
        manager.delete()

        manager = ICheckoutManager(self.repository['testcontent'])
        checked_out = manager.checkout(temporary=True)
        manager = ICheckinManager(checked_out)
        self.assertTrue(manager.canCheckin)
Exemplo n.º 5
0
 def _ensure_unlocked(self, content):
     lockable = zope.app.locking.interfaces.ILockable(content, None)
     if not lockable:
         return
     if lockable.isLockedOut():
         lockable.breaklock()
     if lockable.ownLock():
         checked_out = zeit.cms.interfaces.ICMSWCContent(
             content.uniqueId, None)
         if checked_out is not None:
             ICheckinManager(checked_out).delete()
Exemplo n.º 6
0
    def add(self, object, container=None):
        super(Add, self).add(object, container)
        zeit.content.article.interfaces.IBreakingNews(
            self._created_object).is_breaking = True
        # We need to check out the new article so that AfterCheckout events are
        # run (which e.g. set default values of ICommonMetadata fields), but
        # the user won't want to edit anything right now, so we check in
        # immediately (and redirect to a view that triggers publishing).
        self._created_object = ICheckinManager(self._created_object).checkin()
        self._checked_out = False

        IPublishInfo(self._created_object).urgent = True
Exemplo n.º 7
0
    def test_validation_errors_should_veto_checkin(self):
        from zeit.cms.checkout.interfaces import ICheckinManager
        from zeit.cms.checkout.interfaces import ICheckoutManager
        import zeit.content.article.article

        self.repository['article'] = zeit.content.article.article.Article()

        manager = ICheckoutManager(self.repository['article'])
        co = manager.checkout()
        manager = ICheckinManager(co)
        self.assertFalse(manager.canCheckin)
        errors = dict(manager.last_validation_error)
        self.assertIsInstance(
            errors['title'], zope.schema.ValidationError)
Exemplo n.º 8
0
    def test_security_proxied_fields_should_be_validated_correctly(self):
        from zeit.cms.checkout.interfaces import ICheckinManager
        from zeit.cms.checkout.interfaces import ICheckoutManager
        import zeit.content.article.article

        self.repository['article'] = zeit.content.article.article.Article()

        manager = ICheckoutManager(self.repository['article'])
        co = manager.checkout()
        co = zope.security.proxy.ProxyFactory(co)
        manager = ICheckinManager(co)
        self.assertFalse(manager.canCheckin)
        errors = dict(manager.last_validation_error)
        # the default for keywords is an empty tuple
        self.assertNotIn('keywords', errors)
Exemplo n.º 9
0
    def test_checkin_with_veto_should_raise(self):
        self.assertEqual(1, len(self.workingcopy))
        lsc = zeit.cms.content.interfaces.ISemanticChange(
            self.repository['testcontent'])
        changed = lsc.last_semantic_change

        manager = ICheckinManager(self.checked_out)
        self.assertRaisesRegexp(CheckinCheckoutError, '.*provoked veto.*',
                                manager.checkin)

        self.assertEqual(1, len(self.workingcopy))

        lsc = zeit.cms.content.interfaces.ISemanticChange(
            self.repository['testcontent'])
        self.assertEqual(changed, lsc.last_semantic_change)
Exemplo n.º 10
0
 def test_delete_issues_events_and_deletes_context(self):
     manager = ICheckoutManager(self.content)
     checked_out = manager.checkout()
     parent = checked_out.__parent__
     name = checked_out.__name__
     manager = ICheckinManager(checked_out)
     with mock.patch('zope.event.notify', mock.Mock()) as notify:
         manager.delete()
         self.assertNotIn(name, parent.keys())
         self.assertEqual(2, len(notify.call_args_list))
         before, after = notify.call_args_list
         self.assertTrue(
             zeit.cms.checkout.interfaces.IBeforeDeleteEvent.providedBy(
                 before[0][0]))
         self.assertTrue(
             zeit.cms.checkout.interfaces.IAfterDeleteEvent.providedBy(
                 after[0][0]))
Exemplo n.º 11
0
 def test_checkin_needs_adapter_to_IRepositoryContent(self):
     manager = ICheckoutManager(self.content)
     checked_out = manager.checkout()
     manager = ICheckinManager(checked_out)
     checked_in = manager.checkin()
     self.assertFalse(checked_in.are_you_local)
Exemplo n.º 12
0
 def test_veto_message_is_available_on_manager(self):
     manager = ICheckinManager(self.checked_out)
     manager.canCheckin
     self.assertEqual('provoked veto', manager.last_validation_error)
Exemplo n.º 13
0
 def test_veto_in_event_makes_canCheckin_return_false(self):
     manager = ICheckinManager(self.checked_out)
     self.assertFalse(manager.canCheckin)