From 89311dffe92c65e0e64476131534475c6d775561 Mon Sep 17 00:00:00 2001 From: Carina Antunes <carina.oliveira.antunes@cern.ch> Date: Thu, 14 Apr 2022 16:29:25 +0200 Subject: [PATCH] [HOTFIX] Handle unconfirmed identities --- notifications_routing/config.py | 3 ++- .../postgres/postgres_data_source.py | 7 ++++++- tests/unit/test_postgres_data_source.py | 20 +++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/notifications_routing/config.py b/notifications_routing/config.py index 5a51884..90d773e 100644 --- a/notifications_routing/config.py +++ b/notifications_routing/config.py @@ -31,7 +31,8 @@ class Config: ) CERN_GROUP_URL = os.getenv("CERN_GROUP_URL", "https://authorization-service-api.web.cern.ch/api/v1.0/Group") CERN_GROUP_QUERY = os.getenv( - "CERN_GROUP_QUERY", "memberidentities?field=upn&field=primaryAccountEmail&recursive=true" + "CERN_GROUP_QUERY", + "memberidentities/precomputed?field=upn&field=primaryAccountEmail" "&field=unconfirmed&field=unconfirmedEmail", ) # DB diff --git a/notifications_routing/data_source/postgres/postgres_data_source.py b/notifications_routing/data_source/postgres/postgres_data_source.py index b9afac7..8e5fd6f 100644 --- a/notifications_routing/data_source/postgres/postgres_data_source.py +++ b/notifications_routing/data_source/postgres/postgres_data_source.py @@ -175,7 +175,12 @@ class PostgresDataSource(DataSource): members = content["data"] for member in members: - group_users.append({DataSource.USERNAME: member["upn"], DataSource.EMAIL: member["primaryAccountEmail"]}) + if member["unconfirmed"]: + user = {DataSource.USERNAME: member["unconfirmedEmail"], DataSource.EMAIL: member["unconfirmedEmail"]} + else: + user = {DataSource.USERNAME: member["upn"], DataSource.EMAIL: member["primaryAccountEmail"]} + + group_users.append(user) return group_users diff --git a/tests/unit/test_postgres_data_source.py b/tests/unit/test_postgres_data_source.py index cdb2cec..a6c03eb 100644 --- a/tests/unit/test_postgres_data_source.py +++ b/tests/unit/test_postgres_data_source.py @@ -135,9 +135,25 @@ def test_get_channel_unsubscribed_users_(mock_get_scalar, db_mock, channel): @mock.patch("notifications_routing.data_source.postgres.postgres_data_source.get_group_users_api") def test_get_group_users(mock_get_group_users_api, db_mock): """Test get group users.""" - mock_get_group_users_api.return_value = {"data": [{"upn": "testuser", "primaryAccountEmail": "testuser@cern.ch"}]} + mock_get_group_users_api.return_value = { + "data": [ + { + "upn": "testuser", + "primaryAccountEmail": "testuser@cern.ch", + "unconfirmed": False, + "unconfirmedEmail": None, + }, + { + "upn": None, + "primaryAccountEmail": None, + "unconfirmed": True, + "unconfirmedEmail": "unconfirmedEmail@mail.ch", + }, + ] + } assert db_mock.get_group_users("186d8dfc-2774-43a8-91b5-a887fcb6ba4a") == [ - {"username": "testuser", "email": "testuser@cern.ch"} + {"username": "testuser", "email": "testuser@cern.ch"}, + {"username": "unconfirmedEmail@mail.ch", "email": "unconfirmedEmail@mail.ch"}, ] mock_get_group_users_api.assert_called_once_with("186d8dfc-2774-43a8-91b5-a887fcb6ba4a") -- GitLab