Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ivan Tyagov
slapos.core
Commits
a7019be3
Commit
a7019be3
authored
Jun 17, 2011
by
Gabriel Monnerat
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into slave_instance
parents
15de0159
3f32cfa9
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
293 additions
and
171 deletions
+293
-171
master/bt5/erp5_configurator_vifib/SkinTemplateItem/portal_skins/erp5_configurator_vifib/BusinessConfiguration_afterVifibConfiguration.xml
...r_vifib/BusinessConfiguration_afterVifibConfiguration.xml
+0
-21
master/bt5/erp5_configurator_vifib/SkinTemplateItem/portal_skins/erp5_configurator_vifib/BusinessConfiguration_setupVifibStandardBT5.xml
...tor_vifib/BusinessConfiguration_setupVifibStandardBT5.xml
+3
-3
master/bt5/erp5_configurator_vifib/TestTemplateItem/testVifibConfigurationWorkflow.py
..._vifib/TestTemplateItem/testVifibConfigurationWorkflow.py
+170
-0
master/bt5/erp5_configurator_vifib/bt/revision
master/bt5/erp5_configurator_vifib/bt/revision
+1
-1
master/bt5/erp5_configurator_vifib/bt/template_test_id_list
master/bt5/erp5_configurator_vifib/bt/template_test_id_list
+1
-1
master/bt5/vifib_base/DocumentTemplateItem/Person.py
master/bt5/vifib_base/DocumentTemplateItem/Person.py
+16
-8
master/bt5/vifib_base/DocumentTemplateItem/SoftwareInstance.py
...r/bt5/vifib_base/DocumentTemplateItem/SoftwareInstance.py
+8
-9
master/bt5/vifib_credential/TestTemplateItem/testVifibCredential.py
.../vifib_credential/TestTemplateItem/testVifibCredential.py
+30
-93
master/bt5/vifib_credential/bt/revision
master/bt5/vifib_credential/bt/revision
+1
-1
master/product/Vifib/Tool/SlapTool.py
master/product/Vifib/Tool/SlapTool.py
+8
-9
master/product/Vifib/tests/testVifibSlapWebService.py
master/product/Vifib/tests/testVifibSlapWebService.py
+52
-13
setup.py
setup.py
+1
-1
slapos.cfg.example
slapos.cfg.example
+2
-1
slapos/slap/interface/slap.py
slapos/slap/interface/slap.py
+0
-10
No files found.
master/bt5/erp5_configurator_vifib/SkinTemplateItem/portal_skins/erp5_configurator_vifib/BusinessConfiguration_afterVifibConfiguration.xml
View file @
a7019be3
...
...
@@ -55,27 +55,6 @@ from AccessControl import getSecurityManager\n
from Products.ERP5Type.Log import log\n
\n
portal = context.getPortalObject()\n
bt = portal.portal_templates.getInstalledBusinessTemplate("erp5_demo_maxma_sample")\n
isTransitionPossible = portal.portal_workflow.isTransitionPossible\n
\n
for obj in portal.portal_catalog(path=["%%/%s" % i.replace("**", "%") for i in bt.getTemplatePathList()]):\n
obj.activate().updateLocalRolesOnSecurityGroups()\n
\n
for document in portal.portal_catalog(portal_type=bt.getTemplatePortalTypeRoleList()):\n
document.updateLocalRolesOnSecurityGroups()\n
\n
conversion_server_hostname = portal.portal_preferences.getPreferredOoodocServerAddress()\n
conversion_server_port = portal.portal_preferences.getPreferredOoodocServerPortNumber()\n
for preference_id in ["default_configurator_preference", "default_configurator_system_preference"]:\n
preference = getattr(portal.portal_preferences, preference_id)\n
if preference.getPortalType() == "System Preference":\n
preference.setPreferredOoodocServerPortNumber(conversion_server_port)\n
preference.setPreferredOoodocServerAddress(conversion_server_hostname)\n
\n
if isTransitionPossible(preference, "enable"):\n
preference.enable()\n
preference.updateLocalRolesOnSecurityGroups()\n
\n
for gadget in portal.portal_gadgets.objectValues():\n
if gadget.getValidationState() == \'invisible\':\n
gadget.visible()\n
...
...
master/bt5/erp5_configurator_vifib/SkinTemplateItem/portal_skins/erp5_configurator_vifib/BusinessConfiguration_setupVifibStandardBT5.xml
View file @
a7019be3
...
...
@@ -95,10 +95,10 @@ bt5_installation_list = ( \n
\'vifib_crm\', \n
\'vifib_forge_release\', \n
\'vifib_software_pdm\', \n
\'vifib_web\',
\n
\'vifib_web\',\n
\'vifib_open_trade\', \n
\'vifib_l10n_fr\'\n
\'vifib_datas\'\n
\'vifib_l10n_fr\'
,
\n
\'vifib_datas\'
,
\n
\'vifib_erp5\'\n
)\n
\n
...
...
master/bt5/erp5_configurator_vifib/TestTemplateItem/test
MaxmaDemo
ConfigurationWorkflow.py
→
master/bt5/erp5_configurator_vifib/TestTemplateItem/test
Vifib
ConfigurationWorkflow.py
View file @
a7019be3
...
...
@@ -29,42 +29,61 @@ from Products.ERP5Configurator.tests.ConfiguratorTestMixin import \
TestLiveConfiguratorWorkflowMixin
from
Products.ERP5Type.tests.Sequence
import
SequenceList
class
Test
MaxmaDemo
ConfiguratorWorkflow
(
TestLiveConfiguratorWorkflowMixin
):
class
Test
Vifib
ConfiguratorWorkflow
(
TestLiveConfiguratorWorkflowMixin
):
"""
Configurator Mixin Class
"""
# The list of standard business templates that the configurator should force
# to install
user_reference
=
"demo"
standard_bt5_list
=
(
'erp5_simulation'
,
'erp5_dhtml_style'
,
'erp5_jquery'
,
'erp5_jquery_ui'
,
'erp5_xhtml_jquery_style'
,
'erp5_ingestion_mysql_innodb_catalog'
,
'erp5_ingestion'
,
'erp5_web'
,
'erp5_dms'
,
'erp5_crm'
,
'erp5_pdm'
,
'erp5_trade'
,
'erp5_knowledge_pad'
,
'erp5_accounting'
,
'erp5_tax_resource'
,
'erp5_discount_resource'
,
'erp5_invoicing'
,
'erp5_configurator_standard_categories'
,
'erp5_trade_knowledge_pad'
,
'erp5_crm_knowledge_pad'
,
'erp5_simulation_test'
,
'erp5_simplified_invoicing'
,
'erp5_ods_style'
,
'erp5_odt_style'
,
'erp5_ooo_import'
,
'erp5_accounting_l10n_fr'
,
'erp5_l10n_fr'
,
'erp5_l10n_pt-BR'
,
'erp5_demo_maxma_rule'
)
standard_bt5_list
=
(
'erp5_simulation'
,
'erp5_administration'
,
'erp5_pdm'
,
'erp5_trade'
,
'erp5_simulation_test'
,
'erp5_item'
,
'erp5_open_trade'
,
'erp5_forge'
,
'erp5_ingestion_mysql_innodb_catalog'
,
'erp5_ingestion'
,
'erp5_crm'
,
'erp5_jquery'
,
'erp5_jquery_ui'
,
'erp5_knowledge_pad'
,
'erp5_web'
,
'erp5_dms'
,
'erp5_l10n_fr'
,
'erp5_content_translation'
,
'erp5_software_pdm'
,
'erp5_computer_immobilisation'
,
'erp5_accounting'
,
'erp5_accounting_l10n_fr'
,
'erp5_tax_resource'
,
'erp5_discount_resource'
,
'erp5_invoicing'
,
'erp5_ods_style'
,
'erp5_odt_style'
,
'erp5_ooo_import'
,
'erp5_simplified_invoicing'
,
'erp5_legacy_tax_system'
,
'erp5_commerce'
,
'erp5_project'
,
'erp5_credential'
,
'erp5_km'
,
'erp5_web_download_theme'
,
'vifib_mysql_innodb_catalog'
,
'vifib_core'
,
'vifib_base'
,
'vifib_slap'
,
'vifib_crm'
,
'vifib_forge_release'
,
'vifib_software_pdm'
,
'vifib_web'
,
'vifib_open_trade'
,
'vifib_l10n_fr'
,
'vifib_datas'
,
'vifib_erp5'
)
def
getBusinessTemplateList
(
self
):
return
(
'erp5_core_proxy_field_legacy'
,
...
...
@@ -72,7 +91,7 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
'erp5_base'
,
'erp5_workflow'
,
'erp5_configurator'
,
'erp5_configurator_
maxma_demo
'
,)
'erp5_configurator_
vifib
'
,)
def
stepCreateBusinessConfiguration
(
self
,
sequence
=
None
,
\
sequence_list
=
None
,
**
kw
):
...
...
@@ -80,7 +99,7 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
module
=
self
.
portal
.
business_configuration_module
business_configuration
=
module
.
newContent
(
portal_type
=
"Business Configuration"
,
title
=
'Test Configurator
Maxma Demo
Workflow'
)
title
=
'Test Configurator
Vifib
Workflow'
)
next_dict
=
{}
sequence
.
edit
(
business_configuration
=
business_configuration
,
next_dict
=
next_dict
)
...
...
@@ -94,44 +113,13 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
self
.
assertEquals
(
'show'
,
response_dict
[
'command'
])
self
.
assertEquals
(
'Install'
,
response_dict
[
'next'
])
def
stepSet
MaxmaDemo
Workflow
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
def
stepSet
Vifib
Workflow
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
""" Set Consulting Workflow into Business Configuration """
business_configuration
=
sequence
.
get
(
"business_configuration"
)
self
.
setBusinessConfigurationWorkflow
(
business_configuration
,
"workflow_module/
maxma_demo
_configuration_workflow"
)
"workflow_module/
vifib
_configuration_workflow"
)
def
stepViewCreatedPersons
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
login
(
user_name
=
'test_configurator_user'
)
person_list
=
self
.
portal
.
person_module
.
searchFolder
()
self
.
assertNotEquals
(
0
,
len
(
person_list
))
for
entity
in
person_list
:
for
username
in
self
.
all_username_list
:
self
.
failUnlessUserCanAccessDocument
(
username
,
entity
)
self
.
failUnlessUserCanViewDocument
(
username
,
entity
)
def
stepViewCreatedOrganisations
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
login
(
user_name
=
'test_configurator_user'
)
organisation_list
=
self
.
portal
.
organisation_module
.
searchFolder
()
self
.
assertNotEquals
(
0
,
len
(
organisation_list
))
for
entity
in
organisation_list
:
for
username
in
self
.
all_username_list
:
self
.
failUnlessUserCanAccessDocument
(
username
,
entity
)
self
.
failUnlessUserCanViewDocument
(
username
,
entity
)
def
stepViewCreatedAssignemnts
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
login
(
user_name
=
'test_configurator_user'
)
person_list
=
self
.
portal_person_module
.
searchFolder
()
self
.
assertNotEquals
(
0
,
len
(
person_list
))
for
person
in
person_list
:
for
assignment
in
person
.
contentValues
(
portal_type
=
'Assignment'
):
for
username
in
self
.
all_username_list
:
self
.
failUnlessUserCanAccessDocument
(
username
,
assignment
)
self
.
failUnlessUserCanViewDocument
(
username
,
assignment
)
def
stepCheckMaxmaDemoSampleObjectList
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
""" Check if objects are placed into the appropriate state """
...
...
@@ -143,22 +131,11 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
gadget
.
getValidationState
()))
gadget
.
Base_checkConsistency
()
# Check if demo user is working.
user
=
self
.
portal
.
portal_catalog
.
getResultValue
(
portal_type
=
"Person"
,
reference
=
self
.
user_reference
)
self
.
assertNotEquals
(
user
.
Person_getAvailableAssignmentValueList
(),
[])
self
.
assertEquals
(
user
.
getTitle
(),
"Jack Vale"
)
self
.
assertEquals
(
user
.
getValidationState
(),
"validated"
)
self
.
assertEquals
(
user
.
getSubordination
(),
'organisation_module/myorganisation'
)
self
.
assertEquals
(
user
.
getSubordinationTitle
(),
"Maxma Co"
)
### STEPS
DEFAULT_SEQUENCE_LIST
=
"""
stepCreateBusinessConfiguration
stepTic
stepSet
MaxmaDemo
Workflow
stepSet
Vifib
Workflow
stepTic
stepConfiguratorNext
stepTic
...
...
@@ -171,61 +148,9 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
stepStartConfigurationInstallation
stepTic
stepCheckInstanceIsConfigured%(country)s
stepCheckMaxmaDemoSampleObjectList
stepTic
stepViewAddGadget
stepViewEventModule
stepAddEvent
stepSentEventWorkflow
stepViewAccountModule
stepAddAccountModule
stepViewAccount
stepCopyPasteAccount
stepViewEntityModules
stepAddEntityModules
stepCopyAndPastePerson
stepCopyAndPasteOrganisation
stepEntityWorkflow
stepViewCreatedPersons
stepViewCreatedOrganisations
stepViewCreatedAssignemnts
stepAddAccoutingPeriod
stepValidatedAccountingPeriods
stepViewBankAccount
stepViewCreditCard
stepValidateAndModifyBankAccount
stepValidateAndModifyCreditCard
stepAddPaymentNodeInPerson
stepAddPaymentNodeInOrganisation
stepCopyAndPasteBankAccountInPerson
stepCopyAndPasteBankAccountInOrganisation
stepViewAccountingTransactionModule
stepAddAccountingTransactionModule
stepCopyAndPasteAccountingTransactions
stepTic
stepAccountingTransaction
stepTic
stepSaleInvoiceTransaction
stepTic
stepPurchaseInvoiceTransaction
stepTic
stepPaymentTransaction
stepTic
stepBalanceTransaction
stepTic
stepAccountingTransaction_getCausalityGroupedAccountingTransactionList
stepAddAssignments
stepAssignmentTI
stepEditAssignments
stepViewAcessAddPurchaseTradeCondition
stepViewAccessAddSaleTradeCondition
stepViewAccessAddSaleOrder
stepViewAccessAddSalePackingList
stepViewAccessPurchaseOrder
stepPurchasePackingList
"""
def
test_
maxma_demo
_workflow
(
self
):
def
test_
vifib
_workflow
(
self
):
""" Test the consulting workflow configuration"""
self
.
all_username_list
=
[
"demo"
]
self
.
accountant_username_list
=
self
.
all_username_list
...
...
@@ -241,5 +166,5 @@ class TestMaxmaDemoConfiguratorWorkflow(TestLiveConfiguratorWorkflowMixin):
import
unittest
def
test_suite
():
suite
=
unittest
.
TestSuite
()
suite
.
addTest
(
unittest
.
makeSuite
(
Test
MaxmaDemo
ConfiguratorWorkflow
))
suite
.
addTest
(
unittest
.
makeSuite
(
Test
Vifib
ConfiguratorWorkflow
))
return
suite
master/bt5/erp5_configurator_vifib/bt/revision
View file @
a7019be3
8
\ No newline at end of file
11
\ No newline at end of file
master/bt5/erp5_configurator_vifib/bt/template_test_id_list
View file @
a7019be3
testMaxmaDemoConfigurationWorkflow
\ No newline at end of file
testVifibConfigurationWorkflow
\ No newline at end of file
master/bt5/vifib_base/DocumentTemplateItem/Person.py
View file @
a7019be3
from
AccessControl
import
ClassSecurityInfo
from
AccessControl
import
ClassSecurityInfo
,
Unauthorized
,
getSecurityManager
from
Products.ERP5.Document.Person
import
Person
as
ERP5Person
class
Person
(
ERP5Person
):
security
=
ClassSecurityInfo
()
security
.
declarePublic
(
'getCertificate'
)
def
_checkReference
(
self
):
if
not
self
.
getReference
():
raise
ValueError
(
'No reference set.'
)
def
_checkCertificateRequest
(
self
):
try
:
self
.
checkUserCanChangePassword
()
except
Unauthorized
:
# in ERP5 user has no SetOwnPassword permission on Person document
# referring himself, so implement "security" by checking that currently
# logged in user is trying to get/revoke his own certificate
reference
=
self
.
getReference
()
if
not
reference
:
raise
if
getSecurityManager
().
getUser
().
getId
()
!=
reference
:
raise
def
_getCertificate
(
self
):
return
self
.
getPortalObject
().
portal_certificate_authority
\
...
...
@@ -18,13 +28,11 @@ class Person(ERP5Person):
def
getCertificate
(
self
):
"""Returns new SSL certificate"""
self
.
_checkReference
()
self
.
checkUserCanChangePassword
()
self
.
_checkCertificateRequest
()
return
self
.
_getCertificate
()
security
.
declarePublic
(
'revokeCertificate'
)
def
revokeCertificate
(
self
):
"""Revokes existing certificate"""
self
.
_checkReference
()
self
.
checkUserCanChangePassword
()
self
.
_checkCertificateRequest
()
self
.
_revokeCertificate
()
master/bt5/vifib_base/DocumentTemplateItem/SoftwareInstance.py
View file @
a7019be3
...
...
@@ -51,13 +51,12 @@ class SoftwareInstance(Item):
xml
=
self
.
getSlaXml
()
if
xml
is
not
None
and
xml
!=
''
:
tree
=
etree
.
fromstring
(
xml
.
encode
(
'utf-8'
))
for
element
in
tree
.
iter
(
tag
=
etree
.
Element
):
if
element
.
tag
==
'parameter'
:
key
=
element
.
get
(
'id'
)
value
=
result_dict
.
get
(
key
,
None
)
if
value
is
not
None
:
value
=
value
+
' '
+
element
.
text
else
:
value
=
element
.
text
result_dict
[
key
]
=
value
for
element
in
tree
.
findall
(
'parameter'
):
key
=
element
.
get
(
'id'
)
value
=
result_dict
.
get
(
key
,
None
)
if
value
is
not
None
:
value
=
value
+
' '
+
element
.
text
else
:
value
=
element
.
text
result_dict
[
key
]
=
value
return
result_dict
master/bt5/vifib_credential/TestTemplateItem/testVifibCredential.py
View file @
a7019be3
...
...
@@ -41,109 +41,46 @@ class TestVifibCredential(testVifibMixin):
result_list
.
append
(
"vifib_credential"
)
return
result_list
def
createCredentialRequest
(
self
,
first_name
=
"Gabriel"
,
last_name
=
"Monnerat"
,
reference
=
"gabriel"
,
password
=
"123"
,
default_email_text
=
"gabriel@test.com"
):
def
stepSetCredentialRequestAutomaticApprovalPreferences
(
self
):
self
.
setSystemPreference
()
default_system_preference
=
self
.
portal
.
portal_preferences
.
restrictedTraverse
(
self
.
getDefaultSitePreferenceId
())
self
.
login
(
"ERP5TypeTestCase"
)
default_system_preference
.
edit
(
preferred_credential_request_automatic_approval
=
True
)
self
.
logout
()
def
stepValidateNotificationMessage
(
self
):
module
=
self
.
portal
.
notification_message_module
reference
=
"crendential_request-confirmation-without-password"
search_result
=
module
.
searchFolder
(
reference
=
reference
)
[
notification
.
getObject
().
validate
()
for
notification
in
search_result
]
def
testBase_getDefaultAssignmentArgumentDict
(
self
):
self
.
stepValidateNotificationMessage
()
self
.
stepSetCredentialRequestAutomaticApprovalPreferences
()
self
.
logout
()
self
.
portal
.
ERP5Site_registerCredentialRequest
(
first_name
=
first_name
,
last_name
=
last_name
,
reference
=
reference
,
password
=
password
,
portal_catalog
=
self
.
portal
.
portal_catalog
self
.
portal
.
ERP5Site_registerCredentialRequest
(
first_name
=
"Vifib"
,
last_name
=
"Test"
,
reference
=
"vifib_test"
,
password
=
"vifib"
,
career_subordination_title
=
""
,
default_email_text
=
default_email_text
,
default_email_text
=
"vifib@vifib.com"
,
default_telephone_text
=
"223344"
,
default_address_street_address
=
"Test Street"
,
default_address_city
=
"
Campos
"
,
default_address_city
=
"
My Street
"
,
default_address_zip_code
=
"28024030"
)
self
.
login
(
"ERP5TypeTestCase"
)
self
.
stepTic
()
def
createSystemPreference
(
self
):
""" """
portal_preferences
=
self
.
getPreferenceTool
()
preference
=
portal_preferences
.
newContent
(
portal_type
=
'System Preference'
,
title
=
'Default Site Preference'
,
id
=
'test_site_preference'
)
self
.
stepTic
()
return
preference
def
afterSetUp
(
self
):
""" """
portal_preferences
=
self
.
getPreferenceTool
()
preference
=
getattr
(
portal_preferences
,
'test_site_preference'
,
None
)
if
preference
is
None
:
preference
=
self
.
createSystemPreference
()
if
preference
.
getPreferenceState
()
==
'disabled'
:
preference
.
enable
()
preference
.
edit
(
preferred_credential_request_automatic_approval
=
True
,
preferred_credential_recovery_automatic_approval
=
True
,
preferred_organisation_credential_update_automatic_approval
=
True
,
preferred_person_credential_update_automatic_approval
=
True
)
self
.
portal
.
email_from_address
=
'site@example.invalid'
oldMailHost
=
getattr
(
self
.
portal
,
'MailHost'
,
None
)
if
oldMailHost
is
not
None
:
self
.
portal
.
manage_delObjects
([
'MailHost'
])
self
.
portal
.
_setObject
(
'MailHost'
,
DummyMailHost
(
'MailHost'
))
self
.
stepTic
()
def
testMailMessagePosted
(
self
):
""" Test if the Mail Message was posted correctly """
self
.
createCredentialRequest
(
reference
=
"vifibtest"
)
portal_catalog
=
self
.
portal
.
portal_catalog
credential_request
=
portal_catalog
.
getResultValue
(
portal_type
=
"Credential Request"
,
reference
=
"vifibtest"
)
mail_message
=
portal_catalog
.
getResultValue
(
portal_type
=
"Mail Message"
,
follow_up
=
credential_request
)
self
.
assertEquals
(
mail_message
.
getSimulationState
(),
"started"
)
self
.
assertTrue
(
"key=%s"
%
mail_message
.
getReference
()
in
mail_message
.
getTextContent
())
def
test_MailFromMailMessageEvent
(
self
):
""" """
self
.
createCredentialRequest
(
first_name
=
"Vifib"
,
last_name
=
"Test"
,
reference
=
"vifibtest"
)
portal_catalog
=
self
.
portal
.
portal_catalog
credential_request
=
portal_catalog
.
getResultValue
(
portal_type
=
"Credential Request"
,
reference
=
"vifibtest"
,
first_name
=
"Vifib"
,
last_name
=
"Test"
)
mail_message
=
portal_catalog
.
getResultValue
(
portal_type
=
"Mail Message"
,
follow_up
=
credential_request
)
last_message
=
self
.
portal
.
MailHost
.
_last_message
self
.
assertNotEquals
((),
last_message
)
mfrom
,
mto
,
message_text
=
last_message
self
.
assertEquals
(
mfrom
,
'Portal Administrator <site@example.invalid>'
)
self
.
assertEquals
([
'Vifib Test <gabriel@test.com>'
],
mto
)
self
.
assertNotEquals
(
re
.
search
(
"Subject
\
:.*Welcome_
t
o_Vifib"
,
message_text
),
None
)
self
.
assertNotEquals
(
re
.
search
(
"Hello
\
Vi
f
ib
\
Tes
t
\
,
"
, message_text), None)
self.assertNotEquals(re.search("
key
\
=
..
%
s
" % mail_message.getReference(), message_text), None)
def testERP5Site_activeLogin(self):
""" Test if the script WebSection_activeLogin will create one user
correctly """
self.createCredentialRequest()
portal_catalog = self.portal.portal_catalog
credential_request = portal_catalog.getResultValue(portal_type="
Credential
Request
",
reference="
gabriel
")
credential_request
=
portal_catalog
.
getResultValue
(
portal_type
=
"Credential Request"
,
reference
=
"vifib_test"
)
mail_message
=
portal_catalog
.
getResultValue
(
portal_type
=
"Mail Message"
,
follow_up
=
credential_request
)
self
.
logout
()
self
.
portal
.
ERP5Site_activeLogin
(
mail_message
.
getReference
())
self
.
login
(
"ERP5TypeTestCase"
)
self
.
stepTic
()
person = portal_catalog.getResultValue(reference="
gabriel
", portal_type="
Person
")
self.assertEquals(person.getValidationState(), "
validated
")
def testERP5Site_registerCredentialRequest(self):
""" Test if the script ERP5Site_registerCredentialRequest will create one
Credential Request correctly """
self.createCredentialRequest()
portal_catalog = self.portal.portal_catalog
credential_request = portal_catalog.getResultValue(portal_type="
Credential
Request
",
reference="
gabriel
")
self.assertEquals(credential_request.getFirstName(), "
Gabriel
")
self.assertEquals(credential_request.getDefaultEmailText(), "
gabriel
@
test
.
com
")
person
=
portal_catalog
.
getResultValue
(
reference
=
"vifib_test"
,
portal_type
=
"Person"
)
assignment_list
=
person
.
objectValues
(
portal_type
=
"Assignment"
)
assignment
=
assignment_list
[
0
]
self
.
assertEquals
(
assignment
.
getFunction
(),
"customer"
)
self
.
assertEquals
(
assignment
.
getRole
(),
"client"
)
master/bt5/vifib_credential/bt/revision
View file @
a7019be3
27
\ No newline at end of file
28
\ No newline at end of file
master/product/Vifib/Tool/SlapTool.py
View file @
a7019be3
...
...
@@ -346,15 +346,14 @@ class SlapTool(BaseTool):
result_dict
=
{}
if
xml
is
not
None
and
xml
!=
''
:
tree
=
etree
.
fromstring
(
xml
.
encode
(
'utf-8'
))
for
element
in
tree
.
iter
(
tag
=
etree
.
Element
):
if
element
.
tag
==
'parameter'
:
key
=
element
.
get
(
'id'
)
value
=
result_dict
.
get
(
key
,
None
)
if
value
is
not
None
:
value
=
value
+
' '
+
element
.
text
else
:
value
=
element
.
text
result_dict
[
key
]
=
value
for
element
in
tree
.
findall
(
'parameter'
):
key
=
element
.
get
(
'id'
)
value
=
result_dict
.
get
(
key
,
None
)
if
value
is
not
None
:
value
=
value
+
' '
+
element
.
text
else
:
value
=
element
.
text
result_dict
[
key
]
=
value
return
result_dict
def
_getModificationStatusForSlave
(
self
,
computer_partition_document
):
...
...
master/product/Vifib/tests/testVifibSlapWebService.py
View file @
a7019be3
...
...
@@ -7036,43 +7036,82 @@ class TestVifibSlapWebService(testVifibMixin):
# Person using PKI/Slap interface
########################################
def
test_person_request_new_certificate
(
self
):
"""Chekcs that Person is capable to ask for new certificate"""
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
def
_safe_revoke_certificate
(
self
,
person
):
from
AccessControl
import
getSecurityManager
user
=
getSecurityManager
().
getUser
().
getId
()
try
:
self
.
login
(
'ERP5TypeTestCase'
)
person
.
revokeCertificate
()
except
ValueError
,
err
:
if
'No certificate for'
in
err
.
message
:
pass
else
:
raise
finally
:
self
.
login
(
user
)
def
test_person_request_new_certificate
(
self
):
"""Checks that Person is capable to ask for new certificate"""
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
self
.
_safe_revoke_certificate
(
person
)
self
.
login
(
'test_vifib_user_admin'
)
transaction
.
commit
()
certificate
=
person
.
getCertificate
()
raise
NotImplementedError
self
.
assertTrue
(
'CN=test_vifib_user_admin'
in
certificate
[
'certificate'
])
def
test_person_request_revoke_certificate
(
self
):
"""Chekcs that Person is capable to ask for revocation of certificate"""
raise
NotImplementedError
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
self
.
_safe_revoke_certificate
(
person
)
self
.
login
(
'test_vifib_user_admin'
)
certificate
=
person
.
getCertificate
()
self
.
assertTrue
(
'CN=test_vifib_user_admin'
in
certificate
[
'certificate'
])
person
.
revokeCertificate
()
def
test_person_request_new_certificate_twice
(
self
):
"""Checks that if Person asks twice for a certificate the next call
fails"""
raise
NotImplementedError
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
self
.
_safe_revoke_certificate
(
person
)
self
.
login
(
'test_vifib_user_admin'
)
certificate
=
person
.
getCertificate
()
self
.
assertTrue
(
'CN=test_vifib_user_admin'
in
certificate
[
'certificate'
])
self
.
assertRaises
(
ValueError
,
person
.
getCertificate
)
def
test_person_request_certificate_for_another_person
(
self
):
"""Checks that if Person tries to request ceritifcate for someone else it
will fail"""
raise
NotImplementedError
from
AccessControl
import
Unauthorized
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
self
.
_safe_revoke_certificate
(
person
)
self
.
login
(
'test_hr_admin'
)
self
.
assertRaises
(
Unauthorized
,
person
.
getCertificate
)
def
test_person_request_revoke_certificate_for_another_person
(
self
):
"""Checks that if Person tries to request ceritifcate for someone else it
will fail"""
raise
NotImplementedError
from
AccessControl
import
Unauthorized
self
.
login
()
self
.
portal
.
portal_certificate_authority
.
_checkCertificateAuthority
()
person
=
self
.
portal
.
ERP5Site_getAuthenticatedMemberPersonValue
(
'test_vifib_user_admin'
)
self
.
_safe_revoke_certificate
(
person
)
self
.
login
(
'test_vifib_user_admin'
)
certificate
=
person
.
getCertificate
()
self
.
assertTrue
(
'CN=test_vifib_user_admin'
in
certificate
[
'certificate'
])
self
.
login
(
'test_hr_admin'
)
self
.
assertRaises
(
Unauthorized
,
person
.
revokeCertificate
)
def
stepPersonRequestSlapSoftwareInstanceNotFoundResponse
(
self
,
sequence
,
**
kw
):
...
...
setup.py
View file @
a7019be3
...
...
@@ -33,7 +33,7 @@ setup(name=name,
install_requires
=
[
'Flask'
,
# used by proxy
'lxml'
,
# needed to play with XML trees
'netaddr'
,
# to play safely with IPv6 prefixes
'netaddr
>=0.7.5
'
,
# to play safely with IPv6 prefixes
'netifaces'
,
# to fetch information about network devices
'setuptools'
,
# namespaces
'supervisor'
,
# slapgrid uses supervisor to manage processes
...
...
slapos.cfg.example
View file @
a7019be3
...
...
@@ -17,4 +17,5 @@ ipv4_local_network = 10.0.0.0/16
[slapproxy]
host = 127.0.0.1
port = 5000
database_uri = :memory: # or /path/to/file
# You could also specify: /path/to/file
database_uri = :memory:
slapos/slap/interface/slap.py
View file @
a7019be3
...
...
@@ -164,16 +164,6 @@ class IComputerPartition(IBuildoutController):
profile.
"""
def
setInstanceParameterDict
(
partition_parameter_kw
):
"""
Set instance parameter informations on the slagrid server.
partition_parameter_kw -- dictionary of parameters.
This method can be used to propagate connection informations (like
service's port).
"""
def
setUsage
(
usage_log
):
"""
Associate a usage log to the computer partition.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment