コード例 #1
0
    def test_user_name(self):
        # Some upper and lower case issues.
        member = self._createType(self.layer['portal'],
                                  'dexterity.membrane.member', 'joe')
        member.email = '*****@*****.**'
        member.password = '******'
        member.confirm_password = '******'
        membrane = getToolByName(self.layer['portal'], 'membrane_tool')
        membrane.reindexObject(member)

        # Uppercase:
        user_id = get_user_id_for_email(self.layer['portal'],
                                        '*****@*****.**')
        self.assertFalse(user_id)

        # Lowercase:
        user_id = get_user_id_for_email(self.layer['portal'],
                                        '*****@*****.**')
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.layer['portal'],
                                        '*****@*****.**')
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.layer['portal'],
                                        '*****@*****.**')
        self.assertTrue(user_id)

        # Real authentication is pickier on the case unfortunately.
        aclu = self.layer['portal'].acl_users
        auth = aclu.membrane_users.authenticateCredentials
        credentials = {'login': '******', 'password': '******'}
        # First the member needs to be enabled before authentication
        # can succeed.
        self.assertEqual(auth(credentials), None)
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(member, 'approve')
        logout()
        self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        # It would be nice if we could get the next test to pass by
        # setting self.layer['portal'].membrane_tool.case_sensitive_auth to
        # False, but this does not work as advertised.
        # credentials = {'login': '******', 'password': '******'}
        # self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        # Sanity check:
        credentials = {'login': '******', 'password': '******'}
        self.assertEqual(auth(credentials), None)
コード例 #2
0
ファイル: test_member.py プロジェクト: adam139/devplone422
    def test_user_name(self):
        # Some upper and lower case issues.
        member = self._createType(
            self.portal, 'dexterity.membrane.member', 'joe')
        member.email = '*****@*****.**'
        member.password = '******'
        member.confirm_password = '******'
        membrane = getToolByName(self.portal, 'membrane_tool')
        membrane.reindexObject(member)

        # Uppercase:
        user_id = get_user_id_for_email(self.portal, '*****@*****.**')
        self.assertFalse(user_id)

        # Lowercase:
        user_id = get_user_id_for_email(self.portal, '*****@*****.**')
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.portal, '*****@*****.**')
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.portal, '*****@*****.**')
        self.assertTrue(user_id)

        # Real authentication is pickier on the case unfortunately.
        auth = self.portal.acl_users.membrane_users.authenticateCredentials
        credentials = {'login': '******', 'password': '******'}
        # First the member needs to be enabled before authentication
        # can succeed.
        self.assertEqual(auth(credentials), None)
# pending status may login
#        self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))        
        wf_tool = getToolByName(self.portal, 'portal_workflow')
        self.setRoles(['Reviewer'])
        wf_tool.doActionFor(member, 'enable')
        self.setRoles([])
#        self.assertEqual(auth(credentials), None)        
        self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        # It would be nice if we could get the next test to pass by
        # setting self.portal.membrane_tool.case_sensitive_auth to
        # False, but this does not work as advertised.
        #credentials = {'login': '******', 'password': '******'}
        #self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        # Sanity check:
        credentials = {'login': '******', 'password': '******'}
        self.assertEqual(auth(credentials), None)
コード例 #3
0
ファイル: test_dexmember.py プロジェクト: adam139/emc.policy
    def test_user_name(self):
        # Some upper and lower case issues.
        member = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "joe")
        member.email = "*****@*****.**"
        member.password = "******"
        member.confirm_password = "******"
        membrane = getToolByName(self.layer["portal"], "membrane_tool")
        membrane.reindexObject(member)

        # Uppercase:
        user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        self.assertFalse(user_id)

        # Lowercase:
        user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        self.assertFalse(user_id)

        # Mixed case:
        user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        self.assertTrue(user_id)

        # Real authentication is pickier on the case unfortunately.
        aclu = self.layer["portal"].acl_users
        auth = aclu.membrane_users.authenticateCredentials
        credentials = {"login": "******", "password": "******"}
        # First the member needs to be enabled before authentication
        # can succeed.
        self.assertEqual(auth(credentials), None)
        wf_tool = getToolByName(self.layer["portal"], "portal_workflow")
        login(self.layer["portal"], TEST_USER_NAME)
        setRoles(self.layer["portal"], TEST_USER_ID, ["Reviewer"])
        wf_tool.doActionFor(member, "approve")
        logout()
        self.assertEqual(auth(credentials), (user_id, "*****@*****.**"))

        # It would be nice if we could get the next test to pass by
        # setting self.layer['portal'].membrane_tool.case_sensitive_auth to
        # False, but this does not work as advertised.
        # credentials = {'login': '******', 'password': '******'}
        # self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        # Sanity check:
        credentials = {"login": "******", "password": "******"}
        self.assertEqual(auth(credentials), None)
