forked from reingart/pyafipws
-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: SONIABHISHEK121 <[email protected]>
- Loading branch information
1 parent
90ef00f
commit 2da128a
Showing
1 changed file
with
128 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,6 +24,7 @@ | |
from email.mime.multipart import MIMEMultipart | ||
import sys, os | ||
import smtplib | ||
import base64 | ||
from configparser import SafeConfigParser | ||
|
||
pytestmark = [pytest.mark.dontusefix] | ||
|
@@ -33,44 +34,48 @@ | |
config.read("rece.ini") | ||
conf_mail = dict(config.items("MAIL")) | ||
|
||
|
||
def test_Connectar_Enviar(mocker): | ||
"""Test de conexion""" | ||
mocker.patch("smtplib.SMTP") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], | ||
conf_mail["usuario"], | ||
conf_mail["clave"], | ||
25, | ||
) | ||
pyemail.Enviar( | ||
conf_mail["remitente"], "prueba", "[email protected]", None | ||
conf_mail["servidor"], | ||
conf_mail["usuario"], | ||
conf_mail["clave"], | ||
25, | ||
) | ||
pyemail.Enviar(conf_mail["remitente"], "prueba", "[email protected]", None) | ||
|
||
pyemail.Salir() | ||
pyemail.Salir() | ||
|
||
smtplib.SMTP.assert_called_with(conf_mail["servidor"], 25) | ||
|
||
|
||
def test_Crear(): | ||
ok =pyemail.Crear() | ||
ok = pyemail.Crear() | ||
assert ok | ||
|
||
|
||
def test_Agreagar_Destinatario(): | ||
ok =pyemail.AgregarDestinatario("[email protected]") | ||
ok = pyemail.AgregarDestinatario("[email protected]") | ||
assert ok | ||
|
||
|
||
def test_AgregarCC(): | ||
ok =pyemail.AgregarCC("[email protected]") | ||
ok = pyemail.AgregarCC("[email protected]") | ||
assert ok | ||
|
||
|
||
def test_AgregarBCC(): | ||
ok =pyemail.AgregarBCC("[email protected]") | ||
ok = pyemail.AgregarBCC("[email protected]") | ||
assert ok | ||
|
||
|
||
def test_Adjuntar(): | ||
ok =pyemail.Adjuntar("[email protected]") | ||
ok = pyemail.Adjuntar("[email protected]") | ||
assert ok | ||
|
||
|
||
def test_main(mocker): | ||
"""Test de funcion main""" | ||
mocker.patch("smtplib.SMTP") | ||
|
@@ -83,13 +88,121 @@ def test_main(mocker): | |
|
||
smtplib.SMTP.assert_called_with(conf_mail["servidor"], 25) | ||
|
||
def test_main_prueba(mocker): | ||
|
||
def test_main_prueba(mocker): | ||
mocker.patch("smtplib.SMTP") | ||
sys.argv = [] | ||
sys.argv.append("/prueba") | ||
sys.argv.append("[email protected]") | ||
sys.argv.append("pass123") | ||
main() | ||
|
||
smtplib.SMTP.assert_called_with('smtp.gmail.com', 587) | ||
smtplib.SMTP.assert_called_with("smtp.gmail.com", 587) | ||
|
||
|
||
def test_Conectar_SSL(mocker): | ||
mocker.patch("smtplib.SMTP_SSL") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 465 | ||
) | ||
smtplib.SMTP_SSL.assert_called_with(conf_mail["servidor"], 465) | ||
|
||
|
||
def test_Conectar_TLS(mocker): | ||
mock_smtp = mocker.patch("smtplib.SMTP") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 587 | ||
) | ||
mock_smtp.return_value.starttls.assert_called_once() | ||
|
||
|
||
def test_Conectar_Exception(mocker): | ||
mocker.patch("smtplib.SMTP", side_effect=Exception("Connection error")) | ||
result = pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 25 | ||
) | ||
assert result is False | ||
assert pyemail.Excepcion != "" | ||
assert pyemail.Traceback != "" | ||
|
||
|
||
def test_Enviar_CC_BCC(mocker): | ||
mocker.patch("smtplib.SMTP") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 25 | ||
) | ||
pyemail.CC = [] # Clear CC list | ||
pyemail.BCC = [] # Clear BCC list | ||
pyemail.AgregarCC("[email protected]") | ||
pyemail.AgregarBCC("[email protected]") | ||
pyemail.Enviar(conf_mail["remitente"], "prueba", "[email protected]", "Test message") | ||
assert len(pyemail.CC) == 1 | ||
assert len(pyemail.BCC) == 1 | ||
|
||
|
||
def test_Salir_Exception(mocker): | ||
mock_smtp = mocker.patch("smtplib.SMTP") | ||
mock_smtp.return_value.quit.side_effect = Exception("Quit error") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 25 | ||
) | ||
result = pyemail.Salir() | ||
assert result is False | ||
assert pyemail.Excepcion != "" | ||
assert pyemail.Traceback != "" | ||
|
||
|
||
def test_Enviar_HTML(mocker): | ||
mock_smtp = mocker.patch("smtplib.SMTP") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 25 | ||
) | ||
pyemail.MensajeHTML = "<html><body>Test HTML</body></html>" | ||
pyemail.MensajeTexto = "Test plain text" | ||
pyemail.Crear(conf_mail["remitente"], "prueba") | ||
pyemail.AgregarDestinatario("[email protected]") | ||
pyemail.Enviar() | ||
|
||
assert mock_smtp.return_value.sendmail.called | ||
call_args = mock_smtp.return_value.sendmail.call_args[0][2] | ||
|
||
assert "Content-Type: multipart/related" in call_args | ||
assert "Content-Type: multipart/alternative" in call_args | ||
assert "Content-Type: text/text" in call_args | ||
assert "Content-Type: text/html" in call_args | ||
assert "Test plain text" in call_args | ||
assert "<html><body>Test HTML</body></html>" in call_args | ||
|
||
# Reset for next tests | ||
pyemail.MensajeHTML = None | ||
pyemail.MensajeTexto = None | ||
|
||
|
||
def test_Enviar_Con_Adjunto(mocker): | ||
mock_smtp = mocker.patch("smtplib.SMTP") | ||
pyemail.Conectar( | ||
conf_mail["servidor"], conf_mail["usuario"], conf_mail["clave"], 25 | ||
) | ||
pyemail.Crear(conf_mail["remitente"], "prueba") | ||
pyemail.AgregarDestinatario("[email protected]") | ||
|
||
attachment_content = "This is a test attachment" | ||
with open("test_attachment.txt", "w") as f: | ||
f.write(attachment_content) | ||
|
||
pyemail.Adjuntar("test_attachment.txt") | ||
pyemail.MensajeTexto = "Test message" | ||
pyemail.Enviar() | ||
|
||
assert mock_smtp.return_value.sendmail.called | ||
call_args = mock_smtp.return_value.sendmail.call_args[0][2] | ||
|
||
assert ( | ||
'Content-Disposition: attachment; filename="test_attachment.txt"' in call_args | ||
) | ||
encoded_content = base64.b64encode(attachment_content.encode()).decode() | ||
assert encoded_content in call_args | ||
|
||
os.remove("test_attachment.txt") | ||
pyemail.adjuntos = [] | ||
pyemail.MensajeTexto = None |