|
@@ -1,34 +1,79 @@
|
|
import pytest
|
|
import pytest
|
|
|
|
|
|
|
|
+from app import config
|
|
from app.handler.unsubscribe_encoder import (
|
|
from app.handler.unsubscribe_encoder import (
|
|
UnsubscribeData,
|
|
UnsubscribeData,
|
|
UnsubscribeAction,
|
|
UnsubscribeAction,
|
|
UnsubscribeEncoder,
|
|
UnsubscribeEncoder,
|
|
)
|
|
)
|
|
|
|
|
|
-legacy_test_data = [
|
|
|
|
|
|
+legacy_subject_test_data = [
|
|
("3=", UnsubscribeData(UnsubscribeAction.DisableAlias, 3)),
|
|
("3=", UnsubscribeData(UnsubscribeAction.DisableAlias, 3)),
|
|
("438_", UnsubscribeData(UnsubscribeAction.DisableContact, 438)),
|
|
("438_", UnsubscribeData(UnsubscribeAction.DisableContact, 438)),
|
|
("4325*", UnsubscribeData(UnsubscribeAction.UnsubscribeNewsletter, 4325)),
|
|
("4325*", UnsubscribeData(UnsubscribeAction.UnsubscribeNewsletter, 4325)),
|
|
]
|
|
]
|
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize("serialized_data, expected", legacy_test_data)
|
|
|
|
-def test_decode_legacy_unsub(serialized_data, expected):
|
|
|
|
- info = UnsubscribeEncoder.decode(serialized_data)
|
|
|
|
- assert expected == info
|
|
|
|
|
|
+@pytest.mark.parametrize("expected_subject, expected_deco", legacy_subject_test_data)
|
|
|
|
+def test_legacy_unsub_subject(expected_subject, expected_deco):
|
|
|
|
+ info = UnsubscribeEncoder.decode_subject(expected_subject)
|
|
|
|
+ assert expected_deco == info
|
|
|
|
+ subject = UnsubscribeEncoder.encode_subject(
|
|
|
|
+ expected_deco.action, expected_deco.data
|
|
|
|
+ )
|
|
|
|
+ assert expected_subject == subject
|
|
|
|
|
|
|
|
|
|
-encode_decode_test_data = [
|
|
|
|
- UnsubscribeData(UnsubscribeAction.DisableContact, 3),
|
|
|
|
- UnsubscribeData(UnsubscribeAction.DisableContact, 10),
|
|
|
|
- UnsubscribeData(UnsubscribeAction.DisableAlias, 101),
|
|
|
|
|
|
+legacy_url_test_data = [
|
|
|
|
+ (
|
|
|
|
+ f"{config.URL}/dashboard/unsubscribe/3",
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableAlias, 3),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ f"{config.URL}/dashboard/block_contact/5",
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableContact, 5),
|
|
|
|
+ ),
|
|
]
|
|
]
|
|
|
|
|
|
|
|
|
|
-@pytest.mark.parametrize("unsub_data", encode_decode_test_data)
|
|
|
|
-def test_encode_decode_unsub(unsub_data):
|
|
|
|
- encoded = UnsubscribeEncoder.encode(unsub_data)
|
|
|
|
- decoded = UnsubscribeEncoder.decode(encoded)
|
|
|
|
- assert unsub_data.action == decoded.action
|
|
|
|
- assert unsub_data.data == decoded.data
|
|
|
|
|
|
+@pytest.mark.parametrize("expected_url, unsub_data", legacy_url_test_data)
|
|
|
|
+def test_encode_decode_unsub_subject(expected_url, unsub_data):
|
|
|
|
+ url = UnsubscribeEncoder.encode_url(unsub_data.action, unsub_data.data)
|
|
|
|
+ assert expected_url == url
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+legacy_mail_or_link_test_data = [
|
|
|
|
+ (
|
|
|
|
+ f"{config.URL}/dashboard/unsubscribe/3",
|
|
|
|
+ False,
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableAlias, 3),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "9=",
|
|
|
|
+ True,
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableAlias, 9),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ f"{config.URL}/dashboard/block_contact/8",
|
|
|
|
+ False,
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableContact, 8),
|
|
|
|
+ ),
|
|
|
|
+ (
|
|
|
|
+ "8_",
|
|
|
|
+ True,
|
|
|
|
+ UnsubscribeData(UnsubscribeAction.DisableContact, 8),
|
|
|
|
+ ),
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@pytest.mark.parametrize(
|
|
|
|
+ "expected_link, via_mail, unsub_data", legacy_mail_or_link_test_data
|
|
|
|
+)
|
|
|
|
+def test_encode_legacy_link(expected_link, via_mail, unsub_data):
|
|
|
|
+ if via_mail:
|
|
|
|
+ config.UNSUBSCRIBER = "me@nowhere.net"
|
|
|
|
+ else:
|
|
|
|
+ config.UNSUBSCRIBER = None
|
|
|
|
+ link_info = UnsubscribeEncoder.encode(unsub_data.action, unsub_data.data)
|
|
|
|
+ assert via_mail == link_info.via_email
|
|
|
|
+ assert expected_link == link_info.link
|