Exemplo n.º 1
0
    def testRootListingForMembers(self):
        Type = ''
        CurrentFolder = '/'
        User = self.portal.acl_users.getUser('user')

        # By default, the Member role doesn't have 'List folder contents'
        # permission on the portal object, and furthermore the portal object
        # is not part of a workflow. This means that Members cannot list the
        # contents in the site root.

        # where is it?
        expected = {'files': [], 'folders': []}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        # The suggested workaround is to give them permission manually.
        self.login('admin')
        self.portal.manage_permission("List folder contents",
                                      ('Manager', 'Owner', 'Member'),
                                      acquire=1)
        self.logout()

        # there it is!
        expected = {'files': [('index_html', 4)], 'folders': ['Docs']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
Exemplo n.º 2
0
    def testWorkflowIsHonored(self):
        Type = ''
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        # now you see it...
        expected = {'files': [('Doc', 0), ('PDF', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        # make Doc private
        self.login('admin')
        doc = self.portal.Docs.Doc
        pwf = self.portal.portal_workflow
        pwf.doActionFor(doc, 'hide')
        self.logout()

        # prove that Doc is now private
        expected = 'private'
        actual = pwf.getInfoFor(doc, 'review_state')
        self.assertEqual(expected, actual)

        # ...now you don't
        expected = {'files': [('PDF', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
Exemplo n.º 3
0
    def testImageOnlyReturnsImages(self):
        Type = 'Image'
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        expected = {'files': [('Img', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
Exemplo n.º 4
0
    def testUserDoesHavePermission(self):
        Type = ''
        CurrentFolder = '/'
        User = self.portal.acl_users.getUser('admin')

        expected = {'files': [('index_html', 4)], 'folders': ['Docs']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
Exemplo n.º 5
0
    def testUserDoesntHavePermission(self):
        # Member does not have 'List folder contents' on root by default
        # see below
        Type = ''
        CurrentFolder = '/'
        User = self.portal.acl_users.getUser('user')

        expected = {'files': [], 'folders': []}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
    def testUserDoesHavePermission(self):
        Type = ''
        CurrentFolder = '/'
        NewFile = DummyFileUpload('blank.pdf')

        expected = {'param_string': '0'}
        self.login('admin')
        actual = self.fckc.FileUpload(Type, CurrentFolder, NewFile)
        self.logout()
        self.assertEqual(d2t(expected), d2t(actual))
    def testNameCollision(self):
        Type = ''
        CurrentFolder = '/'
        NewFolderName = 'Docs'

        expected = {'error_code': 101}
        self.login('admin')
        actual = self.fckc.CreateFolder(Type, CurrentFolder, NewFolderName)
        self.logout()
        self.assertEqual(d2t(expected), d2t(actual))
    def testUserDoesHavePermission(self):
        Type = ''
        CurrentFolder = '/'
        NewFolderName = 'Foo'

        expected = {'error_code': 0}
        self.login('admin')
        actual = self.fckc.CreateFolder(Type, CurrentFolder, NewFolderName)
        self.logout()
        self.assertEqual(d2t(expected), d2t(actual))
    def testCurrentFolderDoesntExist(self):
        Type = ''
        CurrentFolder = '/Nonexistant/'
        NewFile = DummyFileUpload('blank.pdf')

        expected = {'param_string': '202'}
        actual = self.fckc.FileUpload(Type, CurrentFolder, NewFile)
        self.assertEqual(d2t(expected), d2t(actual))

        # but only KeyErrors are caught
        CurrentFolder = []
        self.assertRaises(TypeError, self.fckc.FileUpload, Type, CurrentFolder,
                          NewFile)
Exemplo n.º 10
0
    def testCurrentFolderDoesntExist(self):
        Type = ''
        CurrentFolder = '/Nonexistant/'
        User = self.portal.acl_users.getUser('admin')

        expected = {'files': [], 'folders': []}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        # but only KeyErrors are caught
        CurrentFolder = []
        self.assertRaises(TypeError, self.fckc.GetFoldersAndFiles, Type,
                          CurrentFolder, User)
Exemplo n.º 11
0
    def testNonImageOnlyReturnsDocsAndFiles(self):
        Type = 'Foo'  # can be anything besides 'Image'
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        expected = {'files': [('Doc', 0), ('PDF', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        Type = []  # really, anything

        expected = {'files': [('Doc', 0), ('PDF', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
    def testCurrentFolderDoesntExist(self):
        Type = ''
        CurrentFolder = '/Nonexistant/'
        NewFolderName = 'Foo'

        expected = {'error_code': 110}
        actual = self.fckc.CreateFolder(Type, CurrentFolder, NewFolderName)
        self.assertEqual(d2t(expected), d2t(actual))

        # but only KeyErrors are caught
        CurrentFolder = []
        self.assertRaises( TypeError, self.fckc.CreateFolder, Type
                         , CurrentFolder, NewFolderName
                          )
    def testBasicNameCollision(self):
        Type = ''
        CurrentFolder = '/Docs/Test/'
        NewFile = DummyFileUpload('blank.pdf')

        # first one goes up fine, as expected
        expected = {'param_string': '0'}
        self.login('admin')
        actual = self.fckc.FileUpload(Type, CurrentFolder, NewFile)
        self.logout()
        self.assertEqual(d2t(expected), d2t(actual))

        # now let's upload it again; the spec calls for auto-renaming the file
        expected = {'param_string': "201, 'blank(1).pdf'"}
        self.login('admin')
        actual = self.fckc.FileUpload(Type, CurrentFolder, NewFile)
        self.logout()
        self.assertEqual(d2t(expected), d2t(actual))
    def testOnlyReturnsFolders(self):
        Type = ''
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        expected = {'folders': ['Test']}
        actual = self.fckc.GetFolders(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        # add another Folder and an Image for kicks
        self.login('admin')
        self.portal.Docs.invokeFactory('Folder', id='another-folder')
        self.portal.Docs.invokeFactory('Image', id='some-image')
        self.logout()

        expected = {'folders': ['Test', 'another-folder']}
        actual = self.fckc.GetFolders(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
Exemplo n.º 15
0
    def testSize(self):
        content = 'I AM THE CONTENT!!!!!!!!' * 50  # needs to be bigger than a KB
        self.portal.Docs.Doc.edit('text/html', content)

        # actual size is given in bytes
        expected = 1718
        actual = self.portal.Docs.Doc.get_size()
        # self.assertEqual(expected, actual) -- The actual value seems to vary
        # ever so slightly. I'm not sure why but the rounded value is consistent
        # so I'm not going to worry about it.

        Type = ''
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        # but we want size rounded to nearest kilobyte
        expected = {'files': [('Doc', 2), ('PDF', 0)], 'folders': ['Test']}
        actual = self.fckc.GetFoldersAndFiles(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
    def testOnlyPermissibleFoldersListed(self):
        Type = ''
        CurrentFolder = '/Docs/'
        User = self.portal.acl_users.getUser('user')

        # now you see it
        expected = {'folders': ['Test']}
        actual = self.fckc.GetFolders(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))

        # make the Test folder private so Member's can't see it
        self.login('admin')
        pwf = self.portal.portal_workflow
        pwf.doActionFor(self.portal.Docs.Test, 'hide')
        self.logout()

        # ...now you don't
        expected = {'folders': []}
        actual = self.fckc.GetFolders(Type, CurrentFolder, User)
        self.assertEqual(d2t(expected), d2t(actual))
    def testPloneCheckId(self):
        Type = ''
        CurrentFolder = '/'
        NewFolderName = ''

        def createFolder(NewFolderName):
            self.login('admin')
            return self.fckc.CreateFolder(Type, CurrentFolder, NewFolderName)
            self.logout()

        # in 2.0.5 check_id catches bad Zope id's (among other things)
        expected = {'error_code': 102}
        actual = createFolder('!!!!foofoofoof!!!!!')
        self.assertEqual(d2t(expected), d2t(actual))

        # but it does not enforce name collisions induced by portal_skins,
        # which means we can override check_id, e.g.
        expected = {'error_code': 0}
        actual = createFolder('check_id')
        self.assertEqual(d2t(expected), d2t(actual))

        # then next time we add something we will get strange behavior
        self.assertRaises(TypeError, createFolder, 'IShouldWork')

        # (clean up our mess)
        self.portal.manage_delObjects('check_id')

        # (now it should work again)
        expected = {'error_code': 0}
        actual = createFolder('IShouldWork')
        self.assertEqual(d2t(expected), d2t(actual))

        # edge errors get caught by our catch-all
        expected = {'error_code': 110}
        actual = createFolder([])
        self.assertEqual(d2t(expected), d2t(actual))