fix(notifications): enforce personal source mutes
This commit is contained in:
@@ -551,6 +551,93 @@ class NotificationServiceTests(unittest.TestCase):
|
||||
self.assertEqual(["calendar", "campaign"], response["muted_source_modules"])
|
||||
self.assertFalse(summary["show_unread_badge"])
|
||||
|
||||
def test_personal_source_mutes_apply_across_recipient_identifiers(self) -> None:
|
||||
with self.Session() as session:
|
||||
postbox = create_notification(
|
||||
session,
|
||||
tenant_id="tenant-1",
|
||||
payload=NotificationCreateRequest(
|
||||
source_module="postbox",
|
||||
source_resource_type="postbox",
|
||||
event_kind="postbox.assignment.newly_visible.v1",
|
||||
channel="inbox",
|
||||
recipient_type="account",
|
||||
recipient_id="account-1",
|
||||
subject="Postbox responsibility changed",
|
||||
enqueue_delivery=False,
|
||||
),
|
||||
)
|
||||
calendar = create_notification(
|
||||
session,
|
||||
tenant_id="tenant-1",
|
||||
payload=NotificationCreateRequest(
|
||||
source_module="calendar",
|
||||
source_resource_type="calendar_event",
|
||||
event_kind="calendar.reminder.v1",
|
||||
channel="inbox",
|
||||
recipient_type="account",
|
||||
recipient_id="account-1",
|
||||
subject="Calendar reminder",
|
||||
enqueue_delivery=False,
|
||||
),
|
||||
)
|
||||
update_notification_preferences(
|
||||
session,
|
||||
tenant_id="tenant-1",
|
||||
user_id="user-1",
|
||||
payload=NotificationPreferencesUpdateRequest(
|
||||
muted_source_modules=["postbox"],
|
||||
),
|
||||
)
|
||||
principal = self._principal(
|
||||
tenant_id="tenant-1",
|
||||
user_id="user-1",
|
||||
account_id="account-1",
|
||||
scopes={"notifications:notification:read"},
|
||||
)
|
||||
|
||||
personal = api_list_notifications(
|
||||
status_filter=None,
|
||||
channel=None,
|
||||
source_module=None,
|
||||
recipient_id=None,
|
||||
view="personal",
|
||||
limit=100,
|
||||
session=session,
|
||||
principal=principal,
|
||||
)
|
||||
personal_summary = api_notification_summary(
|
||||
view="personal",
|
||||
session=session,
|
||||
principal=principal,
|
||||
)
|
||||
tenant_admin = self._principal(
|
||||
tenant_id="tenant-1",
|
||||
user_id="user-1",
|
||||
account_id="account-1",
|
||||
scopes={
|
||||
"notifications:notification:read",
|
||||
"notifications:notification:admin",
|
||||
},
|
||||
)
|
||||
tenant_view = api_list_notifications(
|
||||
status_filter=None,
|
||||
channel=None,
|
||||
source_module=None,
|
||||
recipient_id=None,
|
||||
view="tenant",
|
||||
limit=100,
|
||||
session=session,
|
||||
principal=tenant_admin,
|
||||
)
|
||||
|
||||
self.assertEqual([calendar.id], [item.id for item in personal.notifications])
|
||||
self.assertEqual(1, personal_summary.total)
|
||||
self.assertEqual(
|
||||
{postbox.id, calendar.id},
|
||||
{item.id for item in tenant_view.notifications},
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user