vivaticket: search contact also by email (#35872)

This commit is contained in:
Serghei Mihai 2019-09-06 11:09:04 +02:00
parent e65e5fc711
commit c803ac7552
2 changed files with 3 additions and 1 deletions

View File

@ -251,7 +251,7 @@ class VivaTicket(BaseResource):
unhashed_external_code = data['email']
external_code = hashlib.md5(unhashed_external_code.encode('utf-8')).hexdigest()[:20]
contact_payload['ExternalCode'] = external_code
response = self.get('Contact/Get', externalCode=external_code)
response = self.get('Contact/Get', externalCode=external_code, email=data['email'])
self.logger.debug('Got contact response: %r', response.text)
if not response.ok:
response = self.post('Contact/Post', {'Contact': contact_payload})

View File

@ -319,6 +319,8 @@ def test_get_or_create_contact(mocked_get, mocked_put, mocked_post, app, connect
status_code=200),
]
assert connector.get_or_create_contact({'email': 'foo@example.com'}) == {'InternalCode': '0000000273'}
assert mocked_get.call_args[1]['params']['externalCode'] == 'b48def645758b95537d4'
assert mocked_get.call_args[1]['params']['email'] == 'foo@example.com'
mocked_put.assert_not_called()
assert mocked_post.call_args[1]['json']['Key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074'
assert mocked_post.call_args[1]['json']['Contact']['Email'] == 'foo@example.com'