feat(mail): enforce owned profile self-service
This commit is contained in:
@@ -34,6 +34,7 @@ class MailProfileDeletionRouteTests(unittest.TestCase):
|
||||
tenant_id="tenant-1",
|
||||
user=SimpleNamespace(id="user-1"),
|
||||
api_key_id=None,
|
||||
has=lambda _scope: False,
|
||||
)
|
||||
self.profile = SimpleNamespace(
|
||||
id="profile-1",
|
||||
@@ -48,7 +49,7 @@ class MailProfileDeletionRouteTests(unittest.TestCase):
|
||||
with (
|
||||
patch("govoplan_mail.backend.router.get_mail_server_profile", return_value=self.profile),
|
||||
patch("govoplan_mail.backend.router._require_profile_write_scope"),
|
||||
patch("govoplan_mail.backend.router._require_profile_credentials_scope"),
|
||||
patch("govoplan_mail.backend.router._require_profile_credentials_scope") as require_credentials,
|
||||
patch("govoplan_mail.backend.router.delete_mail_profile_credentials", return_value=()),
|
||||
patch("govoplan_mail.backend.router.clear_mailbox_index") as clear_index,
|
||||
patch("govoplan_mail.backend.router._record_mail_change") as record_change,
|
||||
@@ -61,6 +62,32 @@ class MailProfileDeletionRouteTests(unittest.TestCase):
|
||||
self.assertEqual(session.rollbacks, 0)
|
||||
clear_index.assert_called_once_with(session, profile_id="profile-1")
|
||||
record_change.assert_not_called()
|
||||
require_credentials.assert_not_called()
|
||||
|
||||
def test_delete_requires_secret_authority_when_credentials_will_be_deleted(self) -> None:
|
||||
self.profile.is_active = True
|
||||
self.profile.smtp_password_encrypted = "existing-ciphertext"
|
||||
self.profile.imap_password_encrypted = None
|
||||
session = _Session()
|
||||
with (
|
||||
patch("govoplan_mail.backend.router.get_mail_server_profile", return_value=self.profile),
|
||||
patch("govoplan_mail.backend.router._require_profile_write_scope"),
|
||||
patch("govoplan_mail.backend.router._require_profile_credentials_scope") as require_credentials,
|
||||
patch(
|
||||
"govoplan_mail.backend.router.delete_mail_profile_credentials",
|
||||
return_value=("smtp",),
|
||||
),
|
||||
patch("govoplan_mail.backend.router.clear_mailbox_index"),
|
||||
patch("govoplan_mail.backend.router._record_mail_change"),
|
||||
patch("govoplan_mail.backend.router._profile_response", return_value=self.profile),
|
||||
):
|
||||
deactivate_profile("profile-1", principal=self.principal, session=session)
|
||||
|
||||
require_credentials.assert_called_once_with(
|
||||
self.principal,
|
||||
"tenant",
|
||||
"tenant-1",
|
||||
)
|
||||
|
||||
def test_change_feed_reports_whether_credentials_were_deleted(self) -> None:
|
||||
self.profile.is_active = True
|
||||
|
||||
Reference in New Issue
Block a user