def testSetObjectRaisesBadRequest(self):
     # _setObject() should raise zExceptions.BadRequest
     # on duplicate id.
     self.folder._setObject('foo', dummy.Item())
     try:
         self.folder._setObject('foo', dummy.Item())
     except BadRequest:
         pass
Exemple #2
0
    def testCollisionSkipped(self):
        # Note that check is skipped when we don't have
        # the "Access contents information" permission.
        self.folder.manage_permission('Access contents information', [],
                                      acquire=0)

        self.folder._setObject('foo', dummy.Item('foo'))
        self.folder._setObject('bar', dummy.Item('bar'))
        r = self.folder.foo.check_id('bar')
        self.assertEqual(r, None)  # success
Exemple #3
0
    def testCollisionNotSkipped(self):
        # Note that the existing object check is done, even when we don't have
        # the "Access contents information" permission.
        # This used to be the other way around.  The reason got lost.
        # Probably this was because the permission was checked automatically
        # because check_id was a skin script.  Since Plone 5.2 it is a
        # function which cannot be accessed from the web or templates,
        # so the permission test seems unneeded.
        self.folder.manage_permission('Access contents information', [],
                                      acquire=0)

        self.folder._setObject('foo', dummy.Item('foo'))
        self.folder._setObject('bar', dummy.Item('bar'))
        r = check_id(self.folder.foo, 'bar')
        self.assertEqual(r, u'bar is reserved.')
Exemple #4
0
    def testInvalidIdSkipped(self):
        # Note that the check is skipped when we don't have
        # the "Add portal content" permission.
        self.folder.manage_permission('Add portal content', [], acquire=0)

        self.folder._setObject('foo', dummy.Item('foo'))
        r = check_id(self.folder.foo, '_foo')
        self.assertEqual(r, None)   # success
Exemple #5
0
    def testReservedIdSkipped(self):
        # This check is picked up by the checkIdAvailable, unless we don't have
        # the "Add portal content" permission, in which case it is picked up by
        # the final hasattr check.
        self.folder.manage_permission('Add portal content', [], acquire=0)

        self.folder._setObject('foo', dummy.Item('foo'))
        r = check_id(self.folder.foo, 'portal_catalog')
        self.assertEqual(r, u'portal_catalog is reserved.')
Exemple #6
0
    def testParentMethodAliasDisallowed(self):
        # Note that the check is skipped when we don't have
        # the "Add portal content" permission.
        self.folder.manage_permission('Add portal content', ['Manager'],
                                      acquire=0)

        self.folder._setObject('foo', dummy.Item('foo'))
        for alias in self.folder.getTypeInfo().getMethodAliases().keys():
            r = check_id(self.folder.foo, alias)
            self.assertEqual(r, u'%s is reserved.' % alias)
Exemple #7
0
 def afterSetUp(self):
     self.items = [
         dummy.Item('d', 'fred'),
         dummy.Item('c', 'wilma'),
         dummy.Item('b', 'barney'),
         dummy.Item('a', 'betty'),
     ]
     self.items2 = [
         dummy.Item('D', 'Fred'),
         dummy.Item('c', 'Wilma'),
         dummy.Item('B', 'barney'),
         dummy.Item('a', 'betty'),
     ]
Exemple #8
0
 def testContainerHookRaisesConflictError(self):
     # check_id should not swallow ConflictErrors raised by hook
     self.folder._setObject('checkValidId', dummy.Raiser(ConflictError))
     self.folder._setObject('foo', dummy.Item('foo'))
     self.assertRaises(ConflictError, check_id(self.folder.foo), 'whatever')
Exemple #9
0
 def testContainerHookRaisesUnauthorized(self):
     # check_id should not swallow Unauthorized errors raised by hook
     self.folder._setObject('checkValidId', dummy.Raiser(Unauthorized))
     self.folder._setObject('foo', dummy.Item('foo'))
     self.assertRaises(Unauthorized, check_id(self.folder.foo), 'whatever')
 def test_is_folderishWithNonFolder(self):
     i = dummy.Item()
     self.assertFalse(is_folderish(i)())
Exemple #11
0
 def testInvalidId(self):
     self.folder._setObject('foo', dummy.Item('foo'))
     r = check_id(self.folder.foo, '_foo')
     self.assertEqual(r, u'_foo is reserved.')
Exemple #12
0
 def testReservedId(self):
     self.folder._setObject('foo', dummy.Item('foo'))
     r = check_id(self.folder.foo, 'portal_catalog')
     self.assertEqual(r, u'portal_catalog is reserved.')
Exemple #13
0
 def testTempObjectCollision(self):
     foo = self.folder.restrictedTraverse('portal_factory/Document/foo')
     self.folder._setObject('bar', dummy.Item('bar'))
     r = foo.check_id('bar')
     self.assertEqual(r, u'bar is reserved.')
Exemple #14
0
 def testContainerHookRaisesUnauthorized(self):
     # check_id does not raise Unauthorized errors raised by hook
     self.folder._setObject('checkValidId', dummy.Raiser(Unauthorized))
     self.folder._setObject('foo', dummy.Item('foo'))
     r = check_id(self.folder.foo, 'whatever')
     self.assertEqual(r, u'whatever is reserved.')
 def testCheckIdAvailableCatchesBadRequest(self):
     # checkIdAvailable() should catch zExceptions.BadRequest
     self.folder._setObject('foo', dummy.Item())
     self.assertFalse(self.folder.checkIdAvailable('foo'))
Exemple #16
0
 def testContainerHook(self):
     # Container may have a checkValidId method; make sure it is called
     self.folder._setObject('checkValidId', dummy.Raiser(dummy.Error))
     self.folder._setObject('foo', dummy.Item('foo'))
     r = check_id(self.folder.foo, 'whatever')
     self.assertEqual(r, u'whatever is reserved.')
 def testIsStructuralFolderWithNonFolder(self):
     i = dummy.Item()
     self.assertFalse(Plone(i, self.app.REQUEST).isStructuralFolder())
Exemple #18
0
 def test_is_folderishWithNonFolder(self):
     i = dummy.Item()
     self.failIf(is_folderish(i)())