2011-06-29 7 views
5

plone.app.testing में मेरे कार्यात्मक परीक्षणों के लिए मैं सदस्य फ़ोल्डर कैसे जोड़ सकता हूं ताकि यह वास्तविक साइट में मिल सके?plone.app.testing में सदस्य फ़ोल्डर कैसे जोड़ें?

मेरे उत्पाद स्थापना चरण में सदस्य क्षेत्र निर्माण ध्वज सेट किया है जिसे मैं परीक्षण कर रहा हूं।

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 के साथ नए उपयोगकर्ता को बनाने का प्रयास किया, लेकिन यह शिकारी की मदद नहीं करता है।

सदस्यारे क्रिएशनफ्लैग लाइव प्लोन साइट में बस ठीक काम करता है।

उत्तर

4

मैंने अंततः इसे समझ लिया।

पहली सदस्यता में। MemberareaCreationFlag = 1 सदस्य फ़ोल्डर सक्षम करने के लिए पर्याप्त नहीं है।

यह plone.app.controlpanel.security में SecurityControlPanelAdapterकरके सक्षम करना होगा

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

अंत में सदस्य फ़ोल्डर उपयोगकर्ता लॉगिन पर बनाए जाते हैं, लेकिन plone.app में लॉगिन सहायक फ़ंक्शन इस के लिए सबसे कम स्तर लग रहा है। 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() 

पुhew।

0

self.assert_ एक परीक्षण विधि नहीं है, self.assertTrue, या self.assertIsNotNone जैसे कुछ का उपयोग करें।

सदस्यों के फ़ोल्डरों को जोड़ने के लिए बस सदस्य फ़ोल्डर निर्माण चालू करें और एक नया उपयोगकर्ता जोड़ें।

+0

निर्माण ध्वज सेट करना पर्याप्त नहीं है। मैंने अपना प्रश्न अपडेट कर लिया है। – Epeli

+0

@Epeli: जैसा कि मैट ने कहा, आपको भी एक नया उपयोगकर्ता जोड़ने की जरूरत है। –

+0

मैं इसे जोड़ता हूं। कृपया अद्यतन प्रश्न देखें। – Epeli

0

कुछ की तरह

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