コード例 #4
0
 def test_member_properties(self):
     # Some properties from portal_memberdate can be queried from
     # the member content item.
     member = self._createType(
         self.layer['portal'],
         'dexterity.membrane.member',
         'joe'
     )
     member.first_name = 'Joe'
     member.last_name = 'User'
     member.email = '*****@*****.**'
     member.homepage = 'http://example.org/'
     member.bio = u'I am Joe.  I want to set a good example.'
     membrane = getToolByName(self.layer['portal'], 'membrane_tool')
     membrane.reindexObject(member)
     # Currently the user_id is an intid, so we need to query for
     # that by email/login name:
     user_id = get_user_id_for_email(
         self.layer['portal'],
         '*****@*****.**'
     )
     self.assertTrue(user_id)
     memship = getToolByName(self.layer['portal'], 'portal_membership')
     user = memship.getMemberById(user_id)
     self.failUnless(user)
     self.assertEqual(user.getProperty('fullname'), 'Joe User')
     self.assertEqual(user.getProperty('email'), '*****@*****.**')
     self.assertEqual(user.getProperty('home_page'), 'http://example.org/')
     self.assertEqual(user.getProperty('description'),
                      u'I am Joe.  I want to set a good example.')
コード例 #5
0
ファイル: test_dexmember.py プロジェクト: adam139/emc.policy
    def test_local_roles_are_configurable(self):
        membrane = getToolByName(self.layer["portal"], "membrane_tool")
        memship = getToolByName(self.layer["portal"], "portal_membership")
        # Create joe, approve him, and get him indexed with membrane
        joe = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "joe")
        joe.email = "*****@*****.**"
        wf_tool = getToolByName(self.layer["portal"], "portal_workflow")
        login(self.layer["portal"], TEST_USER_NAME)
        setRoles(self.layer["portal"], TEST_USER_ID, ["Reviewer"])
        wf_tool.doActionFor(joe, "approve")

        membrane.reindexObject(joe)
        joe_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        joe_member = memship.getMemberById(joe_id)
        # Test default roles:
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer["portal"].joe)),
            ["Authenticated", u"Creator", u"Editor", u"Reader", "Social Organization"],
        )
        # Adjust the registry setting
        from zope.component import getUtility
        from plone.registry.interfaces import IRegistry
        from dexterity.membrane.behavior import settings

        reg = getUtility(IRegistry)
        config = reg.forInterface(settings.IDexterityMembraneSettings, False)
        config.local_roles = set([u"Reader"])
        # Roles should now be trimmed down
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer["portal"].joe)),
            ["Authenticated", "Reader", "Social Organization"],
        )
        logout()
コード例 #6
0
    def test_local_roles_are_configurable(self):
        membrane = getToolByName(self.layer['portal'], 'membrane_tool')
        memship = getToolByName(self.layer['portal'], 'portal_membership')
        # Create joe, approve him, and get him indexed with membrane
        joe = self._createType(self.layer['portal'],
                               'dexterity.membrane.member', 'joe')
        joe.email = '*****@*****.**'
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(joe, 'approve')

        membrane.reindexObject(joe)
        joe_id = get_user_id_for_email(self.layer['portal'], '*****@*****.**')
        joe_member = memship.getMemberById(joe_id)
        # Test default roles:
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated', 'Creator', 'Editor', 'Reader'])
        # Adjust the registry setting
        from zope.component import getUtility
        from plone.registry.interfaces import IRegistry
        from dexterity.membrane.behavior import settings
        reg = getUtility(IRegistry)
        config = reg.forInterface(settings.IDexterityMembraneSettings, False)
        config.local_roles = set([u'Reader'])
        # Roles should now be trimmed down
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated', 'Reader'])
        logout()
