fix: stop syncing email in panel descriptions

This commit is contained in:
3252a8
2026-05-24 21:36:00 +03:00
parent 00b54e1f15
commit d9a23235e5
8 changed files with 154 additions and 24 deletions
+58
View File
@@ -69,6 +69,64 @@ class ProfileSyncMiddlewareCacheTests(unittest.IsolatedAsyncioTestCase):
get_user.assert_awaited_once()
self.assertEqual(handler.await_count, 2)
async def test_profile_sync_keeps_email_out_of_panel_description(self):
middleware = ProfileSyncMiddleware()
handler = AsyncMock(return_value="ok")
event = SimpleNamespace()
tg_user = SimpleNamespace(
id=42,
username="alice",
first_name="Alice",
last_name="Smith",
)
db_user = SimpleNamespace(
user_id=42,
telegram_id=42,
username="oldalice",
first_name="Old",
last_name="Smith",
email="linked@example.com",
panel_user_uuid="panel-42",
)
panel_service = SimpleNamespace(
update_user_details_on_panel=AsyncMock(return_value={"uuid": "panel-42"})
)
cache_store = {}
async def fake_get(_settings, key):
return cache_store.get(key)
async def fake_set(_settings, key, value, ttl):
cache_store[key] = value
data = {
"session": AsyncMock(),
"event_from_user": tg_user,
"settings": self._settings(),
"panel_service": panel_service,
}
with (
patch.object(profile_sync_module, "cache_get_json", fake_get),
patch.object(profile_sync_module, "cache_set_json", fake_set),
patch.object(
profile_sync_module.user_dal,
"get_user_by_telegram_id",
AsyncMock(return_value=db_user),
),
patch.object(
profile_sync_module.user_dal,
"update_user",
AsyncMock(return_value=db_user),
),
):
result = await middleware(handler, event, data)
self.assertEqual(result, "ok")
panel_service.update_user_details_on_panel.assert_awaited_once()
_, payload = panel_service.update_user_details_on_panel.await_args.args[:2]
self.assertEqual(payload["description"], "alice\nAlice\nSmith")
self.assertEqual(payload["email"], "linked@example.com")
if __name__ == "__main__":
unittest.main()