Release govoplan-mail v0.1.27: stabilize credentials, folder encoding and transport progress
Module Package Release / publish-packages (push) Successful in 11s

This commit is contained in:
2026-09-08 01:32:44 +02:00
parent c62c7783d6
commit 480c18c67c
27 changed files with 2875 additions and 1005 deletions
+39 -1
View File
@@ -563,7 +563,7 @@ class MailProfilePolicyHelperTests(unittest.TestCase):
"credential-1",
)
def test_campaign_delivery_fails_when_policy_requires_local_credentials(self):
def test_campaign_delivery_fails_when_policy_requires_missing_explicit_credentials(self):
profile = SimpleNamespace(imap_config=None)
policy = EffectiveMailProfilePolicy(
smtp_credentials=EffectiveCredentialPolicy(inherit=False),
@@ -572,6 +572,44 @@ class MailProfilePolicyHelperTests(unittest.TestCase):
with self.assertRaisesRegex(MailProfileError, "explicit credential selection"):
_assert_campaign_inherits_profile_credentials(profile, policy)
def test_explicit_mail_credentials_satisfy_independent_protocol_selection_policy(self):
profile = SimpleNamespace(imap_config={"host": "imap.example.test"})
policy = EffectiveMailProfilePolicy(
smtp_credentials=EffectiveCredentialPolicy(inherit=False),
imap_credentials=EffectiveCredentialPolicy(inherit=False),
)
with self.assertRaisesRegex(MailProfileError, "effective IMAP"):
_assert_campaign_inherits_profile_credentials(profile, policy, {"smtp_credential_id": "smtp-credential"})
_assert_campaign_inherits_profile_credentials(profile, policy, {
"smtp_credential_id": "smtp-credential", "imap_credential_id": "imap-credential",
})
# Allowing a default never forbids an explicitly selected Mail credential.
_assert_campaign_inherits_profile_credentials(profile, EffectiveMailProfilePolicy(), {
"smtp_credential_id": "smtp-credential", "imap_credential_id": "imap-credential",
})
def test_credential_selection_false_is_overridable_only_without_an_ancestor_lock(self):
for locked in (False, True):
with self.subTest(locked=locked):
policy = EffectiveMailProfilePolicy()
_merge_policy(policy, {
"smtp_credentials": {"inherit": False},
"allow_lower_level_limits": {"smtp_credentials.inherit": not locked},
}, source="system")
_merge_policy(policy, {
"smtp_credentials": {"inherit": True},
"allow_lower_level_limits": {"smtp_credentials.inherit": True},
}, source="tenant", source_id="tenant-1")
self.assertEqual(policy.smtp_credentials.inherit, not locked)
self.assertEqual(policy.allow_lower_level_limits["smtp_credentials.inherit"], not locked)
def test_null_credential_selection_inherits_the_parent_choice(self):
policy = EffectiveMailProfilePolicy()
_merge_policy(policy, {"smtp_credentials": {"inherit": False}}, source="system")
_merge_policy(policy, {"smtp_credentials": {"inherit": None}}, source="tenant", source_id="tenant-1")
self.assertFalse(policy.smtp_credentials.inherit)
self.assertEqual(policy.smtp_credentials.inherit_source, "system")
def test_merge_policy_respects_locked_lower_level_limits(self):
policy = EffectiveMailProfilePolicy()
_merge_policy(