コード例 #7
0
 def test_member_properties(self):
     # Some properties from portal_memberdata can be queried from
     # the member content item.
     member = self._createType(self.layer['portal'],
                               'dexterity.membrane.member', 'joe')
     member.first_name = 'Joe'
     member.last_name = 'User'
     member.email = '*****@*****.**'
     member.homepage = 'http://example.org/'
     member.bio = u'I am Joe.  I want to set a good example.'
     membrane = getToolByName(self.layer['portal'], 'membrane_tool')
     membrane.reindexObject(member)
     # Currently the user_id is an intid, so we need to query for
     # that by email/login name:
     user_id = get_user_id_for_email(self.layer['portal'],
                                     '*****@*****.**')
     self.assertTrue(user_id)
     memship = getToolByName(self.layer['portal'], 'portal_membership')
     user = memship.getMemberById(user_id)
     self.failUnless(user)
     self.assertEqual(user.getProperty('fullname'), 'Joe User')
     self.assertEqual(user.getProperty('email'), '*****@*****.**')
     self.assertEqual(user.getProperty('home_page'), 'http://example.org/')
     self.assertEqual(user.getProperty('description'),
                      u'I am Joe.  I want to set a good example.')
コード例 #8
0
ファイル: test_dexmember.py プロジェクト: adam139/emc.policy
    def test_reset_password(self):
        member = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "joe")
        member.email = "*****@*****.**"
        self.layer["portal"].membrane_tool.reindexObject(member)
        user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
        self.layer["portal"].acl_users.userSetPassword(user_id, "foobar")
        from AccessControl.AuthEncoding import pw_validate

        self.assertTrue(pw_validate(member.password, "foobar"))
コード例 #9
0
ファイル: test_member.py プロジェクト: adam139/devplone422
 def test_reset_password(self):
     member = self._createType(
         self.portal, 'dexterity.membrane.member', 'joe')
     member.email = '*****@*****.**'
     self.portal.membrane_tool.reindexObject(member)
     user_id = get_user_id_for_email(self.portal, '*****@*****.**')
     self.portal.acl_users.userSetPassword(user_id, 'foobar')
     from AccessControl.AuthEncoding import pw_validate
     self.assertTrue(pw_validate(member.password, 'foobar'))
コード例 #10
0
 def test_reset_password(self):
     member = self._createType(self.portal, 'dexterity.membrane.member',
                               'joe')
     member.email = '*****@*****.**'
     self.portal.membrane_tool.reindexObject(member)
     user_id = get_user_id_for_email(self.portal, '*****@*****.**')
     self.portal.acl_users.userSetPassword(user_id, 'foobar')
     from AccessControl.AuthEncoding import pw_validate
     self.assertTrue(pw_validate(member.password, 'foobar'))
コード例 #11
0
ファイル: test_workflow.py プロジェクト: adam139/emc.policy
    def test_permission_workflow(self):
        app = self.layer['app']
        portal = self.layer['portal']
        wf = getToolByName(portal, 'portal_workflow')


        org = portal['orgnizationfolder1']['orgnization1']
        
        wts = wf.organization_anual_survey_workflow
        survey = org['orgnizationsurvey1']
        wts.notifyCreated(survey)     
               

        wt = wf.dexterity_membrane_workflow
        dummy = portal['memberfolder1']['member1']
        wf.notifyCreated(dummy)
        dummy.email = '*****@*****.**'
        dummy.password = '******'
        dummy.confirm_password = '******'
        membrane = getToolByName(portal, 'membrane_tool')
        membrane.reindexObject(dummy)

        # Uppercase:
        user_id = get_user_id_for_email(portal,'*****@*****.**')                
        aclu = getToolByName(portal, 'acl_users')
        auth = aclu.membrane_users.authenticateCredentials
        credentials = {'login': '******', 'password': '******'}
        # First the member needs to be enabled before authentication
        # can succeed.
        self.assertEqual(auth(credentials), None)
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(dummy, 'approve')
        logout()

        self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))        

        memship = getToolByName(portal, 'portal_membership')
        joe_member = memship.getMemberById(user_id)
        self.assertTrue(joe_member)

        # At first, no one gets an extra local role, because the
        # members are not enabled.
        # Test roles of fresh joe:

        self.assertEqual(
            joe_member.getRolesInContext(self.layer['portal']),
            ['Social Organization', 'Authenticated']
        )

        self.assertEqual(sorted(joe_member.getRolesInContext(dummy)),
        ['Authenticated', u'Creator', u'Editor', u'Reader', 'Social Organization'])
