Commit 326e0463 authored by Łukasz Nowak's avatar Łukasz Nowak

Add Computer Model security configuration.

parent d3964abe
<local_roles_item>
<local_roles>
<role id='R-MEMBER'>
<item>Auditor</item>
<item>Author</item>
</role>
<role id='zope'>
<item>Owner</item>
</role>
</local_roles>
</local_roles_item>
\ No newline at end of file
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
<portal_type id="Computer"> <portal_type id="Computer">
<item>source_administration</item> <item>source_administration</item>
</portal_type> </portal_type>
<portal_type id="Computer Model">
<item>source_administration</item>
</portal_type>
<portal_type id="Computer Network"> <portal_type id="Computer Network">
<item>source_administration</item> <item>source_administration</item>
</portal_type> </portal_type>
......
<type_roles>
<role id='Auditor; Author'>
<property id='title'>Member</property>
<multi_property id='category'>role/member</multi_property>
<multi_property id='base_category'>role</multi_property>
</role>
</type_roles>
\ No newline at end of file
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
<type>Computer</type> <type>Computer</type>
<workflow>local_permission_vifib_interaction_workflow</workflow> <workflow>local_permission_vifib_interaction_workflow</workflow>
</chain> </chain>
<chain>
<type>Computer Model</type>
<workflow>local_permission_vifib_interaction_workflow</workflow>
</chain>
<chain> <chain>
<type>Computer Network</type> <type>Computer Network</type>
<workflow>local_permission_vifib_interaction_workflow</workflow> <workflow>local_permission_vifib_interaction_workflow</workflow>
......
# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved.
import unittest
from Products.Vifib.tests.testVifibSlapWebService import \
TestVifibSlapWebServiceMixin
READ = 'Access contents information'
VIEW = 'View'
ADD = 'Add portal content'
WRITE = 'Modify portal content'
OTHER_AUDITOR = [
'Access Transient Objects',
'Access session data',
'Copy or Move',
'List folder contents',
'View History'
]
OTHER_AUTHOR = [
'Add portal folders',
]
class TestVifibComputerModelSecurity(TestVifibSlapWebServiceMixin):
def generateNewId(self):
return self.getPortalObject().portal_ids.generateNewId(
id_group=('slapos_core_test'))
def getTitle(self):
return "Test Vifib Computer Model Security"
def createMemberUser(self):
portal = self.getPortalObject()
new_id = self.generateNewId()
# Clone person document
person_user = portal.person_module.template_member.\
Base_createCloneDocument(batch_mode=1)
person_user.edit(
title="live_test_%s" % new_id,
reference="live_test_%s" % new_id,
default_email_text="live_test_%s@example.org" % new_id,
)
person_user.validate()
for assignment in person_user.contentValues(portal_type="Assignment"):
assignment.open()
return person_user
def afterSetUp(self):
pass
def beforeTearDown(self):
pass
def _getLocalRoles(self, context):
return [x[0] for x in context.get_local_roles()]
def _permissionsOfRole(self, context, role):
return [x['name'] for x in context.permissionsOfRole(role) \
if x['selected'] == 'SELECTED']
def assertPermissionsOfRole(self, context, role, permission_list):
self.assertSameSet(
permission_list,
self._permissionsOfRole(context, role))
def assertSecurityGroup(self, context, security_group_list, acquired):
self.assertEquals(acquired, context._getAcquireLocalRoles())
self.assertSameSet(
security_group_list,
self._getLocalRoles(context)
)
def assertRoles(self, context, security_group, role_list):
self.assertSameSet(
role_list,
context.get_local_roles_for_userid(security_group)
)
def test_ComputerModelModuleLocalRoles(self):
module = self.portal.computer_model_module
self.assertSecurityGroup(module, ['R-MEMBER', 'zope'], False)
self.assertRoles(module, 'R-MEMBER', ['Author', 'Auditor'])
self.assertRoles(module, 'zope', ['Owner'])
def test_ComputerModelModulePermissions(self):
module = self.portal.computer_model_module
self.assertPermissionsOfRole(module, 'Owner', [])
self.assertPermissionsOfRole(module, 'Auditor',
[READ, VIEW] + OTHER_AUDITOR)
self.assertPermissionsOfRole(module, 'Author',
[READ, ADD] + OTHER_AUDITOR + OTHER_AUTHOR)
def test_ComputerModelLocalRoles(self):
module = self.portal.computer_model_module
Model = module.newContent(portal_type="Computer Model")
self.assertSecurityGroup(Model, ['ERP5TypeTestCase', 'G-COMPANY'], False)
self.assertRoles(Model, 'ERP5TypeTestCase', ['Owner'])
self.assertRoles(Model, 'G-COMPANY', ['Assignor'])
# Setting source administration give person the assignee role
person = self.createMemberUser()
Model.edit(source_administration_value=person)
self.assertSecurityGroup(Model,
['ERP5TypeTestCase', 'G-COMPANY', person.getReference()], False)
self.assertRoles(Model, person.getReference(), ['Assignee'])
def test_ComputerModelPermission(self):
module = self.portal.computer_model_module
Model = module.newContent(portal_type="Computer Model")
# Check draft state
self.assertEquals('draft', Model.getValidationState())
self.assertPermissionsOfRole(Model, 'Owner',
[READ, VIEW, ADD, WRITE])
self.assertPermissionsOfRole(Model, 'Assignor',
[READ, VIEW, ADD, WRITE])
self.assertPermissionsOfRole(Model, 'Assignee',
[READ, VIEW, ADD, WRITE])
# Check validated state
Model.validate()
self.assertEquals('validated', Model.getValidationState())
self.assertPermissionsOfRole(Model, 'Owner', [])
self.assertPermissionsOfRole(Model, 'Assignor',
[READ, VIEW, ADD, WRITE])
self.assertPermissionsOfRole(Model, 'Assignee',
[READ, VIEW, ADD, WRITE])
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestVifibComputerModelSecurity))
return suite
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
<value> <value>
<list> <list>
<string>Computer</string> <string>Computer</string>
<string>Computer Model</string>
<string>Computer Network</string> <string>Computer Network</string>
<string>Internal Packing List</string> <string>Internal Packing List</string>
<string>Purchase Packing List</string> <string>Purchase Packing List</string>
......
460 461
\ No newline at end of file \ No newline at end of file
...@@ -16,6 +16,7 @@ business_process_module/vifib_purchase_business_process ...@@ -16,6 +16,7 @@ business_process_module/vifib_purchase_business_process
business_process_module/vifib_sale_business_process business_process_module/vifib_sale_business_process
campaign_module campaign_module
component_module component_module
computer_model_module
computer_module computer_module
computer_network_module computer_network_module
credential_update_module credential_update_module
......
...@@ -4,7 +4,6 @@ account_module/capital ...@@ -4,7 +4,6 @@ account_module/capital
account_module/coll_vat account_module/coll_vat
account_module/equipments account_module/equipments
account_module/inventories account_module/inventories
computer_network_module
account_module/payable account_module/payable
account_module/profit_loss account_module/profit_loss
account_module/purchase account_module/purchase
...@@ -17,7 +16,9 @@ business_process_module/vifib_purchase_business_process ...@@ -17,7 +16,9 @@ business_process_module/vifib_purchase_business_process
business_process_module/vifib_sale_business_process business_process_module/vifib_sale_business_process
campaign_module campaign_module
component_module component_module
computer_model_module
computer_module computer_module
computer_network_module
credential_update_module credential_update_module
currency_module currency_module
currency_module/EUR currency_module/EUR
......
Computer Model | source_administration
Computer Network | source_administration Computer Network | source_administration
Computer | source_administration Computer | source_administration
\ No newline at end of file
...@@ -15,6 +15,8 @@ Cash Register ...@@ -15,6 +15,8 @@ Cash Register
Component Component
Component Module Component Module
Computer Computer
Computer Model Module
Computer Module
Computer Module Computer Module
Computer Network Computer Network
Computer Network Module Computer Network Module
......
Account Account
Account Module Account Module
Computer Network
Computer Network Module
Accounting Period Accounting Period
Accounting Transaction Accounting Transaction
Accounting Transaction Module Accounting Transaction Module
...@@ -18,6 +16,10 @@ Component ...@@ -18,6 +16,10 @@ Component
Component Module Component Module
Computer Computer
Computer Module Computer Module
Computer Module
Computer Model Module
Computer Network
Computer Network Module
Computer Partition Computer Partition
Contribution Tool Contribution Tool
Credential Update Module Credential Update Module
......
Computer Model | local_permission_vifib_interaction_workflow
Computer Network | local_permission_vifib_interaction_workflow Computer Network | local_permission_vifib_interaction_workflow
Computer | local_permission_vifib_interaction_workflow Computer | local_permission_vifib_interaction_workflow
Hosting Subscription | local_permission_vifib_interaction_workflow Hosting Subscription | local_permission_vifib_interaction_workflow
......
...@@ -5,5 +5,6 @@ testVifibUserAdmin ...@@ -5,5 +5,6 @@ testVifibUserAdmin
testVifibUserCustomer testVifibUserCustomer
testVifibUserDeveloper testVifibUserDeveloper
testVifibComputerNetworkSecurity testVifibComputerNetworkSecurity
testVifibComputerModelSecurity
testVifibConstraint testVifibConstraint
testVifibPayZen testVifibPayZen
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment