Fix cancel broadcast by converting reference date to string

Datetime oobject is not json serializable, we have to convert
it to string for the created_at field of previous broadcast
provider messages.
This commit is contained in:
Pea Tyczynska
2020-12-18 17:22:11 +00:00
parent 519568970c
commit ee833bd65b
2 changed files with 26 additions and 14 deletions

View File

@@ -165,12 +165,16 @@ class CBCProxyEE(CBCProxyClientBase):
identifier, previous_provider_messages, identifier, previous_provider_messages,
sent, message_number=None sent, message_number=None
): ):
from app import DATETIME_FORMAT
payload = { payload = {
'message_type': 'cancel', 'message_type': 'cancel',
'identifier': identifier, 'identifier': identifier,
'message_format': 'cap', 'message_format': 'cap',
"references": [ "references": [
{"message_id": str(message.id), "sent": message.created_at} for message in previous_provider_messages {
"message_id": str(message.id),
"sent": message.created_at.strftime(DATETIME_FORMAT)
} for message in previous_provider_messages
], ],
'sent': sent, 'sent': sent,
} }
@@ -219,6 +223,7 @@ class CBCProxyVodafone(CBCProxyClientBase):
): ):
# avoid cyclical import # avoid cyclical import
from app.utils import format_sequential_number from app.utils import format_sequential_number
from app import DATETIME_FORMAT
payload = { payload = {
'message_type': 'cancel', 'message_type': 'cancel',
@@ -229,7 +234,7 @@ class CBCProxyVodafone(CBCProxyClientBase):
{ {
"message_id": str(message.id), "message_id": str(message.id),
"message_number": format_sequential_number(message.message_number), "message_number": format_sequential_number(message.message_number),
"sent": message.created_at "sent": message.created_at.strftime(DATETIME_FORMAT)
} for message in previous_provider_messages } for message in previous_provider_messages
], ],
'sent': sent, 'sent': sent,

View File

@@ -1,10 +1,12 @@
import json import json
import uuid import uuid
from collections import namedtuple from collections import namedtuple
from datetime import datetime
from unittest.mock import Mock from unittest.mock import Mock
import pytest import pytest
from app import DATETIME_FORMAT
from app.clients.cbc_proxy import CBCProxyClient, CBCProxyException, CBCProxyEE, CBCProxyCanary from app.clients.cbc_proxy import CBCProxyClient, CBCProxyException, CBCProxyEE, CBCProxyCanary
@@ -119,13 +121,15 @@ def test_cbc_proxy_ee_create_and_send_invokes_function(mocker, cbc_proxy_ee):
def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee): def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
identifier = 'my-identifier' identifier = 'my-identifier'
MockProviderMessage = namedtuple('BroadcastProviderMessage', ['id', 'message_number', 'created_at']) MockProviderMessage = namedtuple(
'BroadcastProviderMessage', ['id', 'message_number', 'created_at']
)
provider_messages = [ provider_messages = [
MockProviderMessage(uuid.uuid4(), '0000007b', '2020-12-10 11:19:44.130585'), MockProviderMessage(uuid.uuid4(), '0000007b', datetime(2020, 12, 16)),
MockProviderMessage(uuid.uuid4(), '0000004e', '2020-12-10 12:19:44.130585') MockProviderMessage(uuid.uuid4(), '0000004e', datetime(2020, 12, 17))
] ]
sent = '2020-12-10 14:19:44.130585' sent = '2020-12-17 14:19:44.130585'
ld_client_mock = mocker.patch.object( ld_client_mock = mocker.patch.object(
cbc_proxy_ee, cbc_proxy_ee,
@@ -161,11 +165,11 @@ def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
assert payload['references'] == [ assert payload['references'] == [
{ {
"message_id": str(provider_messages[0].id), "message_id": str(provider_messages[0].id),
"sent": provider_messages[0].created_at "sent": provider_messages[0].created_at.strftime(DATETIME_FORMAT)
}, },
{ {
"message_id": str(provider_messages[1].id), "message_id": str(provider_messages[1].id),
"sent": provider_messages[1].created_at "sent": provider_messages[1].created_at.strftime(DATETIME_FORMAT)
}, },
] ]
assert payload['sent'] == sent assert payload['sent'] == sent
@@ -233,13 +237,16 @@ def test_cbc_proxy_vodafone_create_and_send_invokes_function(mocker, cbc_proxy_v
def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone): def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone):
identifier = 'my-identifier' identifier = 'my-identifier'
MockProviderMessage = namedtuple('BroadcastProviderMessage', ['id', 'message_number', 'created_at']) MockProviderMessage = namedtuple(
'BroadcastProviderMessage',
['id', 'message_number', 'created_at']
)
provider_messages = [ provider_messages = [
MockProviderMessage(uuid.uuid4(), 78, '2020-12-10 11:19:44.130585'), MockProviderMessage(uuid.uuid4(), 78, datetime(2020, 12, 16)),
MockProviderMessage(uuid.uuid4(), 123, '2020-12-10 12:19:44.130585') MockProviderMessage(uuid.uuid4(), 123, datetime(2020, 12, 17))
] ]
sent = '2020-12-10 14:19:44.130585' sent = '2020-12-18 14:19:44.130585'
ld_client_mock = mocker.patch.object( ld_client_mock = mocker.patch.object(
cbc_proxy_vodafone, cbc_proxy_vodafone,
@@ -276,12 +283,12 @@ def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone):
{ {
"message_id": str(provider_messages[0].id), "message_id": str(provider_messages[0].id),
"message_number": '0000004e', "message_number": '0000004e',
"sent": provider_messages[0].created_at "sent": provider_messages[0].created_at.strftime(DATETIME_FORMAT)
}, },
{ {
"message_id": str(provider_messages[1].id), "message_id": str(provider_messages[1].id),
"message_number": '0000007b', "message_number": '0000007b',
"sent": provider_messages[1].created_at "sent": provider_messages[1].created_at.strftime(DATETIME_FORMAT)
}, },
] ]
assert payload['sent'] == sent assert payload['sent'] == sent