コード例 #12
0
 def test_reset_password(self):
     from AccessControl import AuthEncoding
     member = self._createType(self.layer['portal'],
                               'dexterity.membrane.member', 'joe')
     member.email = '*****@*****.**'
     self.layer['portal'].membrane_tool.reindexObject(member)
     user_id = get_user_id_for_email(self.layer['portal'],
                                     '*****@*****.**')
     self.layer['portal'].acl_users.userSetPassword(user_id, b'foobar')
     self.assertTrue(AuthEncoding.is_encrypted(member.password))
     scheme_prefix = '{BCRYPT}'
     self.assertTrue(member.password.startswith(scheme_prefix))
     self.assertTrue(AuthEncoding.pw_validate(member.password, b'foobar'))
コード例 #13
0
    def test_permission_workflow(self):
        app = self.layer['app']
        portal = self.layer['portal']
        wf = getToolByName(portal, 'portal_workflow')

        org = portal['orgnizationfolder1']['orgnization1']

        wts = wf.organization_anual_survey_workflow
        survey = org['orgnizationsurvey1']
        wts.notifyCreated(survey)

        wt = wf.dexterity_membrane_workflow
        dummy = portal['memberfolder1']['member1']
        wf.notifyCreated(dummy)
        dummy.email = '*****@*****.**'
        dummy.password = '******'
        dummy.confirm_password = '******'
        membrane = getToolByName(portal, 'membrane_tool')
        membrane.reindexObject(dummy)

        # Uppercase:
        user_id = get_user_id_for_email(portal, '*****@*****.**')
        aclu = getToolByName(portal, 'acl_users')
        auth = aclu.membrane_users.authenticateCredentials
        credentials = {'login': '******', 'password': '******'}
        # First the member needs to be enabled before authentication
        # can succeed.
        self.assertEqual(auth(credentials), None)
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(dummy, 'approve')
        logout()

        self.assertEqual(auth(credentials), (user_id, '*****@*****.**'))

        memship = getToolByName(portal, 'portal_membership')
        joe_member = memship.getMemberById(user_id)
        self.assertTrue(joe_member)

        # At first, no one gets an extra local role, because the
        # members are not enabled.
        # Test roles of fresh joe:

        self.assertEqual(joe_member.getRolesInContext(self.layer['portal']),
                         ['Social Organization', 'Authenticated'])

        self.assertEqual(sorted(joe_member.getRolesInContext(dummy)), [
            'Authenticated', u'Creator', u'Editor', u'Reader',
            'Social Organization'
        ])
コード例 #14
0
 def test_reset_password(self):
     from AccessControl import AuthEncoding
     member = self._createType(
         self.layer['portal'],
         'dexterity.membrane.member',
         'joe',
     )
     member.email = '*****@*****.**'
     self.layer['portal'].membrane_tool.reindexObject(member)
     user_id = get_user_id_for_email(
         self.layer['portal'],
         '*****@*****.**',
     )
     self.layer['portal'].acl_users.userSetPassword(user_id, b'foobar')
     self.assertTrue(AuthEncoding.is_encrypted(member.password))
     scheme_prefix = '{BCRYPT}'
     self.assertTrue(member.password.startswith(scheme_prefix))
     self.assertTrue(AuthEncoding.pw_validate(member.password, b'foobar'))
