workflow_tests: fail webservice call assertion if response is missing (#87824)

This commit is contained in:
Valentin Deniaud 2024-03-06 11:00:42 +01:00
parent 58df7bf7bb
commit 0c0807a0d4
2 changed files with 16 additions and 4 deletions

View File

@ -580,6 +580,14 @@ def test_workflow_tests_webservice(pub):
testdef.run(formdef)
assert str(excinfo.value) == 'Webservice response Fake response was used 0 times (instead of 1).'
testdef.workflow_tests.actions = [
workflow_tests.AssertWebserviceCall(webservice_response_id='xxx', call_count=1),
]
with pytest.raises(WorkflowTestError) as excinfo:
testdef.run(formdef)
assert str(excinfo.value) == 'Broken, missing webservice response'
def test_workflow_tests_webservice_status_jump(pub):
user = pub.user_class(name='test user')

View File

@ -529,14 +529,18 @@ class AssertWebserviceCall(WorkflowTestAction):
return r
def perform(self, formdata, user):
try:
response = WebserviceResponse.get(self.webservice_response_id)
except KeyError:
raise WorkflowTestError(_('Broken, missing webservice response'))
call_count = 0
for response in formdata.used_webservice_responses.copy():
if response.id == self.webservice_response_id:
formdata.used_webservice_responses.remove(response)
for used_response in formdata.used_webservice_responses.copy():
if used_response.id == self.webservice_response_id:
formdata.used_webservice_responses.remove(used_response)
call_count += 1
if call_count != self.call_count:
response = WebserviceResponse.get(self.webservice_response_id)
raise WorkflowTestError(
_('Webservice response %(name)s was used %(count)s times (instead of %(expected_count)s).')
% {'name': response.name, 'count': call_count, 'expected_count': self.call_count}