test_template.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from redmail import EmailSender
  2. import pytest
  3. from convert import remove_email_extra
  4. from getpass import getpass, getuser
  5. from platform import node
  6. def test_template(tmpdir):
  7. html_templates = tmpdir.mkdir("html_tmpl")
  8. html_templates.join("example.html").write("""<h1>Hi {{ friend }},</h1><p>have you checked this open source project '{{ project_name }}'?</p><p>- {{ sender.full_name }}</p>""")
  9. expected_html = f"<h1>Hi Jack,</h1><p>have you checked this open source project 'RedMail'?</p><p>- Me</p>\n"
  10. text_templates = tmpdir.mkdir("text_tmpl")
  11. text_templates.join("example.txt").write("""Hi {{ friend }}, \nhave you checked this open source project '{{ project_name }}'? \n- {{ sender.full_name }}""")
  12. expected_text = f"Hi Jack, \nhave you checked this open source project 'RedMail'? \n- Me\n"
  13. html_tables = tmpdir.mkdir("html_table_tmpl")
  14. html_tables.join("modest.html").write("""{{ df.to_html() }}""")
  15. text_tables = tmpdir.mkdir("text_table_tmpl")
  16. text_tables.join("pandas.txt").write("""{{ df.to_html() }}""")
  17. sender = EmailSender(host=None, port=1234)
  18. sender.set_template_paths(
  19. html=str(html_templates),
  20. text=str(text_templates),
  21. html_table=str(html_tables),
  22. text_table=str(text_tables),
  23. )
  24. msg = sender.get_message(
  25. sender="me@gmail.com",
  26. receivers=["you@gmail.com"],
  27. subject="Some news",
  28. html_template='example.html',
  29. text_template='example.txt',
  30. body_params={"friend": "Jack", 'project_name': 'RedMail'}
  31. )
  32. assert "multipart/alternative" == msg.get_content_type()
  33. #text = remove_extra_lines(msg.get_payload()[0].get_payload())
  34. text = remove_email_extra(msg.get_payload()[0].get_payload())
  35. html = remove_email_extra(msg.get_payload()[1].get_payload())
  36. assert expected_html == html
  37. assert expected_text == text
  38. def test_body_and_template_error(tmpdir):
  39. html_templates = tmpdir.mkdir("html_tmpl")
  40. html_templates.join("example.html").write("""<h1>Hi {{ friend }},</h1><p>have you checked this open source project '{{ project_name }}'?</p><p>- {{ sender.full_name }}</p>""")
  41. text_templates = tmpdir.mkdir("text_tmpl")
  42. text_templates.join("example.txt").write("""Hi {{ friend }}, \nhave you checked this open source project '{{ project_name }}'? \n- {{ sender.full_name }}""")
  43. sender = EmailSender(host="localhost", port=0)
  44. sender.set_template_paths(
  45. html=str(html_templates),
  46. text=str(text_templates),
  47. )
  48. with pytest.raises(ValueError):
  49. msg = sender.get_message(
  50. sender="me@gmail.com",
  51. receivers="you@gmail.com",
  52. subject="Some news",
  53. html='This is some body',
  54. html_template="example.html"
  55. )
  56. with pytest.raises(ValueError):
  57. msg = sender.get_message(
  58. sender="me@gmail.com",
  59. receivers="you@gmail.com",
  60. subject="Some news",
  61. text='This is some body',
  62. text_template="example.txt"
  63. )