コード例 #15
0
ファイル: test_dexmember.py プロジェクト: adam139/emc.policy
 def test_member_properties(self):
     # Some properties from portal_memberdate can be queried from
     # the member content item.
     member = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "joe")
     member.first_name = "Joe"
     member.last_name = "User"
     member.email = "*****@*****.**"
     member.homepage = "http://example.org/"
     member.bio = u"I am Joe.  I want to set a good example."
     membrane = getToolByName(self.layer["portal"], "membrane_tool")
     membrane.reindexObject(member)
     # Currently the user_id is an intid, so we need to query for
     # that by email/login name:
     user_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
     self.assertTrue(user_id)
     memship = getToolByName(self.layer["portal"], "portal_membership")
     user = memship.getMemberById(user_id)
     self.failUnless(user)
     self.assertEqual(user.getProperty("fullname"), "Joe User")
     self.assertEqual(user.getProperty("email"), "*****@*****.**")
     self.assertEqual(user.getProperty("home_page"), "http://example.org/")
     self.assertEqual(user.getProperty("description"), u"I am Joe.  I want to set a good example.")
コード例 #16
0
    def test_local_roles_are_configurable(self):
        membrane = getToolByName(self.layer['portal'], 'membrane_tool')
        memship = getToolByName(self.layer['portal'], 'portal_membership')
        # Create joe, approve him, and get him indexed with membrane
        joe = self._createType(
            self.layer['portal'],
            'dexterity.membrane.member',
            'joe'
        )
        joe.email = '*****@*****.**'
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(joe, 'approve')

        membrane.reindexObject(joe)
        joe_id = get_user_id_for_email(self.layer['portal'], '*****@*****.**')
        joe_member = memship.getMemberById(joe_id)
        # Test default roles:
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated', 'Creator', 'Editor', 'Reader']
        )
        # Adjust the registry setting
        from zope.component import getUtility
        from plone.registry.interfaces import IRegistry
        from dexterity.membrane.behavior import settings
        reg = getUtility(IRegistry)
        config = reg.forInterface(settings.IDexterityMembraneSettings, False)
        config.local_roles = set([u'Reader'])
        # Roles should now be trimmed down
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated', 'Reader']
        )
        logout()
コード例 #17
0
ファイル: test_dexmember.py プロジェクト: adam139/emc.policy
 def test_default_local_roles(self):
     # Members get extra local roles on their own object.
     # Get tools:
     membrane = getToolByName(self.layer["portal"], "membrane_tool")
     memship = getToolByName(self.layer["portal"], "portal_membership")
     # Create joe:
     joe = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "joe")
     joe.email = "*****@*****.**"
     membrane.reindexObject(joe)
     joe_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
     self.assertTrue(joe_id)
     # Create bob:
     bob = self._createType(self.layer["portal"], "dexterity.membrane.organizationmember", "bob")
     bob.email = "*****@*****.**"
     membrane.reindexObject(bob)
     bob_id = get_user_id_for_email(self.layer["portal"], "*****@*****.**")
     self.assertTrue(bob_id)
     # Get members:
     joe_member = memship.getMemberById(joe_id)
     self.assertTrue(joe_member)
     bob_member = memship.getMemberById(bob_id)
     self.assertTrue(bob_member)
     # At first, no one gets an extra local role, because the
     # members are not enabled.
     # Test roles of fresh joe:
     self.assertEqual(joe_member.getRolesInContext(self.layer["portal"]), ["Social Organization", "Authenticated"])
     self.assertEqual(
         joe_member.getRolesInContext(self.layer["portal"].bob), ["Social Organization", "Authenticated"]
     )
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer["portal"].joe)), ["Authenticated", "Social Organization"]
     )
     # Test roles of fresh bob:
     self.assertEqual(bob_member.getRolesInContext(self.layer["portal"]), ["Social Organization", "Authenticated"])
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer["portal"].bob)), ["Authenticated", "Social Organization"]
     )
     self.assertEqual(
         bob_member.getRolesInContext(self.layer["portal"].joe), ["Social Organization", "Authenticated"]
     )
     # We enable/approve both members now.
     wf_tool = getToolByName(self.layer["portal"], "portal_workflow")
     login(self.layer["portal"], TEST_USER_NAME)
     setRoles(self.layer["portal"], TEST_USER_ID, ["Reviewer"])
     wf_tool.doActionFor(joe, "approve")
     wf_tool.doActionFor(bob, "approve")
     # Do some reindexing for good measure (alternatively: fire
     # some events).
     # membrane.reindexObject(joe)
     # membrane.reindexObject(bob)
     # Test roles of enabled joe:
     self.assertEqual(joe_member.getRolesInContext(self.layer["portal"]), ["Social Organization", "Authenticated"])
     self.assertEqual(
         joe_member.getRolesInContext(self.layer["portal"].bob), ["Social Organization", "Authenticated"]
     )
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer["portal"].joe)),
         ["Authenticated", "Creator", "Editor", "Reader", "Social Organization"],
     )
     # Test roles of enabled bob:
     self.assertEqual(bob_member.getRolesInContext(self.layer["portal"]), ["Social Organization", "Authenticated"])
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer["portal"].bob)),
         ["Authenticated", "Creator", "Editor", "Reader", "Social Organization"],
     )
     self.assertEqual(
         bob_member.getRolesInContext(self.layer["portal"].joe), ["Social Organization", "Authenticated"]
     )
     # Now disable both members:
     wf_tool.doActionFor(joe, "disable")
     wf_tool.doActionFor(bob, "disable")
     # Test the most important roles again:
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer["portal"].joe)), ["Authenticated", "Social Organization"]
     )
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer["portal"].bob)), ["Authenticated", "Social Organization"]
     )
     logout()
