2011-06-29 2 views
5

機能テストのメンバーフォルダをplone.app.testingに追加すると、実際のサイトのように見つけることができますか?plone.app.testingにMembersフォルダを追加するには?

テスト対象の製品インストール手順でメンバーエリア作成フラグを設定しました。

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')) 

私は特にメンバーフォルダの機能が必要:

membership.memberareaCreationFlag = 1 

私はこのテスト作業を取得する必要があります。テストユーザーが所有しているフォルダは、それを切断しません。

また、acl_users.userFolderAddUserを使用して新しいユーザーを作成しようとしましたが、それは仲間には役立ちません。

memberareaCreationFlagはライブPloneサイトで正常に動作します。

答えて

4

私はついにそれを理解しました。

最初のmembership.memberareaCreationFlag = 1では、メンバーフォルダを有効にするには不十分です。

それは、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) 

SecurityControlPanelAdapterを有効にする必要があります。また機能テスト・フィクスチャは、自動的にメンバーのフォルダを作成しますが、中に手動でインストールすることが可能であるしません。あなたのフィクスチャクラスのメンバーのフォルダがユーザログインuppon作成される最後

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') 

が、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() 

Phew。

0

self.assert_はテスト方法ではありません。self.assertTrueやself.assertIsNotNoneのようなものを使用してください。

メンバーフォルダを追加するには、メンバーフォルダの作成をオンにして、新しいユーザーを追加します。

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

作成フラグを設定するだけでは不十分です。私は私の質問を更新しました。 – Epeli

+0

@エペリ:マットが述べたように、新しいユーザーを追加する必要もあります。 –

+0

私はそれを追加します。更新された質問をご覧ください。 – Epeli

0

何かが完全に私たちのために働いています。

+0

これはどのように役立ちますか?これらの製品は、メンバーフォルダの機能に影響を及ぼしますか? – Epeli

関連する問題