Ejemplo n.º 1
0
    def test_confirm_link_substitutions(self, settings):
        template = "{{confirm_link}}"
        token = Token(b"token")

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                "subscribe.subject.txt": template,
                "subscribe.txt": template,
                "subscribe.html": template,
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_confirmation_request_msg(Email("email@local"),
                                                    action=Action.subscribe,
                                                    confirm_token=token)

        expected_link = (
            "https://test.local/subscribe/confirm/email%40local?token=" +
            quote(token.to_string()))
        assert msg["Subject"] == expected_link
        assert (msg.get_body("plain").get_content().strip() ==
                expected_link  # type: ignore
                )
        assert (msg.get_body("html").get_content().strip() ==
                expected_link  # type: ignore
                )
Ejemplo n.º 2
0
    def test_urlquote(self, feed_item, settings):
        subject = "{{ '@' | urlquote }}"
        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                f"new-post.subject.txt": subject,
                "new-post.txt": "",
                "new-post.html": "",
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_new_post_msg(feed_item, Email("email"))

        assert msg["Subject"] == "%40"
Ejemplo n.º 3
0
    def test_include_binary_and_b64encode(self, feed_item, settings):
        binary_content = b"binary content"
        subject = "{{ include_binary('bin') | b64encode }}"
        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                f"new-post.subject.txt": subject,
                "new-post.txt": "",
                "new-post.html": "",
            }),
            binary_loader=MockBinaryLoader({"bin": binary_content}),
        )
        msg = provider.get_new_post_msg(feed_item, Email("email"))

        assert msg["Subject"] == b64encode(binary_content).decode("ascii")
Ejemplo n.º 4
0
    def test_subject_substitutions(self, feed_item, settings):
        subject = "{{display_name}} {{host}} {{to_email}} {{post.title}}"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                "new-post.subject.txt": subject,
                "new-post.txt": "",
                "new-post.html": "",
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_new_post_msg(feed_item, Email("email"))

        assert msg[
            "Subject"] == f"{settings.display_name} {settings.host} email title"
Ejemplo n.º 5
0
def settings():
    return EmailFromTemplateProvider.Settings(
        display_name="display_name",
        sender="sender <*****@*****.**>",
        host="test.local",
        confirm_url_format=
        "https://{host}/{action}/confirm/{email}?token={token}",
    )
Ejemplo n.º 6
0
    def test_include_binary_and_b64encode(self, settings):
        binary_content = b"binary content"
        subject = "{{ include_binary('bin') | b64encode }}"
        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                f"subscribe.subject.txt": subject,
                "subscribe.txt": "",
                "subscribe.html": "",
            }),
            binary_loader=MockBinaryLoader({"bin": binary_content}),
        )
        msg = provider.get_confirmation_request_msg(
            Email("email"),
            action=Action.subscribe,
            confirm_token=Token(b"token"))

        assert msg["Subject"] == b64encode(binary_content).decode("ascii")
Ejemplo n.º 7
0
    def test_body_substitutions(self, feed_item, settings):
        subject = "subject"
        template = "{{subject}} {{display_name}} {{host}} {{to_email}} {{post.title}}"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                "new-post.subject.txt": subject,
                "new-post.txt": template,
                "new-post.html": template,
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_new_post_msg(feed_item, Email("email"))

        assert (
            msg.get_body("plain").get_content().strip()  # type: ignore
            == f"{subject} {settings.display_name} {settings.host} email title"
        )
Ejemplo n.º 8
0
    def test_subject_substitutions(self, settings):
        subject = "{{display_name}} {{host}} {{to_email}}"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                "subscribe.subject.txt": subject,
                "subscribe.txt": "",
                "subscribe.html": "",
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_confirmation_request_msg(
            Email("email"),
            action=Action.subscribe,
            confirm_token=Token(b"token"))

        assert msg[
            "Subject"] == f"{settings.display_name} {settings.host} email"
Ejemplo n.º 9
0
    def test_body_substitutions(self, settings):
        subject = "subject"
        template = "{{subject}} {{display_name}} {{host}} {{to_email}}"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                "subscribe.subject.txt": subject,
                "subscribe.txt": template,
                "subscribe.html": template,
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_confirmation_request_msg(
            Email("email"),
            action=Action.subscribe,
            confirm_token=Token(b"token"))

        assert (msg.get_body("plain").get_content().strip()  # type: ignore
                == f"{subject} {settings.display_name} {settings.host} email")
Ejemplo n.º 10
0
    def test_constructs_email_message_from_templates(self, feed_item,
                                                     settings):
        to_email = Email("*****@*****.**")
        subject = "subject"
        plain_text = "plain text"
        html = "html"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                f"new-post.subject.txt": subject,
                f"new-post.txt": plain_text,
                f"new-post.html": html,
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_new_post_msg(feed_item, Email("email"))

        assert msg["Subject"] == subject
        assert msg.get_body(
            "plain").get_content().strip() == plain_text  # type: ignore
        assert msg.get_body(
            "html").get_content().strip() == html  # type: ignore
Ejemplo n.º 11
0
    def test_constructs_email_message_from_templates(self, action, settings):
        to_email = Email("*****@*****.**")
        subject = "subject"
        plain_text = "plain text"
        html = "html"

        provider = EmailFromTemplateProvider(
            settings=settings,
            template_loader=MockTemplateLoader({
                f"{action.name}.subject.txt": subject,
                f"{action.name}.txt": plain_text,
                f"{action.name}.html": html,
            }),
            binary_loader=MockBinaryLoader(dict()),
        )
        msg = provider.get_confirmation_request_msg(
            to_email, action=action, confirm_token=Token(b"token"))

        assert msg["Subject"] == subject
        assert msg["To"] == to_email
        assert msg.get_body(
            "plain").get_content().strip() == plain_text  # type: ignore
        assert msg.get_body(
            "html").get_content().strip() == html  # type: ignore
Ejemplo n.º 12
0
    type=str,
    nargs=1,
    help="Image to use for new-post email.",
    default=[None],
)

if __name__ == "__main__":
    args = parser.parse_args()

    user = args.user if args.user else args.from_mail[0]

    conn = smtp_connection(args.host[0], user, getpass.getpass(f"Password for {user}:"))

    settings = EmailFromTemplateProvider.Settings(
        display_name="Doveseed template test",
        sender=args.from_mail[0],
        host="doveseed.local",
        confirm_url_format="https://{host}/confirm/{email}?token={token}",
    )
    message_provider = EmailFromTemplateProvider(
        settings=settings,
        template_loader=FileSystemLoader(args.template[0]),
        binary_loader=FileSystemBinaryLoader(args.template[0]),
    )

    token = Token(b"token")
    dispatch = {
        "subscribe": lambda: message_provider.get_confirmation_request_msg(
            args.to_mail[0], action=Action.subscribe, confirm_token=token
        ),
        "unsubscribe": lambda: message_provider.get_confirmation_request_msg(
            args.to_mail[0], action=Action.unsubscribe, confirm_token=token