Merge pull request #3079 from alphagov/pass-language-to-lambda

Pass language through to lambda
This commit is contained in:
Chris Hill-Scott
2020-12-24 16:06:40 +00:00
committed by GitHub
2 changed files with 51 additions and 5 deletions

View File

@@ -1,7 +1,9 @@
import json
from abc import ABC, abstractmethod
import boto3
from flask import current_app
from notifications_utils.template import non_gsm_characters
from app.config import BroadcastProvider
from app.utils import DATETIME_FORMAT, format_sequential_number
@@ -48,9 +50,19 @@ class CBCProxyClient:
return proxy_classes[provider](self._lambda_client)
class CBCProxyClientBase:
class CBCProxyClientBase(ABC):
lambda_name = None
@property
@abstractmethod
def LANGUAGE_ENGLISH(self):
pass
@property
@abstractmethod
def LANGUAGE_WELSH(self):
pass
def __init__(self, lambda_client):
self._lambda_client = lambda_client
@@ -111,6 +123,11 @@ class CBCProxyClientBase:
return result
def infer_language_from(self, content):
if non_gsm_characters(content):
return self.LANGUAGE_WELSH
return self.LANGUAGE_ENGLISH
class CBCProxyCanary(CBCProxyClientBase):
"""
@@ -119,6 +136,9 @@ class CBCProxyCanary(CBCProxyClientBase):
"""
lambda_name = 'canary'
LANGUAGE_ENGLISH = None
LANGUAGE_WELSH = None
def send_canary(
self,
identifier,
@@ -129,6 +149,9 @@ class CBCProxyCanary(CBCProxyClientBase):
class CBCProxyEE(CBCProxyClientBase):
lambda_name = 'bt-ee-1-proxy'
LANGUAGE_ENGLISH = 'en-GB'
LANGUAGE_WELSH = 'cy-GB'
def send_link_test(
self,
identifier,
@@ -158,6 +181,7 @@ class CBCProxyEE(CBCProxyClientBase):
'areas': areas,
'sent': sent,
'expires': expires,
'language': self.infer_language_from(description),
}
self._invoke_lambda(payload=payload)
@@ -184,6 +208,9 @@ class CBCProxyEE(CBCProxyClientBase):
class CBCProxyVodafone(CBCProxyClientBase):
lambda_name = 'vodafone-1-proxy'
LANGUAGE_ENGLISH = 'English'
LANGUAGE_WELSH = 'Welsh'
def send_link_test(
self,
identifier,
@@ -215,6 +242,7 @@ class CBCProxyVodafone(CBCProxyClientBase):
'areas': areas,
'sent': sent,
'expires': expires,
'language': self.infer_language_from(description),
}
self._invoke_lambda(payload=payload)

View File

@@ -59,10 +59,18 @@ def test_cbc_proxy_lambda_client_has_correct_keys(cbc_proxy_ee):
assert secret == 'cbc-proxy-aws-secret-access-key'
def test_cbc_proxy_ee_create_and_send_invokes_function(mocker, cbc_proxy_ee):
@pytest.mark.parametrize('description, expected_language', (
('my-description', 'en-GB'),
('mŷ-description', 'cy-GB'),
))
def test_cbc_proxy_ee_create_and_send_invokes_function(
mocker,
cbc_proxy_ee,
description,
expected_language,
):
identifier = 'my-identifier'
headline = 'my-headline'
description = 'my-description'
sent = 'a-passed-through-sent-value'
expires = 'a-passed-through-expires-value'
@@ -117,6 +125,7 @@ def test_cbc_proxy_ee_create_and_send_invokes_function(mocker, cbc_proxy_ee):
assert payload['areas'] == areas
assert payload['sent'] == sent
assert payload['expires'] == expires
assert payload['language'] == expected_language
def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
@@ -175,10 +184,18 @@ def test_cbc_proxy_ee_cancel_invokes_function(mocker, cbc_proxy_ee):
assert payload['sent'] == sent
def test_cbc_proxy_vodafone_create_and_send_invokes_function(mocker, cbc_proxy_vodafone):
@pytest.mark.parametrize('description, expected_language', (
('my-description', 'English'),
('mŷ-description', 'Welsh'),
))
def test_cbc_proxy_vodafone_create_and_send_invokes_function(
mocker,
cbc_proxy_vodafone,
description,
expected_language,
):
identifier = 'my-identifier'
headline = 'my-headline'
description = 'my-description'
sent = 'a-passed-through-sent-value'
expires = 'a-passed-through-expires-value'
@@ -233,6 +250,7 @@ def test_cbc_proxy_vodafone_create_and_send_invokes_function(mocker, cbc_proxy_v
assert payload['areas'] == areas
assert payload['sent'] == sent
assert payload['expires'] == expires
assert payload['language'] == expected_language
def test_cbc_proxy_vodafone_cancel_invokes_function(mocker, cbc_proxy_vodafone):