コード例 #18
0
    def test_default_local_roles(self):
        # Members get extra local roles on their own object.
        # Get tools:
        membrane = getToolByName(self.layer['portal'], 'membrane_tool')
        memship = getToolByName(self.layer['portal'], 'portal_membership')
        # Create joe:
        joe = self._createType(self.layer['portal'],
                               'dexterity.membrane.member', 'joe')
        joe.email = '*****@*****.**'
        membrane.reindexObject(joe)
        joe_id = get_user_id_for_email(self.layer['portal'], '*****@*****.**')
        self.assertTrue(joe_id)
        # Create bob:
        bob = self._createType(self.layer['portal'],
                               'dexterity.membrane.member', 'bob')
        bob.email = '*****@*****.**'
        membrane.reindexObject(bob)
        bob_id = get_user_id_for_email(self.layer['portal'], '*****@*****.**')
        self.assertTrue(bob_id)
        # Get members:
        joe_member = memship.getMemberById(joe_id)
        self.assertTrue(joe_member)
        bob_member = memship.getMemberById(bob_id)
        self.assertTrue(bob_member)
        # At first, no one gets an extra local role, because the
        # members are not enabled.
        # Test roles of fresh joe:
        self.assertEqual(joe_member.getRolesInContext(self.layer['portal']),
                         ['Authenticated'])
        self.assertEqual(
            joe_member.getRolesInContext(self.layer['portal'].bob),
            ['Authenticated'])
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated'])
        # Test roles of fresh bob:
        self.assertEqual(bob_member.getRolesInContext(self.layer['portal']),
                         ['Authenticated'])
        self.assertEqual(
            sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
            ['Authenticated'])
        self.assertEqual(
            bob_member.getRolesInContext(self.layer['portal'].joe),
            ['Authenticated'])
        # We enable/approve both members now.
        wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
        login(self.layer['portal'], TEST_USER_NAME)
        setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
        wf_tool.doActionFor(joe, 'approve')
        wf_tool.doActionFor(bob, 'approve')

        # Test roles of enabled joe:
        self.assertEqual(joe_member.getRolesInContext(self.layer['portal']),
                         ['Authenticated'])
        self.assertEqual(
            joe_member.getRolesInContext(self.layer['portal'].bob),
            ['Authenticated'])
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated', 'Creator', 'Editor', 'Reader'])
        # Test roles of enabled bob:
        self.assertEqual(bob_member.getRolesInContext(self.layer['portal']),
                         ['Authenticated'])
        self.assertEqual(
            sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
            ['Authenticated', 'Creator', 'Editor', 'Reader'])
        self.assertEqual(
            bob_member.getRolesInContext(self.layer['portal'].joe),
            ['Authenticated'])
        # Now disable both members:
        wf_tool.doActionFor(joe, 'disable')
        wf_tool.doActionFor(bob, 'disable')
        # Test the most important roles again:
        self.assertEqual(
            sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
            ['Authenticated'])
        self.assertEqual(
            sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
            ['Authenticated'])
        logout()
