def test_fallimento_autenticazione(self, mock_smtp): """ In caso di fallimento autenticazione il messaggio viene rimesso in coda """ self.assertEqual(Messaggio.in_coda().count(), 0) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPAuthenticationError(code=530, msg='authentication error') self._invia_msg_singolo() self.assertEqual(Messaggio.in_coda().count(), 1)
def test_fallimento_autenticazione(self, mock_smtp): """ In caso di fallimento autenticazione il messaggio viene rimesso in coda """ self.assertEqual(Messaggio.in_coda().count(), 0) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPAuthenticationError( code=530, msg='authentication error') self._invia_msg_singolo() self.assertEqual(Messaggio.in_coda().count(), 1)
def test_fallimento_sender(self, mock_smtp): """ In caso di fallimento del sender il messaggio viene rimesso in coda, tranne che in caso di errore 501 che è permanente """ codici = (451, 452, 500, 501, 421) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPSenderRefused(code=codice, msg=msg, sender=Messaggio.SUPPORTO_EMAIL) self._invia_msg_singolo() if codice == 501: self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_fallimento_data(self, mock_smtp): """ In caso di fallimento durante il comando data il messaggio viene rimesso in coda, tranne che in caso di errore 501 che è permanente """ codici = (451, 554, 500, 501, 503, 421, 552, 451, 452) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPDataError(code=codice, msg=msg) self._invia_msg_singolo() if codice == 501: self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_messaggio_senza_destinatari(self, mock_smtp): messaggio = Messaggio.costruisci_e_accoda( destinatari=[], oggetto="Email contatto", modello="email.html", ) messaggio.smaltisci_coda() self.assertEqual(Messaggio.in_coda().count(), 0)
def test_fallimento_sender(self, mock_smtp): """ In caso di fallimento del sender il messaggio viene rimesso in coda, tranne che in caso di errore 5XX che è permanente """ codici = (451, 452, 500, 501, 421) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPSenderRefused( code=codice, msg=msg, sender=Messaggio.SUPPORTO_EMAIL) self._invia_msg_singolo() if codice == 501: self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_fallimento_data(self, mock_smtp): """ In caso di fallimento durante il comando data il messaggio viene rimesso in coda, tranne che in caso di errore 5XX che è permanente """ codici = (451, 554, 500, 501, 503, 421, 552, 451, 452) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPDataError(code=codice, msg=msg) self._invia_msg_singolo() if codice == 501: self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_messaggio_senza_destinatari(self, mock_smtp): messaggio = Messaggio.costruisci_e_accoda( destinatari=[], oggetto="Email contatto", modello="email.html", ) messaggio._smaltisci_coda() self.assertEqual(Messaggio.in_coda().count(), 0)
def test_fallimento_disconnect(self, mock_smtp): """ In caso di disconessione del server il messaggio viene rimesso in coda """ instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPServerDisconnected({}) self._invia_msg_singolo() self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_messaggio_con_destinatario_vuoto(self, mock_smtp): persona, sede, appartenenza = crea_persona_sede_appartenenza() persona.save() messaggio = Messaggio.costruisci_e_accoda( destinatari=[persona], oggetto="Email contatto", modello="email.html", ) messaggio.smaltisci_coda() self.assertEqual(Messaggio.in_coda().count(), 0)
def test_messaggio_con_destinatario_vuoto(self, mock_smtp): persona, sede, appartenenza = crea_persona_sede_appartenenza() persona.save() messaggio = Messaggio.costruisci_e_accoda( destinatari=[persona], oggetto="Email contatto", modello="email.html", ) messaggio._smaltisci_coda() self.assertEqual(Messaggio.in_coda().count(), 0)
def test_fallimento_recipient(self, mock_smtp): """ In caso di fallimento del recipient il messaggio viene rimesso in coda se entrambi i recipient sono stati rifiutati, altrimenti viene considerato inviato """ codici = (550, 551, 552, 553, 450, 451, 452, 500, 501, 503, 521, 421) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value for x in range(2): recipients = { self.persone[0].persona.email: (codice, msg) if x in (1, 2) else (250, 'ok'), self.persone[0].email: (codice, msg) if x in (0, 2) else (250, 'ok'), } instance.sendmail.side_effect = smtplib.SMTPRecipientsRefused(recipients=recipients) self._invia_msg_singolo() if codice == 501 or x in (0, 1): self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_fallimento_connect(self, mock_smtp): """ In caso di fallimento durante il connect il messaggio viene rimesso in coda """ codici = (421,) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPConnectError(code=codice, msg=msg) self._invia_msg_singolo() self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_fallimento_connect(self, mock_smtp): """ In caso di fallimento durante il connect il messaggio viene rimesso in coda """ codici = (421, ) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value instance.sendmail.side_effect = smtplib.SMTPConnectError( code=codice, msg=msg) self._invia_msg_singolo() self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()
def test_fallimento_recipient(self, mock_smtp): """ In caso di fallimento del recipient il messaggio viene rimesso in coda se entrambi i recipient sono stati rifiutati, altrimenti viene considerato inviato """ codici = (550, 551, 552, 553, 450, 451, 452, 500, 501, 503, 521, 421) for codice in codici: msg = 'code {}'.format(codice) instance = mock_smtp.return_value for x in range(2): recipients = { self.persone[0].persona.email: (codice, msg) if x in (1, 2) else (250, 'ok'), self.persone[0].email: (codice, msg) if x in (0, 2) else (250, 'ok'), } instance.sendmail.side_effect = smtplib.SMTPRecipientsRefused( recipients=recipients) self._invia_msg_singolo() if codice == 501 or x in (0, 1): self.assertEqual(Messaggio.in_coda().count(), 0) else: self.assertEqual(Messaggio.in_coda().count(), 1) self._reset_coda()