Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.67 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. """
  5. test_endem
  6. ----------------------------------
  7.  
  8. Tests for `endem` module.
  9. """
  10.  
  11. import pytest
  12.  
  13. import smtplib
  14.  
  15. from endem import endem
  16.  
  17.  
  18. @pytest.fixture
  19. def emaillib_gmail():
  20. return endem.EmailSender('gmail')
  21.  
  22.  
  23. @pytest.fixture
  24. def emaillib_yandex():
  25. return endem.EmailSender('yandex')
  26.  
  27.  
  28. @pytest.fixture
  29. def emaillib_mail_ru():
  30. return endem.EmailSender('mail_ru')
  31.  
  32.  
  33. def test_emaillib_init():
  34. '''
  35. Инициализация библиотеки
  36. '''
  37. assert endem.EmailSender('gmail')
  38.  
  39.  
  40. def test_emaillib_wrong_init():
  41. '''
  42. Инициализация библиотеки без параметров
  43. '''
  44. with pytest.raises(TypeError):
  45. endem.EmailSender()
  46.  
  47.  
  48. def test_emaillib_wrong_provider_init():
  49. '''
  50. Инициализация библиотеки c неверным провайдером
  51. '''
  52. with pytest.raises(endem.EmailSenderError) as excinfo:
  53. endem.EmailSender('wrong_provider')
  54. assert 'Invalid provider' in str(excinfo.value)
  55.  
  56.  
  57. class TestGmailSend:
  58. sender_email = 'user@gmail.com'
  59. sender_password = 'secret'
  60. to_email = 'user@gmail.com'
  61.  
  62. def test_send_with_wrong_to_email(self, emaillib_gmail):
  63. '''
  64. Отправка письма с неверным email получателя
  65. '''
  66. with pytest.raises(endem.EmailSenderError) as excinfo:
  67. emaillib_gmail.send(
  68. 'email@example.com', 'password',
  69. 'wrong',
  70. 'subject', 'message'
  71. )
  72. assert 'invalid email' in str(excinfo.value)
  73.  
  74. def test_send_with_wrong_from_email(self, emaillib_gmail):
  75. '''
  76. Отправка письма с неверным email отправителя
  77. '''
  78. with pytest.raises(endem.EmailSenderError) as excinfo:
  79. emaillib_gmail.send(
  80. 'wrong', 'password',
  81. 'email@example.com',
  82. 'subject', 'message'
  83. )
  84. assert 'invalid email' in str(excinfo.value)
  85.  
  86. def test_send_email(self, emaillib_gmail):
  87. '''
  88. Отправка письма
  89. '''
  90. assert emaillib_gmail.send(
  91. self.sender_email, self.sender_password,
  92. self.to_email,
  93. 'From test run!', 'message'
  94. )
  95.  
  96. def test_send_email_to_multi_receivers(self, emaillib_gmail):
  97. '''
  98. Отправка письма нескольким получателям
  99. '''
  100. assert emaillib_gmail.send(
  101. self.sender_email, self.sender_password,
  102. [self.to_email, 'user@example.com'],
  103. 'From test run!', 'message'
  104. )
  105.  
  106. def test_send_email_with_markdown(self, emaillib_gmail):
  107. '''
  108. Отправка письма в формате markdown
  109. '''
  110. res = emaillib_gmail.send(
  111. self.sender_email, self.sender_password,
  112. self.to_email,
  113. 'From test run!',
  114. '# Title\n\ntext `code`'
  115. )
  116. assert res.get('body') == (
  117. '<h1>Title</h1>\n'
  118. '<p>text <code>code</code></p>'
  119. )
  120.  
  121. def test_send_email_with_wrong_password(self, emaillib_gmail):
  122. '''
  123. Отправка письма c неверным паролем
  124. '''
  125. with pytest.raises(smtplib.SMTPAuthenticationError) as excinfo:
  126. emaillib_gmail.send(
  127. self.sender_email, 'wrong_password',
  128. self.to_email,
  129. 'From test run!', 'message'
  130. )
  131. assert 'Username and Password not accepted' in str(excinfo.value)
  132.  
  133.  
  134. class TestYandexSend:
  135. sender_email = 'user@yandex.ru'
  136. sender_password = 'secret'
  137. to_email = 'user@yandex.ru'
  138.  
  139. def test_send_with_wrong_to_email(self, emaillib_yandex):
  140. '''
  141. Отправка письма с неверным email получателя
  142. '''
  143. with pytest.raises(endem.EmailSenderError) as excinfo:
  144. emaillib_yandex.send(
  145. 'email@example.com', 'password',
  146. 'wrong',
  147. 'subject', 'message'
  148. )
  149. assert 'invalid email' in str(excinfo.value)
  150.  
  151. def test_send_with_wrong_from_email(self, emaillib_yandex):
  152. '''
  153. Отправка письма с неверным email отправителя
  154. '''
  155. with pytest.raises(endem.EmailSenderError) as excinfo:
  156. emaillib_yandex.send(
  157. 'wrong', 'password',
  158. 'email@example.com',
  159. 'subject', 'message'
  160. )
  161. assert 'invalid email' in str(excinfo.value)
  162.  
  163. def test_send_email(self, emaillib_yandex):
  164. '''
  165. Отправка письма
  166. '''
  167. assert emaillib_yandex.send(
  168. self.sender_email, self.sender_password,
  169. self.to_email,
  170. 'From test run!', 'message'
  171. )
  172.  
  173. def test_send_email_to_multi_receivers(self, emaillib_yandex):
  174. '''
  175. Отправка письма нескольким получателям
  176. '''
  177. assert emaillib_yandex.send(
  178. self.sender_email, self.sender_password,
  179. [self.to_email, 'user@example.com'],
  180. 'From test run!', 'message'
  181. )
  182.  
  183. def test_send_email_with_markdown(self, emaillib_yandex):
  184. '''
  185. Отправка письма в формате markdown
  186. '''
  187. res = emaillib_yandex.send(
  188. self.sender_email, self.sender_password,
  189. self.to_email,
  190. 'From test run!',
  191. '# Title\n\ntext `code`'
  192. )
  193. assert res.get('body') == (
  194. '<h1>Title</h1>\n'
  195. '<p>text <code>code</code></p>'
  196. )
  197.  
  198. def test_send_email_with_wrong_password(self, emaillib_yandex):
  199. '''
  200. Отправка письма c неверным паролем
  201. '''
  202. with pytest.raises(smtplib.SMTPAuthenticationError) as excinfo:
  203. emaillib_yandex.send(
  204. self.sender_email, 'wrong_password',
  205. self.to_email,
  206. 'From test run!', 'message'
  207. )
  208. assert 'Invalid user or password!' in str(excinfo.value)
  209.  
  210.  
  211. class TestMailRuSend:
  212. sender_email = 'user@mail.ru'
  213. sender_password = 'secret'
  214. to_email = 'user@mail.ru'
  215.  
  216. def test_send_with_wrong_to_email(self, emaillib_mail_ru):
  217. '''
  218. Отправка письма с неверным email получателя
  219. '''
  220. with pytest.raises(endem.EmailSenderError) as excinfo:
  221. emaillib_mail_ru.send(
  222. 'email@example.com', 'password',
  223. 'wrong',
  224. 'subject', 'message'
  225. )
  226. assert 'invalid email' in str(excinfo.value)
  227.  
  228. def test_send_with_wrong_from_email(self, emaillib_mail_ru):
  229. '''
  230. Отправка письма с неверным email отправителя
  231. '''
  232. with pytest.raises(endem.EmailSenderError) as excinfo:
  233. emaillib_mail_ru.send(
  234. 'wrong', 'password',
  235. 'email@example.com',
  236. 'subject', 'message'
  237. )
  238. assert 'invalid email' in str(excinfo.value)
  239.  
  240. def test_send_email(self, emaillib_mail_ru):
  241. '''
  242. Отправка письма
  243. '''
  244. assert emaillib_mail_ru.send(
  245. self.sender_email, self.sender_password,
  246. self.to_email,
  247. 'From test run!', 'message'
  248. )
  249.  
  250. def test_send_email_to_multi_receivers(self, emaillib_mail_ru):
  251. '''
  252. Отправка письма нескольким получателям
  253. '''
  254. assert emaillib_mail_ru.send(
  255. self.sender_email, self.sender_password,
  256. [self.to_email, 'user@example.com'],
  257. 'From test run!', 'message'
  258. )
  259.  
  260. def test_send_email_with_markdown(self, emaillib_mail_ru):
  261. '''
  262. Отправка письма в формате markdown
  263. '''
  264. res = emaillib_mail_ru.send(
  265. self.sender_email, self.sender_password,
  266. self.to_email,
  267. 'From test run!',
  268. '# Title\n\ntext `code`'
  269. )
  270. assert res.get('body') == (
  271. '<h1>Title</h1>\n'
  272. '<p>text <code>code</code></p>'
  273. )
  274.  
  275. def test_send_email_with_wrong_password(self, emaillib_mail_ru):
  276. '''
  277. Отправка письма c неверным паролем
  278. '''
  279. with pytest.raises(smtplib.SMTPAuthenticationError) as excinfo:
  280. emaillib_mail_ru.send(
  281. self.sender_email, 'wrong_password',
  282. self.to_email,
  283. 'From test run!', 'message'
  284. )
  285. assert 'Authentication failed.' in str(excinfo.value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement