diff --git a/product/ERP5/tests/testERP5Credential.py b/product/ERP5/tests/testERP5Credential.py index 78928d7747472bcd4a0ea60f007020e852d320d2..dcc29c4d1cc5cb7b36c73b8a14046e257054727d 100644 --- a/product/ERP5/tests/testERP5Credential.py +++ b/product/ERP5/tests/testERP5Credential.py @@ -230,7 +230,6 @@ class TestERP5Credential(ERP5TypeTestCase): preferred_organisation_credential_update_automatic_approval=False, preferred_person_credential_update_automatic_approval=False, preferred_credential_alarm_automatic_call=True) - self._enablePreference() transaction.commit() self.tic() @@ -358,24 +357,28 @@ class TestERP5Credential(ERP5TypeTestCase): # check annonymous can access subscription form self.assertTrue("Desired Login Name" in request.traverse(form_url)()) # fill in and submit the subscription form - + credential_reference = 'homie' result = self.portal.ERP5Site_newCredentialRequest(\ first_name='Homer', last_name='Simpson', - reference='homie', + reference=credential_reference, password='secret', default_email_text='homer.simpson@fox.com', role_list=['internal'], ) - self.assertTrue('portal_status_message=Credential%20Request%20Created.'\ - in result) + portal_status_message = sequence.get("portal_status_message", + "Credential%20Request%20Created.") +# if 'portal_status_message=%s' % portal_status_message not in result: +# import ipdb;ipdb.set_trace() + self.assertTrue('portal_status_message=%s' % portal_status_message in result, result) credential_request_module = self.portal.getDefaultModule('Credential Request') result = credential_request_module.contentValues(\ portal_type='Credential Request', first_name='Homer', last_name='Simpson', reference='homie') self.assertEquals(len(result), 1) - sequence.edit(subscription_request=result[0]) + sequence.edit(subscription_request=result[0], + person_reference=credential_reference) def stepAcceptSubscriptionRequest(self, sequence=None, sequence_list=None, **kw): @@ -384,6 +387,13 @@ class TestERP5Credential(ERP5TypeTestCase): subscription_request.accept() self.logout() + def stepSubmitSubscriptionRequest(self, sequence=None, sequence_list=None, + **kw): + self.login() + subscription_request = sequence.get('subscription_request') + subscription_request.submit() + self.logout() + def stepCheckAccountIsCreated(self, sequence=None, sequence_list=None, **kw): # check a person have been created person_module = self.portal.getDefaultModule('Person') @@ -578,6 +588,23 @@ class TestERP5Credential(ERP5TypeTestCase): person_reference = sequence["person_reference"] self.portal.ERP5Site_newCredentialRecovery(reference=person_reference) + def stepLoginAsCurrentPersonReference(self, sequence=None, + sequence_list=None, **kw): + person_reference = sequence["person_reference"] + self.login(person_reference) + + def stepCreateCredentialUpdateWithERP5Site_newCredentialUpdate(self, + sequence=None, sequence_list=None, **kw): + self.portal.ERP5Site_newPersonCredentialUpdate(first_name="tom", + default_email_text="tom@host.com") + + def stepSelectCredentialUpdate(self, sequence=None, sequence_list=None, + **kw): + self.login() + credential_update = self.portal.portal_catalog.getResultValue( + portal_type="Credential Update") + sequence["credential_update"] = credential_update + def stepCheckCredentialRecoveryCreation(self, sequence=None, sequence_list=None, **kw): person_reference = sequence["person_reference"] @@ -588,6 +615,7 @@ class TestERP5Credential(ERP5TypeTestCase): person = credential_recovery.getDestinationDecisionValue() self.assertEquals("Barney", person.getTitle()) self.assertEquals("barney@duff.com", person.getEmailText()) + sequence["credential_recovery"] = credential_recovery def stepSubmitCredentialRecovery(self, sequence=None, sequence_list=None, **kw): @@ -604,6 +632,10 @@ class TestERP5Credential(ERP5TypeTestCase): Check an email containing the password reset link as been sent ''' barney = sequence.get('barney') + if not barney: + reference = sequence.get('person_reference') + barney = self.portal.portal_catalog.getResultValue(portal_type="Person", + reference=reference) # after accept, an email is send containing the reset link last_message = self.portal.MailHost._last_message @@ -660,7 +692,69 @@ class TestERP5Credential(ERP5TypeTestCase): # check we can now login with the new password 'new_password' self._assertUserExists('barney', 'new_password') - def test_01_simpleSubsciptionRequest(self): + def _createCredentialRequest(self, first_name="Gabriel", + last_name="Monnerat", + reference="gabriel", + password="123", + default_email_text="gabriel@test.com"): + self.logout() + self.portal.ERP5Site_newCredentialRequest(first_name=first_name, + last_name=last_name, + reference=reference, + password=password, + career_subordination_title="", + default_email_text=default_email_text, + default_telephone_text="223344", + default_address_street_address="Test Street", + default_address_city="Campos", + default_address_zip_code="28024030") + self.login("ERP5TypeTestCase") + self.stepTic() + + def stepCreateCredentialRequestSample(self, sequence=None, + sequence_list=None, **kw): + credential_reference = "credential_reference" + self._createCredentialRequest(reference=credential_reference) + sequence.edit(credential_reference=credential_reference) + + def stepCheckIfMailMessageWasPosted(self, sequence=None, + sequence_list=None, **kw): + credential_reference_str = sequence["credential_reference"] + portal_catalog = self.portal.portal_catalog + credential_reference = portal_catalog.getResultValue( + portal_type="Credential Request", reference=credential_reference_str) + mail_message = portal_catalog.getResultValue(portal_type="Mail Message", + follow_up=credential_reference) + self.assertEquals(mail_message.getSimulationState(), "started") + self.assertTrue( "key=%s" % mail_message.getReference() in mail_message.getTextContent()) + + def stepSetPreferredCredentialAlarmAutomaticCallAsFalse(self, sequence): + sequence.edit(automatic_call=False) + + def stepSetAssigneeRoleToCurrentPersonInCredentialUpdateModule(self, + sequence=None, sequence_list=None, **kw): + person_reference = sequence["person_reference"] + self.portal.credential_update_module.manage_setLocalRoles(person_reference, + ['Assignor',]) + + def stepSetAuditorRoleToCurrentPerson(self, sequence=None, + sequence_list=None, **kw): + person_reference = sequence["person_reference"] + self.login() + person = self.portal.portal_catalog.getResultValue(portal_type="Person", + reference=person_reference) + person.manage_setLocalRoles(person_reference, ["Auditor"]) + self.logout() + + def stepCheckPersonAfterUpdatePerson(self, sequence=None, + sequence_list=None, **kw): + person = self.portal.portal_catalog.getResultValue( + reference=sequence["person_reference"], portal_type="Person") + self.assertEquals("tom", person.getFirstName()) + self.assertEquals("Simpson", person.getLastName()) + self.assertEquals("tom@host.com", person.getDefaultEmailText()) + + def test_01_simpleSubscriptionRequest(self): ''' Check that is possible to subscribe to erp5 ''' @@ -773,45 +867,6 @@ class TestERP5Credential(ERP5TypeTestCase): sequence_list.addSequenceString(sequence_string) sequence_list.play(self) - def _createCredentialRequest(self, first_name="Gabriel", - last_name="Monnerat", - reference="gabriel", - password="123", - default_email_text="gabriel@test.com"): - self.logout() - self.portal.ERP5Site_newCredentialRequest(first_name=first_name, - last_name=last_name, - reference=reference, - password=password, - career_subordination_title="", - default_email_text=default_email_text, - default_telephone_text="223344", - default_address_street_address="Test Street", - default_address_city="Campos", - default_address_zip_code="28024030") - self.login("ERP5TypeTestCase") - self.stepTic() - - def stepCreateCredentialRequestSample(self, sequence=None, - sequence_list=None, **kw): - credential_reference = "credential_reference" - self._createCredentialRequest(reference=credential_reference) - sequence.edit(credential_reference=credential_reference) - - def stepCheckIfMailMessageWasPosted(self, sequence=None, - sequence_list=None, **kw): - credential_reference_str = sequence["credential_reference"] - portal_catalog = self.portal.portal_catalog - credential_reference = portal_catalog.getResultValue( - portal_type="Credential Request", reference=credential_reference_str) - mail_message = portal_catalog.getResultValue(portal_type="Mail Message", - follow_up=credential_reference) - self.assertEquals(mail_message.getSimulationState(), "started") - self.assertTrue( "key=%s" % mail_message.getReference() in mail_message.getTextContent()) - - def stepSetPreferredCredentialAlarmAutomaticCallAsFalse(self, sequence): - sequence.edit(automatic_call=False) - def testMailMessagePosted(self): """ Test if the Mail Message was posted correctly """ sequence_list = SequenceList() @@ -851,11 +906,31 @@ class TestERP5Credential(ERP5TypeTestCase): message_text), None) self.stepUnSetCredentialAutomaticApprovalPreferences() + def testAssignmentProperties(self): + sequence = dict(automatic_call=False) + self.stepSetCredentialRequestAutomaticApprovalPreferences(sequence) + self.stepSetCredentialAssignmentPropertyList() + self._createCredentialRequest() + sequence = dict(reference="gabriel", + assignment_function="member", + assignment_role="internal") + self.stepCheckAssignmentAfterActiveLogin(sequence) + category_list = ["role/client", "function/agent"] + self.stepSetCredentialAssignmentPropertyList( + dict(category_list=category_list)) + self._createCredentialRequest(reference="credential_user") + sequence = dict(reference="credential_user", + assignment_function="agent", + assignment_role="client") + self.stepCheckAssignmentAfterActiveLogin(sequence) + def testERP5Site_activeLogin(self): """ Test if the script WebSection_activeLogin will create one user correctly """ sequence = dict(automatic_call=False) self.stepSetCredentialRequestAutomaticApprovalPreferences(sequence) + self.stepSetCredentialAssignmentPropertyList() + self.stepTic() self._createCredentialRequest() portal_catalog = self.portal.portal_catalog credential_request = portal_catalog.getResultValue( @@ -893,24 +968,6 @@ class TestERP5Credential(ERP5TypeTestCase): self.assertEquals(credential_request.getFunction(), "member") self.stepUnSetCredentialAutomaticApprovalPreferences() - def testBase_getDefaultAssignmentArgumentDict(self): - sequence = dict(automatic_call=False) - self.stepSetCredentialRequestAutomaticApprovalPreferences(sequence) - self.stepSetCredentialAssignmentPropertyList() - self._createCredentialRequest() - sequence = dict(reference="gabriel", - assignment_function="member", - assignment_role="internal") - self.stepCheckAssignmentAfterActiveLogin(sequence) - category_list = ["role/client", "function/agent"] - self.stepSetCredentialAssignmentPropertyList( - dict(category_list=category_list)) - self._createCredentialRequest(reference="credential_user") - sequence = dict(reference="credential_user", - assignment_function="agent", - assignment_role="client") - self.stepCheckAssignmentAfterActiveLogin(sequence) - def testERP5Site_newCredentialRecoveryWithNoSecurityQuestion(self): """ Check that password recovery works in case if not security question with @@ -919,7 +976,31 @@ class TestERP5Credential(ERP5TypeTestCase): sequence_list = SequenceList() sequence_string = "CreatePerson Tic " \ "RequestCredentialRecoveryWithERP5Site_newCredentialRecovery Tic " \ - "CheckCredentialRecoveryCreation" + "CheckCredentialRecoveryCreation " \ + "AcceptCredentialRecovery Tic "\ + "CheckEmailIsSent Tic "\ + "CheckPasswordChange "\ + + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self) + + def testERP5Site_newCredentialUpdateWithNoSecurityQuestion(self): + """ + Check that password recovery works in case if not security question with + answer is defined + """ + sequence_list = SequenceList() + sequence_string = "UnSetCredentialAutomaticApprovalPreferences " \ + "CreateSimpleSubscriptionRequest Tic " \ + "AcceptSubscriptionRequest Tic " \ + "SetAuditorRoleToCurrentPerson " \ + "SetAssigneeRoleToCurrentPersonInCredentialUpdateModule Tic " \ + "LoginAsCurrentPersonReference " \ + "CreateCredentialUpdateWithERP5Site_newCredentialUpdate Tic " \ + "SelectCredentialUpdate " \ + "AcceptCredentialUpdate Tic "\ + "CheckPersonAfterUpdatePerson "\ + sequence_list.addSequenceString(sequence_string) sequence_list.play(self)