From 17ee4c3f2b3ff7dd72854ac5c778c9551cfed2ac Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Fri, 9 Dec 2022 16:33:10 -0500 Subject: [PATCH] Use encrypt/decrypt methods in place of signing --- Pipfile | 2 +- Pipfile.lock | 125 +++++++++++------- app/celery/service_callback_tasks.py | 8 +- app/celery/tasks.py | 10 +- app/config.py | 2 +- app/models.py | 20 +-- app/v2/notifications/post_notifications.py | 2 +- .../versions/0381_encrypted_column_types.py | 4 +- .../celery/test_process_ses_receipts_tasks.py | 16 +-- tests/app/celery/test_scheduled_tasks.py | 6 +- .../app/celery/test_service_callback_tasks.py | 4 +- tests/app/celery/test_tasks.py | 114 ++++++++-------- .../app/dao/test_service_callback_api_dao.py | 4 +- tests/app/dao/test_service_inbound_api_dao.py | 4 +- tests/app/test_model.py | 8 +- 15 files changed, 179 insertions(+), 150 deletions(-) diff --git a/Pipfile b/Pipfile index e4d67bd3e..90e7121fc 100644 --- a/Pipfile +++ b/Pipfile @@ -59,7 +59,7 @@ werkzeug = "~=2.1.1" prometheus-client = "==0.14.1" gds-metrics = {version = "==0.2.4", ref = "6f1840a57b6fb1ee40b7e84f2f18ec229de8aa72", git = "https://github.com/alphagov/gds_metrics_python.git"} packaging = "==21.3" -notifications-utils = {editable = true, ref = "bcadde83385a5437215d71dcb6c40ff90d71acfa", git = "https://github.com/GSA/notifications-utils"} +notifications-utils = {editable = true, ref = "main", git = "https://github.com/GSA/notifications-utils"} [dev-packages] flake8 = "==4.0.1" diff --git a/Pipfile.lock b/Pipfile.lock index 2a5710ced..45efea2f3 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "866299b8c725ee7effa00c7ed5cb22cb9db902a134b3f959960cc185254d2265" + "sha256": "f5be0c6621dbbe40f5b5bf4f4b8642189087ec2609a8406c39702d2a892f2415" }, "pipfile-spec": 6, "requires": { @@ -742,7 +742,41 @@ "notifications-utils": { "editable": true, "git": "https://github.com/GSA/notifications-utils", - "ref": "bcadde83385a5437215d71dcb6c40ff90d71acfa" + "ref": "553f4affbef4d0a9e94e9bcf2ceb5c81d92bf032" + }, + "numpy": { + "hashes": [ + "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d", + "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07", + "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df", + "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9", + "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d", + "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a", + "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719", + "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2", + "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280", + "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa", + "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387", + "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1", + "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43", + "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f", + "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398", + "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63", + "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de", + "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8", + "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481", + "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0", + "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d", + "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e", + "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96", + "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb", + "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6", + "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d", + "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a", + "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135" + ], + "markers": "python_version >= '3.8'", + "version": "==1.23.5" }, "orderedset": { "hashes": [ @@ -897,11 +931,11 @@ }, "pypdf2": { "hashes": [ - "sha256:7074034d199a817f3c0190c533a1a64ed4237cc060cdb1ebc3a6da796a2c71c0", - "sha256:f1b0df8cd686d2ed069088b903ec65fb0f53e9c7837adc8139eccfbb7eb9141f" + "sha256:41ff16ee122bad9790d57a4235281a838002d7f1cc8d631d91b6f65d709bd825", + "sha256:e03ef18abcc75da741a0acc1a7749253496887be38cd9887bcce1cee393da45e" ], "markers": "python_version >= '3.6'", - "version": "==2.11.2" + "version": "==2.12.1" }, "pyproj": { "hashes": [ @@ -1088,48 +1122,47 @@ }, "shapely": { "hashes": [ - "sha256:02dd5d7dc6e46515d88874134dc8fcdc65826bca93c3eecee59d1910c42c1b17", - "sha256:0b4ee3132ee90f07d63db3aea316c4c065ed7a26231458dda0874414a09d6ba3", - "sha256:0d885cb0cf670c1c834df3f371de8726efdf711f18e2a75da5cfa82843a7ab65", - "sha256:147066da0be41b147a61f8eb805dea3b13709dbc873a431ccd7306e24d712bc0", - "sha256:21776184516a16bf82a0c3d6d6a312b3cd15a4cabafc61ee01cf2714a82e8396", - "sha256:2e0a8c2e55f1be1312b51c92b06462ea89e6bb703fab4b114e7a846d941cfc40", - "sha256:2fd15397638df291c427a53d641d3e6fd60458128029c8c4f487190473a69a91", - "sha256:3480657460e939f45a7d359ef0e172a081f249312557fe9aa78c4fd3a362d993", - "sha256:370b574c78dc5af3a198a6da5d9b3d7c04654bd2ef7e80e80a3a0992dfb2d9cd", - "sha256:38f0fbbcb8ca20c16451c966c1f527cc43968e121c8a048af19ed3e339a921cd", - "sha256:4728666fff8cccc65a07448cae72c75a8773fea061c3f4f139c44adc429b18c3", - "sha256:48dcfffb9e225c0481120f4bdf622131c8c95f342b00b158cdbe220edbbe20b6", - "sha256:532a55ee2a6c52d23d6f7d1567c8f0473635f3b270262c44e1b0c88096827e22", - "sha256:5d7f85c2d35d39ff53c9216bc76b7641c52326f7e09aaad1789a3611a0f812f2", - "sha256:65b21243d8f6bcd421210daf1fabb9de84de2c04353c5b026173b88d17c1a581", - "sha256:66bdac74fbd1d3458fa787191a90fa0ae610f09e2a5ec398c36f968cc0ed743f", - "sha256:6d388c0c1bd878ed1af4583695690aa52234b02ed35f93a1c8486ff52a555838", - "sha256:6fe855e7d45685926b6ba00aaeb5eba5862611f7465775dacd527e081a8ced6d", - "sha256:753ed0e21ab108bd4282405b9b659f2e985e8502b1a72b978eaa51d3496dee19", - "sha256:783bad5f48e2708a0e2f695a34ed382e4162c795cb2f0368b39528ac1d6db7ed", - "sha256:78fb9d929b8ee15cfd424b6c10879ce1907f24e05fb83310fc47d2cd27088e40", - "sha256:84010db15eb364a52b74ea8804ef92a6a930dfc1981d17a369444b6ddec66efd", - "sha256:8d086591f744be483b34628b391d741e46f2645fe37594319e0a673cc2c26bcf", - "sha256:8e59817b0fe63d34baedaabba8c393c0090f061917d18fc0bcc2f621937a8f73", - "sha256:99a2f0da0109e81e0c101a2b4cd8412f73f5f299e7b5b2deaf64cd2a100ac118", - "sha256:99ab0ddc05e44acabdbe657c599fdb9b2d82e86c5493bdae216c0c4018a82dee", - "sha256:a23ef3882d6aa203dd3623a3d55d698f59bfbd9f8a3bfed52c2da05a7f0f8640", - "sha256:a354199219c8d836f280b88f2c5102c81bb044ccea45bd361dc38a79f3873714", - "sha256:a74631e511153366c6dbe3229fa93f877e3c87ea8369cd00f1d38c76b0ed9ace", - "sha256:ab38f7b5196ace05725e407cb8cab9ff66edb8e6f7bb36a398e8f73f52a7aaa2", - "sha256:adcf8a11b98af9375e32bff91de184f33a68dc48b9cb9becad4f132fa25cfa3c", - "sha256:b65f5d530ba91e49ffc7c589255e878d2506a8b96ffce69d3b7c4500a9a9eaf8", - "sha256:be9423d5a3577ac2e92c7e758bd8a2b205f5e51a012177a590bc46fc51eb4834", - "sha256:c2822111ddc5bcfb116e6c663e403579d0fe3f147d2a97426011a191c43a7458", - "sha256:c6a9a4a31cd6e86d0fbe8473ceed83d4fe760b19d949fb557ef668defafea0f6", - "sha256:d048f93e42ba578b82758c15d8ae037d08e69d91d9872bca5a1895b118f4e2b0", - "sha256:e9c30b311de2513555ab02464ebb76115d242842b29c412f5a9aa0cac57be9f6", - "sha256:ec14ceca36f67cb48b34d02d7f65a9acae15cd72b48e303531893ba4a960f3ea", - "sha256:ef3be705c3eac282a28058e6c6e5503419b250f482320df2172abcbea642c831" + "sha256:11f1b1231a6c04213fb1226c6968d1b1b3b369ec42d1e9655066af87631860ea", + "sha256:13a9f978cd287e0fa95f39904a2bb36deddab490e4fab8bf43eba01b7d9eb58f", + "sha256:17d0f89581aa15f7887052a6adf2753f9fe1c3fdbb6116653972e0d43e720e65", + "sha256:21ba32a6c45b7f8ab7d2d8d5cf339704e2d1dfdf3e2fb465b950a0c9bc894a4f", + "sha256:2287d0cb592c1814e9f48065888af7ee3f13e090e6f7fa3e208b06a83fb2f6af", + "sha256:292c22ff7806e3a25bc4324295e9204169c61a09165d4c9ee0a9784c1709c85e", + "sha256:40c397d67ba609a163d38b649eee2b06c5f9bdc86d244a8e4cd09c6e2791cf3c", + "sha256:44198fc188fe4b7dd39ef0fd325395d1d6ab0c29a7bbaa15663a16c362bf6f62", + "sha256:5477be8c11bf3109f7b804bb2d57536538b8d0a6118207f1020d71338f1a827c", + "sha256:550f110940d79931b6a12a17de07f6b158c9586c4b121f885af11458ae5626d7", + "sha256:56c0e70749f8c2956493e9333375d2e2264ce25c838fc49c3a2ececbf2d3ba92", + "sha256:5fe8649aafe6adcb4d90f7f735f06ca8ca02a16da273d901f1dd02afc0d3618e", + "sha256:6c71738702cf5c3fc60b3bbe869c321b053ea754f57addded540a71c78c2612e", + "sha256:7266080d39946395ba4b31fa35b9b7695e0a4e38ccabf0c67e2936caf9f9b054", + "sha256:73771b3f65c2949cce0b310b9b62b8ce069407ceb497a9dd4436f9a4d059f12c", + "sha256:73d605fcefd06ee997ba307ef363448d355f3c3e81b3f56ed332eaf6d506e1b5", + "sha256:7b2c41514ba985ea3772eee9b386d620784cccb7a459a270a072f3ef01fdd807", + "sha256:820bee508e4a0e564db22f8b55bb5e6e7f326d8d7c103639c42f5d3f378f4067", + "sha256:8a7ba97c97d85c1f07c57f9524c45128ef2bf8279061945d78052c78862b357f", + "sha256:8b9f780c3b79b4a6501e0e8833b1877841b7b0e0a243e77b529fda8f1030afc2", + "sha256:91bbca0378eb82f0808f0e59150ac0952086f4caaab87ad8515a5e55e896c21e", + "sha256:99420c89af78f371b96f0e2bad9afdebc6d0707d4275d157101483e4c4049fd6", + "sha256:a391cae931976fb6d8d15a4f4a92006358e93486454a812dde1d64184041a476", + "sha256:a9b6651812f2caa23e4d06bc06a2ed34450f82cb1c110c170a25b01bbb090895", + "sha256:b1def13ec2a74ebda2210d2fc1c53cecce5a079ec90f341101399427874507f1", + "sha256:b3d97f3ce6df47ca68c2d64b8c3cfa5c8ccc0fbc81ef8e15ff6004a6426e71b1", + "sha256:c47a61b1cd0c5b064c6d912bce7dba78c01f319f65ecccd6e61eecd21861a37a", + "sha256:c4b99a3456e06dc55482569669ece969cdab311f2ad2a1d5622fc770f68cf3cd", + "sha256:d28e19791c9be2ba1cb2fddefa86f73364bdf8334e88dbcd78a8e4494c0af66b", + "sha256:d486cab823f0a978964ae97ca10564ea2b2ced93e84a2ef0b7b62cbacec9d3d2", + "sha256:de3722c68e49fbde8cb6859695bbb8fb9a4d48bbdf34fcf38b7994d2bd9772e2", + "sha256:e4ed31658fd0799eaa3569982aab1a5bc8fcf25ec196606bf137ee4fa984be88", + "sha256:e991ad155783cd0830b895ec8f310fde9e79a7b283776b889a751fb1e7c819fc", + "sha256:eab24b60ae96b7375adceb1f120be818c59bd69db0f3540dc89527d8a371d253", + "sha256:eaea9ddee706654026a84aceb9a3156105917bab3de58fcf150343f847478202", + "sha256:ef98fec4a3aca6d33e3b9fdd680fe513cc7d1c6aedc65ada8a3965601d9d4bcf", + "sha256:f69c418f2040c8593e33b1aba8f2acf890804b073b817535b5d291139d152af5", + "sha256:f96b24da0242791cd6042f6caf074e7a4537a66ca2d1b57d423feb98ba901295" ], - "markers": "python_version >= '3.6'", - "version": "==1.8.5.post1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "six": { "hashes": [ diff --git a/app/celery/service_callback_tasks.py b/app/celery/service_callback_tasks.py index d06f1a173..0e81d38d0 100644 --- a/app/celery/service_callback_tasks.py +++ b/app/celery/service_callback_tasks.py @@ -12,7 +12,7 @@ from app.utils import DATETIME_FORMAT def send_delivery_status_to_service( self, notification_id, encrypted_status_update ): - status_update = encryption.verify_signature(encrypted_status_update) + status_update = encryption.decrypt(encrypted_status_update) data = { "id": str(notification_id), @@ -38,7 +38,7 @@ def send_delivery_status_to_service( @notify_celery.task(bind=True, name="send-complaint", max_retries=5, default_retry_delay=300) def send_complaint_to_service(self, complaint_data): - complaint = encryption.verify_signature(complaint_data) + complaint = encryption.decrypt(complaint_data) data = { "notification_id": complaint['notification_id'], @@ -125,7 +125,7 @@ def create_delivery_status_callback_data(notification, service_callback_api): "template_id": str(notification.template_id), "template_version": notification.template_version, } - return encryption.sign(data) + return encryption.encrypt(data) def create_complaint_callback_data(complaint, notification, service_callback_api, recipient): @@ -138,4 +138,4 @@ def create_complaint_callback_data(complaint, notification, service_callback_api "service_callback_api_url": service_callback_api.url, "service_callback_api_bearer_token": service_callback_api.bearer_token, } - return encryption.sign(data) + return encryption.encrypt(data) diff --git a/app/celery/tasks.py b/app/celery/tasks.py index ca8ad8957..dd37229f1 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -125,7 +125,7 @@ def get_recipient_csv_and_template_and_sender_id(job): def process_row(row, template, job, service, sender_id=None): template_type = template.template_type - encrypted = encryption.sign({ + encrypted = encryption.encrypt({ 'template': str(template.id), 'template_version': job.template_version, 'job': str(job.id), @@ -183,7 +183,7 @@ def save_sms(self, notification_id, encrypted_notification, sender_id=None): - notification = encryption.verify_signature(encrypted_notification) + notification = encryption.decrypt(encrypted_notification) service = SerialisedService.from_id(service_id) template = SerialisedTemplate.from_id_and_service_id( notification['template'], @@ -241,7 +241,7 @@ def save_email(self, notification_id, encrypted_notification, sender_id=None): - notification = encryption.verify_signature(encrypted_notification) + notification = encryption.decrypt(encrypted_notification) service = SerialisedService.from_id(service_id) template = SerialisedTemplate.from_id_and_service_id( @@ -298,7 +298,7 @@ def save_api_sms(self, encrypted_notification): def save_api_email_or_sms(self, encrypted_notification): - notification = encryption.verify_signature(encrypted_notification) + notification = encryption.decrypt(encrypted_notification) service = SerialisedService.from_id(notification['service_id']) q = QueueNames.SEND_EMAIL if notification['notification_type'] == EMAIL_TYPE else QueueNames.SEND_SMS provider_task = provider_tasks.deliver_email if notification['notification_type'] == EMAIL_TYPE \ @@ -348,7 +348,7 @@ def save_letter( notification_id, encrypted_notification, ): - notification = encryption.verify_signature(encrypted_notification) + notification = encryption.decrypt(encrypted_notification) postal_address = PostalAddress.from_personalisation( InsensitiveDict(notification['personalisation']) diff --git a/app/config.py b/app/config.py index 2e73fa813..1344620fb 100644 --- a/app/config.py +++ b/app/config.py @@ -361,7 +361,7 @@ class Development(Config): CONTACT_LIST_BUCKET = _default_s3_credentials('local-contact-list') # credential overrides - DANGEROUS_SALT = 'dev-notify-salt' + DANGEROUS_SALT = 'development-notify-salt' SECRET_KEY = 'dev-notify-secret-key' # nosec B105 - this is only used in development INTERNAL_CLIENT_API_KEYS = {Config.ADMIN_CLIENT_ID: ['dev-notify-secret-key']} ALLOW_EXPIRED_API_TOKEN = getenv('ALLOW_EXPIRED_API_TOKEN', '0') == '1' diff --git a/app/models.py b/app/models.py index bb91bcc79..e2c5c5bed 100644 --- a/app/models.py +++ b/app/models.py @@ -738,13 +738,13 @@ class ServiceInboundApi(db.Model, Versioned): @property def bearer_token(self): if self._bearer_token: - return encryption.verify_signature(self._bearer_token) + return encryption.decrypt(self._bearer_token) return None @bearer_token.setter def bearer_token(self, bearer_token): if bearer_token: - self._bearer_token = encryption.sign(str(bearer_token)) + self._bearer_token = encryption.encrypt(str(bearer_token)) def serialize(self): return { @@ -777,13 +777,13 @@ class ServiceCallbackApi(db.Model, Versioned): @property def bearer_token(self): if self._bearer_token: - return encryption.verify_signature(self._bearer_token) + return encryption.decrypt(self._bearer_token) return None @bearer_token.setter def bearer_token(self, bearer_token): if bearer_token: - self._bearer_token = encryption.sign(str(bearer_token)) + self._bearer_token = encryption.encrypt(str(bearer_token)) def serialize(self): return { @@ -834,13 +834,13 @@ class ApiKey(db.Model, Versioned): @property def secret(self): if self._secret: - return encryption.verify_signature(self._secret) + return encryption.decrypt(self._secret) return None @secret.setter def secret(self, secret): if secret: - self._secret = encryption.sign(str(secret)) + self._secret = encryption.encrypt(str(secret)) KEY_TYPE_NORMAL = 'normal' @@ -1512,12 +1512,12 @@ class Notification(db.Model): @property def personalisation(self): if self._personalisation: - return encryption.verify_signature(self._personalisation) + return encryption.decrypt(self._personalisation) return {} @personalisation.setter def personalisation(self, personalisation): - self._personalisation = encryption.sign(personalisation or {}) + self._personalisation = encryption.encrypt(personalisation or {}) def completed_at(self): if self.status in NOTIFICATION_STATUS_TYPES_COMPLETED: @@ -1960,11 +1960,11 @@ class InboundSms(db.Model): @property def content(self): - return encryption.verify_signature(self._content) + return encryption.decrypt(self._content) @content.setter def content(self, content): - self._content = encryption.sign(content) + self._content = encryption.encrypt(content) def serialize(self): return { diff --git a/app/v2/notifications/post_notifications.py b/app/v2/notifications/post_notifications.py index c6402e735..756c4d846 100644 --- a/app/v2/notifications/post_notifications.py +++ b/app/v2/notifications/post_notifications.py @@ -300,7 +300,7 @@ def save_email_or_sms_to_queue( "status": NOTIFICATION_CREATED, "created_at": datetime.utcnow().strftime(DATETIME_FORMAT), } - encrypted = encryption.sign( + encrypted = encryption.encrypt( data ) diff --git a/migrations/versions/0381_encrypted_column_types.py b/migrations/versions/0381_encrypted_column_types.py index ba50b53d9..64761fd8e 100644 --- a/migrations/versions/0381_encrypted_column_types.py +++ b/migrations/versions/0381_encrypted_column_types.py @@ -14,8 +14,8 @@ down_revision = '0380_bst_to_local' def upgrade(): - pass + op.alter_column("api_keys", "secret", type_=sa.types.String()) def downgrade(): - pass + op.alter_column("api_keys", "secret", type_=sa.types.String(length=255)) diff --git a/tests/app/celery/test_process_ses_receipts_tasks.py b/tests/app/celery/test_process_ses_receipts_tasks.py index 7311f4171..1ec8afcea 100644 --- a/tests/app/celery/test_process_ses_receipts_tasks.py +++ b/tests/app/celery/test_process_ses_receipts_tasks.py @@ -1,5 +1,6 @@ import json from datetime import datetime +from unittest.mock import ANY from freezegun import freeze_time @@ -14,11 +15,8 @@ from app.celery.research_mode_tasks import ( ses_notification_callback, ses_soft_bounce_callback, ) -from app.celery.service_callback_tasks import ( - create_delivery_status_callback_data, -) from app.dao.notifications_dao import get_notification_by_id -from app.models import Complaint, Notification +from app.models import Complaint from tests.app.conftest import create_sample_notification from tests.app.db import ( create_notification, @@ -156,7 +154,7 @@ def test_ses_callback_should_update_notification_status( status='sending', sent_at=datetime.utcnow() ) - callback_api = create_service_callback_api( + create_service_callback_api( service=sample_email_template.service, url="https://original_url.com" ) @@ -167,9 +165,9 @@ def test_ses_callback_should_update_notification_status( "callback.ses.elapsed-time", datetime.utcnow(), notification.sent_at ) statsd_client.incr.assert_any_call("callback.ses.delivered") - updated_notification = Notification.query.get(notification.id) - encrypted_data = create_delivery_status_callback_data(updated_notification, callback_api) - send_mock.assert_called_once_with([str(notification.id), encrypted_data], queue="service-callbacks") + send_mock.assert_called_once_with([str(notification.id), ANY], queue="service-callbacks") + # assert second arg is an encrypted string + assert isinstance(send_mock.call_args.args[0][1], str) def test_ses_callback_should_not_update_notification_status_if_already_delivered(sample_email_template, mocker): @@ -331,7 +329,7 @@ def test_ses_callback_should_send_on_complaint_to_user_callback_api(sample_email response = ses_complaint_callback() assert process_ses_results(response) assert send_mock.call_count == 1 - assert encryption.verify_signature(send_mock.call_args[0][0][0]) == { + assert encryption.decrypt(send_mock.call_args[0][0][0]) == { 'complaint_date': '2018-06-05T13:59:58.000000Z', 'complaint_id': str(Complaint.query.one().id), 'notification_id': str(notification.id), diff --git a/tests/app/celery/test_scheduled_tasks.py b/tests/app/celery/test_scheduled_tasks.py index 36aa7e2db..55298af2c 100644 --- a/tests/app/celery/test_scheduled_tasks.py +++ b/tests/app/celery/test_scheduled_tasks.py @@ -465,7 +465,7 @@ def test_check_for_missing_rows_in_completed_jobs_ignores_old_and_new_jobs( ): mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('multiple_email'), {"sender_id": None})) - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") process_row = mocker.patch('app.celery.scheduled_tasks.process_row') job = create_job( @@ -485,7 +485,7 @@ def test_check_for_missing_rows_in_completed_jobs_ignores_old_and_new_jobs( def test_check_for_missing_rows_in_completed_jobs(mocker, sample_email_template): mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('multiple_email'), {"sender_id": None})) - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") process_row = mocker.patch('app.celery.scheduled_tasks.process_row') job = create_job(template=sample_email_template, @@ -506,7 +506,7 @@ def test_check_for_missing_rows_in_completed_jobs_calls_save_email(mocker, sampl mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('multiple_email'), {'sender_id': None})) save_email_task = mocker.patch('app.celery.tasks.save_email.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value='uuid') job = create_job(template=sample_email_template, diff --git a/tests/app/celery/test_service_callback_tasks.py b/tests/app/celery/test_service_callback_tasks.py index 1996d2239..d5249c678 100644 --- a/tests/app/celery/test_service_callback_tasks.py +++ b/tests/app/celery/test_service_callback_tasks.py @@ -191,7 +191,7 @@ def _set_up_data_for_status_update(callback_api, notification): "template_id": str(notification.template_id), "template_version": notification.template_version, } - encrypted_status_update = encryption.sign(data) + encrypted_status_update = encryption.encrypt(data) return encrypted_status_update @@ -205,5 +205,5 @@ def _set_up_data_for_complaint(callback_api, complaint, notification): "service_callback_api_url": callback_api.url, "service_callback_api_bearer_token": callback_api.bearer_token, } - obscured_status_update = encryption.sign(data) + obscured_status_update = encryption.encrypt(data) return obscured_status_update diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 9556ac0ea..7fda9fd49 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -109,7 +109,7 @@ def test_should_process_sms_job(sample_job, mocker): mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('sms'), {'sender_id': None})) mocker.patch('app.celery.tasks.save_sms.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") process_job(sample_job.id) @@ -117,11 +117,11 @@ def test_should_process_sms_job(sample_job, mocker): service_id=str(sample_job.service.id), job_id=str(sample_job.id) ) - assert encryption.sign.call_args[0][0]['to'] == '+441234123123' - assert encryption.sign.call_args[0][0]['template'] == str(sample_job.template.id) - assert encryption.sign.call_args[0][0]['template_version'] == sample_job.template.version - assert encryption.sign.call_args[0][0]['personalisation'] == {'phonenumber': '+441234123123'} - assert encryption.sign.call_args[0][0]['row_number'] == 0 + assert encryption.encrypt.call_args[0][0]['to'] == '+441234123123' + assert encryption.encrypt.call_args[0][0]['template'] == str(sample_job.template.id) + assert encryption.encrypt.call_args[0][0]['template_version'] == sample_job.template.version + assert encryption.encrypt.call_args[0][0]['personalisation'] == {'phonenumber': '+441234123123'} + assert encryption.encrypt.call_args[0][0]['row_number'] == 0 tasks.save_sms.apply_async.assert_called_once_with( (str(sample_job.service_id), "uuid", @@ -137,7 +137,7 @@ def test_should_process_sms_job_with_sender_id(sample_job, mocker, fake_uuid): mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('sms'), {'sender_id': fake_uuid})) mocker.patch('app.celery.tasks.save_sms.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") process_job(sample_job.id, sender_id=fake_uuid) @@ -211,7 +211,7 @@ def test_should_process_job_if_send_limits_are_not_exceeded( mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('multiple_email'), {"sender_id": None})) mocker.patch('app.celery.tasks.save_email.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") mocker.patch('app.celery.tasks.check_service_over_daily_message_limit', return_value=0) process_job(job.id) @@ -255,7 +255,7 @@ def test_should_process_email_job(email_job_with_placeholders, mocker): """ mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(email_csv, {"sender_id": None})) mocker.patch('app.celery.tasks.save_email.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") process_job(email_job_with_placeholders.id) @@ -264,10 +264,10 @@ def test_should_process_email_job(email_job_with_placeholders, mocker): service_id=str(email_job_with_placeholders.service.id), job_id=str(email_job_with_placeholders.id) ) - assert encryption.sign.call_args[0][0]['to'] == 'test@test.com' - assert encryption.sign.call_args[0][0]['template'] == str(email_job_with_placeholders.template.id) - assert encryption.sign.call_args[0][0]['template_version'] == email_job_with_placeholders.template.version - assert encryption.sign.call_args[0][0]['personalisation'] == {'emailaddress': 'test@test.com', 'name': 'foo'} + assert encryption.encrypt.call_args[0][0]['to'] == 'test@test.com' + assert encryption.encrypt.call_args[0][0]['template'] == str(email_job_with_placeholders.template.id) + assert encryption.encrypt.call_args[0][0]['template_version'] == email_job_with_placeholders.template.version + assert encryption.encrypt.call_args[0][0]['personalisation'] == {'emailaddress': 'test@test.com', 'name': 'foo'} tasks.save_email.apply_async.assert_called_once_with( ( str(email_job_with_placeholders.service_id), @@ -287,7 +287,7 @@ def test_should_process_email_job_with_sender_id(email_job_with_placeholders, mo """ mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(email_csv, {"sender_id": fake_uuid})) mocker.patch('app.celery.tasks.save_email.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") process_job(email_job_with_placeholders.id, sender_id=fake_uuid) @@ -341,7 +341,7 @@ def test_should_process_all_sms_job(sample_job_with_placeholdered_template, mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3', return_value=(load_example_csv('multiple_sms'), {"sender_id": None})) mocker.patch('app.celery.tasks.save_sms.apply_async') - mocker.patch('app.encryption.sign', return_value="something_encrypted") + mocker.patch('app.encryption.encrypt', return_value="something_encrypted") mocker.patch('app.celery.tasks.create_uuid', return_value="uuid") process_job(sample_job_with_placeholdered_template.id) @@ -350,11 +350,11 @@ def test_should_process_all_sms_job(sample_job_with_placeholdered_template, service_id=str(sample_job_with_placeholdered_template.service.id), job_id=str(sample_job_with_placeholdered_template.id) ) - assert encryption.sign.call_args[0][0]['to'] == '+441234123120' - assert encryption.sign.call_args[0][0]['template'] == str(sample_job_with_placeholdered_template.template.id) - assert encryption.sign.call_args[0][0][ + assert encryption.encrypt.call_args[0][0]['to'] == '+441234123120' + assert encryption.encrypt.call_args[0][0]['template'] == str(sample_job_with_placeholdered_template.template.id) + assert encryption.encrypt.call_args[0][0][ 'template_version'] == sample_job_with_placeholdered_template.template.version # noqa - assert encryption.sign.call_args[0][0]['personalisation'] == {'phonenumber': '+441234123120', 'name': 'chris'} + assert encryption.encrypt.call_args[0][0]['personalisation'] == {'phonenumber': '+441234123120', 'name': 'chris'} assert tasks.save_sms.apply_async.call_count == 10 job = jobs_dao.dao_get_job_by_id(sample_job_with_placeholdered_template.id) assert job.job_status == 'finished' @@ -374,7 +374,7 @@ def test_should_process_all_sms_job(sample_job_with_placeholdered_template, def test_process_row_sends_letter_task(template_type, research_mode, expected_function, expected_queue, mocker): mocker.patch('app.celery.tasks.create_uuid', return_value='noti_uuid') task_mock = mocker.patch('app.celery.tasks.{}.apply_async'.format(expected_function)) - encrypt_mock = mocker.patch('app.celery.tasks.encryption.sign') + encrypt_mock = mocker.patch('app.celery.tasks.encryption.encrypt') template = Mock(id='template_id', template_type=template_type) job = Mock(id='job_id', template_version='temp_vers') service = Mock(id='service_id', research_mode=research_mode) @@ -417,7 +417,7 @@ def test_process_row_sends_letter_task(template_type, research_mode, expected_fu def test_process_row_when_sender_id_is_provided(mocker, fake_uuid): mocker.patch('app.celery.tasks.create_uuid', return_value='noti_uuid') task_mock = mocker.patch('app.celery.tasks.save_sms.apply_async') - encrypt_mock = mocker.patch('app.celery.tasks.encryption.sign') + encrypt_mock = mocker.patch('app.celery.tasks.encryption.encrypt') template = Mock(id='template_id', template_type=SMS_TYPE) job = Mock(id='job_id', template_version='temp_vers') service = Mock(id='service_id', research_mode=False) @@ -460,7 +460,7 @@ def test_should_send_template_to_correct_sms_task_and_persist(sample_template_wi save_sms( sample_template_with_placeholders.service_id, uuid.uuid4(), - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -473,7 +473,6 @@ def test_should_send_template_to_correct_sms_task_and_persist(sample_template_wi assert not persisted_notification.sent_by assert not persisted_notification.job_id assert persisted_notification.personalisation == {'name': 'Jo'} - assert persisted_notification._personalisation == encryption.sign({"name": "Jo"}) assert persisted_notification.notification_type == 'sms' mocked_deliver_sms.assert_called_once_with( [str(persisted_notification.id)], @@ -495,7 +494,7 @@ def test_should_put_save_sms_task_in_research_mode_queue_if_research_mode_servic save_sms( template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() provider_tasks.deliver_sms.apply_async.assert_called_once_with( @@ -514,7 +513,7 @@ def test_should_save_sms_if_restricted_service_and_valid_number(notify_db_sessio mocker.patch('app.celery.provider_tasks.deliver_sms.apply_async') notification_id = uuid.uuid4() - encrypt_notification = encryption.sign(notification) + encrypt_notification = encryption.encrypt(notification) save_sms( service.id, notification_id, @@ -550,7 +549,7 @@ def test_save_email_should_save_default_email_reply_to_text_on_notification(noti save_email( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -568,7 +567,7 @@ def test_save_sms_should_save_default_smm_sender_notification_reply_to_text_on(n save_sms( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -587,7 +586,7 @@ def test_should_not_save_sms_if_restricted_service_and_invalid_number(notify_db_ save_sms( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) assert provider_tasks.deliver_sms.apply_async.called is False assert Notification.query.count() == 0 @@ -603,7 +602,7 @@ def test_should_not_save_email_if_restricted_service_and_invalid_email_address(n save_email( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) assert Notification.query.count() == 0 @@ -625,7 +624,7 @@ def test_should_put_save_email_task_in_research_mode_queue_if_research_mode_serv save_email( template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -648,7 +647,7 @@ def test_should_save_sms_template_to_and_persist_with_job_id(sample_job, mocker) save_sms( sample_job.service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() assert persisted_notification.to == '+447234123123' @@ -685,7 +684,7 @@ def test_should_not_save_sms_if_team_key_and_recipient_not_in_team(notify_db_ses save_sms( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) assert provider_tasks.deliver_sms.apply_async.called is False assert Notification.query.count() == 0 @@ -708,7 +707,7 @@ def test_should_use_email_template_and_persist(sample_email_template_with_placeh save_email( sample_email_template_with_placeholders.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -721,7 +720,6 @@ def test_should_use_email_template_and_persist(sample_email_template_with_placeh assert not persisted_notification.sent_by assert persisted_notification.job_row_number == 1 assert persisted_notification.personalisation == {'name': 'Jo'} - assert persisted_notification._personalisation == encryption.sign({"name": "Jo"}) assert persisted_notification.api_key_id is None assert persisted_notification.key_type == KEY_TYPE_NORMAL assert persisted_notification.notification_type == 'email' @@ -747,7 +745,7 @@ def test_save_email_should_use_template_version_from_job_not_latest(sample_email save_email( sample_email_template.service_id, uuid.uuid4(), - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -773,7 +771,7 @@ def test_should_use_email_template_subject_placeholders(sample_email_template_wi save_email( sample_email_template_with_placeholders.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() assert persisted_notification.to == 'my_email@my_email.com' @@ -802,7 +800,7 @@ def test_save_email_uses_the_reply_to_text_when_provided(sample_email_template, save_email( sample_email_template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), sender_id=other_email_reply_to.id, ) persisted_notification = Notification.query.one() @@ -821,7 +819,7 @@ def test_save_email_uses_the_default_reply_to_text_if_sender_id_is_none(sample_e save_email( sample_email_template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), sender_id=None, ) persisted_notification = Notification.query.one() @@ -839,7 +837,7 @@ def test_should_use_email_template_and_persist_without_personalisation(sample_em save_email( sample_email_template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() assert persisted_notification.to == 'my_email@my_email.com' @@ -870,7 +868,7 @@ def test_save_sms_should_go_to_retry_queue_if_database_errors(sample_template, m save_sms( sample_template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) assert provider_tasks.deliver_sms.apply_async.called is False tasks.save_sms.retry.assert_called_with(exc=expected_exception, queue="retry-tasks") @@ -893,7 +891,7 @@ def test_save_email_should_go_to_retry_queue_if_database_errors(sample_email_tem save_email( sample_email_template.service_id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) assert not provider_tasks.deliver_email.apply_async.called tasks.save_email.retry.assert_called_with(exc=expected_exception, queue="retry-tasks") @@ -911,7 +909,7 @@ def test_save_email_does_not_send_duplicate_and_does_not_put_in_retry_queue(samp save_email( sample_notification.service_id, notification_id, - encryption.sign(json), + encryption.encrypt(json), ) assert Notification.query.count() == 1 assert not deliver_email.called @@ -928,7 +926,7 @@ def test_save_sms_does_not_send_duplicate_and_does_not_put_in_retry_queue(sample save_sms( sample_notification.service_id, notification_id, - encryption.sign(json), + encryption.encrypt(json), ) assert Notification.query.count() == 1 assert not deliver_sms.called @@ -998,7 +996,7 @@ def test_save_letter_saves_letter_to_database( save_letter( job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1042,7 +1040,7 @@ def test_save_letter_saves_letter_to_database_with_correct_postage( save_letter( letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1075,7 +1073,7 @@ def test_save_letter_saves_letter_to_database_with_correct_client_reference( save_letter( letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1100,7 +1098,7 @@ def test_save_letter_saves_letter_to_database_with_formatted_postcode(mocker, no save_letter( letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1139,7 +1137,7 @@ def test_save_letter_saves_letter_to_database_right_reply_to(mocker, notify_db_s save_letter( job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1201,7 +1199,7 @@ def test_save_letter_uses_template_reply_to_text(mocker, notify_db_session): save_letter( job.service_id, uuid.uuid4(), - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification_db = Notification.query.one() @@ -1219,7 +1217,7 @@ def test_save_sms_uses_sms_sender_reply_to_text(mocker, notify_db_session): save_sms( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), ) persisted_notification = Notification.query.one() @@ -1238,7 +1236,7 @@ def test_save_sms_uses_non_default_sms_sender_reply_to_text_if_provided(mocker, save_sms( service.id, notification_id, - encryption.sign(notification), + encryption.encrypt(notification), sender_id=new_sender.id, ) @@ -1276,7 +1274,7 @@ def test_save_letter_sets_delivered_letters_as_pdf_permission_in_research_mode_i save_letter( sample_letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) notification = Notification.query.filter(Notification.id == notification_id).one() @@ -1314,7 +1312,7 @@ def test_save_letter_calls_create_fake_response_for_letters_in_research_mode_on_ save_letter( sample_letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) mock_create_fake_letter_response_file.assert_called_once_with( @@ -1345,7 +1343,7 @@ def test_save_letter_calls_get_pdf_for_templated_letter_task_not_in_research( save_letter( sample_letter_job.service_id, notification_id, - encryption.sign(notification_json), + encryption.encrypt(notification_json), ) assert mock_create_letters_pdf.called @@ -1843,7 +1841,7 @@ def test_save_api_email_or_sms(mocker, sample_service, notification_type): data.update({"to": "+447700900855"}) expected_queue = QueueNames.SEND_SMS - encrypted = encryption.sign( + encrypted = encryption.encrypt( data ) @@ -1890,7 +1888,7 @@ def test_save_api_email_dont_retry_if_notification_already_exists(sample_service data.update({"to": "+447700900855"}) expected_queue = QueueNames.SEND_SMS - encrypted = encryption.sign( + encrypted = encryption.encrypt( data ) assert len(Notification.query.all()) == 0 @@ -1953,7 +1951,7 @@ def test_save_tasks_use_cached_service_and_template( task_function( service.id, uuid.uuid4(), - encryption.sign(notification), + encryption.encrypt(notification), ) # We talk to the database once for the service and once for the @@ -1995,7 +1993,7 @@ def test_save_api_tasks_use_cache( api_key = create_api_key(service=template.service) def create_encrypted_notification(): - return encryption.sign({ + return encryption.encrypt({ "to": recipient, "id": str(uuid.uuid4()), "template_id": str(template.id), diff --git a/tests/app/dao/test_service_callback_api_dao.py b/tests/app/dao/test_service_callback_api_dao.py index 573cf5b72..504e470d8 100644 --- a/tests/app/dao/test_service_callback_api_dao.py +++ b/tests/app/dao/test_service_callback_api_dao.py @@ -40,7 +40,7 @@ def test_save_service_callback_api(sample_service): assert versioned.service_id == sample_service.id assert versioned.updated_by_id == sample_service.users[0].id assert versioned.url == "https://some_service/callback_endpoint" - assert encryption.verify_signature(versioned._bearer_token) == "some_unique_string" + assert encryption.decrypt(versioned._bearer_token) == "some_unique_string" assert versioned.updated_at is None assert versioned.version == 1 @@ -140,7 +140,7 @@ def test_update_service_callback_api(sample_service): assert x.id is not None assert x.service_id == sample_service.id assert x.updated_by_id == sample_service.users[0].id - assert encryption.verify_signature(x._bearer_token) == "some_unique_string" + assert encryption.decrypt(x._bearer_token) == "some_unique_string" def test_get_service_callback_api(sample_service): diff --git a/tests/app/dao/test_service_inbound_api_dao.py b/tests/app/dao/test_service_inbound_api_dao.py index 6f7f57af5..26a750533 100644 --- a/tests/app/dao/test_service_inbound_api_dao.py +++ b/tests/app/dao/test_service_inbound_api_dao.py @@ -40,7 +40,7 @@ def test_save_service_inbound_api(sample_service): assert versioned.service_id == sample_service.id assert versioned.updated_by_id == sample_service.users[0].id assert versioned.url == "https://some_service/inbound_messages" - assert encryption.verify_signature(versioned._bearer_token) == "some_unique_string" + assert encryption.decrypt(versioned._bearer_token) == "some_unique_string" assert versioned.updated_at is None assert versioned.version == 1 @@ -97,7 +97,7 @@ def test_update_service_inbound_api(sample_service): assert x.id is not None assert x.service_id == sample_service.id assert x.updated_by_id == sample_service.users[0].id - assert encryption.verify_signature(x._bearer_token) == "some_unique_string" + assert encryption.decrypt(x._bearer_token) == "some_unique_string" def test_get_service_inbound_api(sample_service): diff --git a/tests/app/test_model.py b/tests/app/test_model.py index 57c4b40cd..a7f394db9 100644 --- a/tests/app/test_model.py +++ b/tests/app/test_model.py @@ -154,9 +154,9 @@ def test_notification_personalisation_getter_returns_empty_dict_from_None(): assert noti.personalisation == {} -def test_notification_personalisation_getter_always_returns_empty_dict(): +def test_notification_personalisation_getter_always_returns_empty_dict(notify_api): noti = Notification() - noti._personalisation = encryption.sign({}) + noti._personalisation = encryption.encrypt({}) assert noti.personalisation == {} @@ -164,11 +164,11 @@ def test_notification_personalisation_getter_always_returns_empty_dict(): None, {} ]) -def test_notification_personalisation_setter_always_sets_empty_dict(input_value): +def test_notification_personalisation_setter_always_sets_empty_dict(notify_api, input_value): noti = Notification() noti.personalisation = input_value - assert noti._personalisation == encryption.sign({}) + assert noti.personalisation == {} def test_notification_subject_is_none_for_sms(sample_service):