Как добавить папку «Участники» в plone.app.testing? - PullRequest
5 голосов
/ 29 июня 2011

Как я могу добавить папку "Члены" для своих функциональных тестов в plone.app.testing , чтобы ее можно было найти как на реальном сайте?

Установили флаг создания области члена в моемшаг установки продукта, который я тестирую.

membership.memberareaCreationFlag = 1 

Мне нужно, чтобы этот тест работал:

class TestMemberFolder(unittest.TestCase):          
    layer = MY_FUNCTIONAL_TESTING         

    def setUp(self):                                
        portal = self.portal = self.layer['portal'] 

    def test_members_folder(self):

        membership = getToolByName(self.portal, 'portal_membership')  
        membership.addMember("basicuser", "secret", ["Member"], [])
        transaction.commit()

        login(self.portal, "basicuser")                               

        # This works just fine, because it was set by my product
        self.assertEquals(membership.memberareaCreationFlag, 1,       
            "memberareaCreationFlag must be 1 when it is enabled")    


        members_folder = membership.getMembersFolder()                
        # But this fails
        self.assertIsNotNone(members_folder)     
        # Also we should have the user folder here
        self.assertTrue(members_folder.hasObject('basicuser'))

Мне особенно нужны функции папки пользователя.Просто папка, принадлежащая тестовому пользователю, не обрезает ее.

Также я попытался создать нового пользователя с acl_users.userFolderAddUser, но это не помогает соседу.

memberareaCreationFlag прекрасно работает в живомPlone site.

Ответы [ 3 ]

4 голосов
/ 29 июня 2011

Я наконец понял это.

При первом членстве.memberareaCreationFlag = 1 недостаточно для включения папок участников.

Его необходимо включить с SecurityControlPanelAdapter в plone.app.controlpanel.security

from plone.app.controlpanel.security import ISecuritySchema
# Fetch the adapter
security_adapter =  ISecuritySchema(portal)
security_adapter.set_enable_user_folders(True)

Кроме того, устройство функционального тестирования не создает папку участника автоматически, но возможно установить ее вручную в своем классе устройства

class YourPloneFixture(PloneSandboxLayer):
    defaultBases = (PLONE_FIXTURE,)

    def setUpZope(self, app, configurationContext):

        # Required by Products.CMFPlone:plone-content
        z2.installProduct(app, 'Products.PythonScripts')

    def setUpPloneSite(self, portal):

        # Installs all the Plone stuff. Workflows etc.
        self.applyProfile(portal, 'Products.CMFPlone:plone')

        # Install portal content. Including the Members folder!
        self.applyProfile(portal, 'Products.CMFPlone:plone-content')

Наконец, папки членасоздал учетную запись пользователя uppon, но вспомогательная функция входа в систему в plone.app.testing кажется слишком низкой для этого.Вход в систему с помощью zope.testbrowser, кажется, делает трюк

browser = Browser(self.layer['app'])
browser.open(self.portal.absolute_url() + '/login_form')
browser.getControl(name='__ac_name').value = TEST_USER_NAME
browser.getControl(name='__ac_password').value = TEST_USER_PASSWOR
browser.getControl(name='submit').click()

Фу.

0 голосов
/ 29 июня 2011

Что-то вроде

  def setUpPloneSite(self, portal):
        # Install into Plone site using portal_setup
        quickInstallProduct(portal, 'Products.DataGridField')
        quickInstallProduct(portal, 'Products.ATVocabularyManager')
        quickInstallProduct(portal, 'Products.MasterSelectWidget')
        if HAVE_LP:
            quickInstallProduct(portal, 'Products.LinguaPlone')
        applyProfile(portal, 'vs.org:default')
        portal.acl_users.userFolderAddUser('god', 'dummy', ['Manager'], []) 
        setRoles(portal, 'god', ['Manager'])
        login(portal, 'god')

отлично работает для нас.

0 голосов
/ 29 июня 2011

self.assert_ не является методом тестирования, используйте что-то вроде self.assertTrue или self.assertIsNotNone.

Чтобы добавить папки участников, просто включите создание папки участников и добавьте нового пользователя.

...