コード例 #19
0
 def test_default_local_roles(self):
     # Members get extra local roles on their own object.
     # Get tools:
     membrane = getToolByName(self.layer['portal'], 'membrane_tool')
     memship = getToolByName(self.layer['portal'], 'portal_membership')
     # Create joe:
     joe = self._createType(
         self.layer['portal'],
         'dexterity.membrane.member',
         'joe'
     )
     joe.email = '*****@*****.**'
     membrane.reindexObject(joe)
     joe_id = get_user_id_for_email(
         self.layer['portal'],
         '*****@*****.**'
     )
     self.assertTrue(joe_id)
     # Create bob:
     bob = self._createType(
         self.layer['portal'],
         'dexterity.membrane.member',
         'bob'
     )
     bob.email = '*****@*****.**'
     membrane.reindexObject(bob)
     bob_id = get_user_id_for_email(self.layer['portal'], '*****@*****.**')
     self.assertTrue(bob_id)
     # Get members:
     joe_member = memship.getMemberById(joe_id)
     self.assertTrue(joe_member)
     bob_member = memship.getMemberById(bob_id)
     self.assertTrue(bob_member)
     # At first, no one gets an extra local role, because the
     # members are not enabled.
     # Test roles of fresh joe:
     self.assertEqual(
         joe_member.getRolesInContext(self.layer['portal']),
         ['Authenticated']
     )
     self.assertEqual(
         joe_member.getRolesInContext(self.layer['portal'].bob),
         ['Authenticated']
     )
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
         ['Authenticated']
     )
     # Test roles of fresh bob:
     self.assertEqual(
         bob_member.getRolesInContext(self.layer['portal']),
         ['Authenticated']
     )
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
         ['Authenticated']
     )
     self.assertEqual(
         bob_member.getRolesInContext(self.layer['portal'].joe),
         ['Authenticated']
     )
     # We enable/approve both members now.
     wf_tool = getToolByName(self.layer['portal'], 'portal_workflow')
     login(self.layer['portal'], TEST_USER_NAME)
     setRoles(self.layer['portal'], TEST_USER_ID, ['Reviewer'])
     wf_tool.doActionFor(joe, 'approve')
     wf_tool.doActionFor(bob, 'approve')
     # Do some reindexing for good measure (alternatively: fire
     # some events).
     #membrane.reindexObject(joe)
     #membrane.reindexObject(bob)
     # Test roles of enabled joe:
     self.assertEqual(
         joe_member.getRolesInContext(self.layer['portal']),
         ['Authenticated']
     )
     self.assertEqual(
         joe_member.getRolesInContext(self.layer['portal'].bob),
         ['Authenticated']
     )
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
         ['Authenticated', 'Creator', 'Editor', 'Reader']
     )
     # Test roles of enabled bob:
     self.assertEqual(
         bob_member.getRolesInContext(self.layer['portal']),
         ['Authenticated']
     )
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
         ['Authenticated', 'Creator', 'Editor', 'Reader']
     )
     self.assertEqual(
         bob_member.getRolesInContext(self.layer['portal'].joe),
         ['Authenticated']
     )
     # Now disable both members:
     wf_tool.doActionFor(joe, 'disable')
     wf_tool.doActionFor(bob, 'disable')
     # Test the most important roles again:
     self.assertEqual(
         sorted(joe_member.getRolesInContext(self.layer['portal'].joe)),
         ['Authenticated']
     )
     self.assertEqual(
         sorted(bob_member.getRolesInContext(self.layer['portal'].bob)),
         ['Authenticated']
     )
     logout()