diff --git a/filtres/nou.py b/filtres/nou.py index ba44f8d..59d0bbe 100644 --- a/filtres/nou.py +++ b/filtres/nou.py @@ -23,6 +23,8 @@ def es_aplicable(self): def obtenir_parametres_addicionals(self): defaults = {"equipResolutor": settings.get("equip_resolutor_nous")} + if settings.get("valors_defecte") is None: + return defaults for item in settings.get("valors_defecte"): regex = re.compile(item['match'], re.IGNORECASE) for header_name in item['order']: diff --git a/mailticket.py b/mailticket.py index b90fa2b..2e18094 100755 --- a/mailticket.py +++ b/mailticket.py @@ -19,10 +19,10 @@ class MailTicket: def __init__(self, fitxer): self.filtrar_attachments_per_nom \ - = settings.get("filtrar_attachments_per_nom") + = settings.get("filtrar_attachments_per_nom") or [] self.filtrar_attachments_per_hash \ - = settings.get("filtrar_attachments_per_hash") - self.mails_no_ticket = settings.get("mails_no_ticket") + = settings.get("filtrar_attachments_per_hash") or [] + self.mails_no_ticket = settings.get("mails_no_ticket") or [] self.msg = email.message_from_file(fitxer) # Farem lazy initialization d'aquestes 2 properties per si hi ha diff --git a/test/mails/attachment_signatura.txt b/test/mails/attachment_signatura.txt new file mode 100644 index 0000000..4a518d1 --- /dev/null +++ b/test/mails/attachment_signatura.txt @@ -0,0 +1,39 @@ +Subject: Mail amb attachment que es una signatura +To: mailtoticket@example.com +From: usuari.qualsevol@example.com +Date: Wed, 14 Jan 2015 09:41:15 +0100 +MIME-Version: 1.0 +Content-type: multipart/mixed; + Boundary="0__=4EBBF75EDFBC2A818f9e8a93df938690918c4EBBF75EDFBC2A81" +Content-Disposition: inline + +--0__=4EBBF75EDFBC2A818f9e8a93df938690918c4EBBF75EDFBC2A81 +Content-type: text/plain; charset=ISO-8859-1 +Content-transfer-encoding: quoted-printable + + + + +Prova + + (Embedded + image moved + to file: + pic01487.jpg) + += + +--0__=4EBBF75EDFBC2A818f9e8a93df938690918c4EBBF75EDFBC2A81 +Content-type: image/jpeg; + name="pic01487.jpg" +Content-Disposition: attachment; filename="pic01487.jpg" +Content-transfer-encoding: base64 + +/9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAEBAQEBAQEB +AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/ +2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB +AQEBAQEBAQEBAQH/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAr/xAAU +EAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAA +AAAAAAD/2gAMAwEAAhEDEQA/AL+AAf/Z + +--0__=4EBBF75EDFBC2A818f9e8a93df938690918c4EBBF75EDFBC2A81-- diff --git a/test/mails/mail-accents.txt b/test/mails/mail-accents.txt new file mode 100644 index 0000000..afdef75 --- /dev/null +++ b/test/mails/mail-accents.txt @@ -0,0 +1,20 @@ +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +I si ara responc aquí què passa! +I amb el charset utf8 i tot com toca + +El jueves, 11 de diciembre de 2014 9:04:50, mailtoticket@example.com escribió: +> El tiquet *999999* amb prioritat *#CodiUrgencia:#Urgencia *sol·licitat per +> *#Solicitant* t'ha estat assignat. +> +> Assumpte: *mail amb accénts* +> +> Descripció: +> [Tiquet creat automaticament des de mail a Thu Dec 11 09:04:50 2014 ] +> +> I aquí també +> +> ç +> +> \ No newline at end of file diff --git a/test/mails/mail-office.txt b/test/mails/mail-office.txt new file mode 100644 index 0000000..acefef7 --- /dev/null +++ b/test/mails/mail-office.txt @@ -0,0 +1,642 @@ +Content-Type: multipart/related; + boundary="------------070402080403040907080600" + +This is a multi-part message in MIME format. +--------------070402080403040907080600 +Content-Type: text/html; charset=windows-1252 +Content-Transfer-Encoding: 8bit + + + + + + +
Benvolgut,
+
+ S�c un dels professors de XXX i et demanaria si pots configurar en + el meu compte Atenea que el curs per defecte sigui el de XXX + 2014-15 Q2. Alternativament i si ho puc fer jo mateix, t'agrairia + saber com ho haig de fer, doncs he buscat i no he aconseguit + trobar l'opci�.
+
+ + Ja em dir�s, moltes gr�cies pel suport.
+
+ Atentament,
+
+
+ + + + + + + + + + +
+

Usuari Qualsevol +

+

Departament +xxx

+

xxxyyy zzz

+

Tlf/Phone: + 555 555 555

+

Adre�a/Address: C/ Rue del Percebe 13.

+

.

+

+
+
+ On 09/02/15 15:37, Usuari Qualsevol wrote:
+
+
+ + + + +
+

Hola, la matricula dels estudiants de + grau que ja han cursat ja la primera fase acaba el dia 11; per + tant el dimecres dia 12 podr�em disposar de la matr�cula + definitiva.

+

+

Si em passes els correus electr�nics dels + alumnes matriculats, els hi enviar� un correu per veure quins + alumnes necessiten o volen fer XXX en angl�s. Al mateix temps + els convocar� a la sessi� presencial de XXX per dilluns 16.

+

+

Una pregunta, quan estar� el nou curs donat + d�alta a Atenea amb els alumnes inclosos? Voldria tenir-ho el + m�s aviat possible per poder tamb� interactuar amb ells abans + del comen�ament del curs.

+

+

Quan parlo de nou curs, es tracta de donar + d�alta de nou, la �ltima versi� que hi ha a Atenea.

+

+

Per aquest quadrimestre nom�s donarem + d�alta a Atenea als professors de XXX (els mateixos del curs + anterior), els coordinadors d�especialitat (els mateixos del + curs anterior) i tu mateix.

+

+ + + + + + + + + + +
+

Usuari

+

Director + Acad�mic

+
+

+
+

Rue del Percebe 13

+

Telf.: + 555 555 555

+

altre.usuari@example.com/ www.example.com/

+

+
+

+

+
+
+
+ + + +--------------070402080403040907080600 +Content-Type: image/jpeg +Content-Transfer-Encoding: base64 +Content-ID: + +/9j/4AAQSkZJRgABAQEAYABgAAD/4QAWRXhpZgAASUkqAAgAAAAAAAAAAAD/2wBDAAEBAQEBAQEB +AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/ +2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB +AQEBAQEBAQEBAQH/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAr/xAAU +EAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAA +AAAAAAD/2gAMAwEAAhEDEQA/AL+AAf/Z +--------------070402080403040907080600-- diff --git a/test/mails/mail_enviat_usuari_concret.txt b/test/mails/mail_enviat_usuari_concret.txt new file mode 100644 index 0000000..777cbe8 --- /dev/null +++ b/test/mails/mail_enviat_usuari_concret.txt @@ -0,0 +1,6 @@ +From: Usuari Concret +Subject: Mail enviat des d'un usuari concret +Content-Type: text/plain; charset=ISO-8859-1; format=flowed +Content-Transfer-Encoding: 8bit + +Mail que s'envia des d'un usuari concret \ No newline at end of file diff --git a/test/mails/mail_redirigit_usuari_concret.txt b/test/mails/mail_redirigit_usuari_concret.txt new file mode 100644 index 0000000..96b902e --- /dev/null +++ b/test/mails/mail_redirigit_usuari_concret.txt @@ -0,0 +1,8 @@ +Resent-From: Usuari Concret +Resent-To: mailtoticket@example.com +From: usuari.qualsevol@example.com +Subject: Mail reenviat des d'un usuari concret +Content-Type: text/plain; charset=ISO-8859-1; format=flowed +Content-Transfer-Encoding: 8bit + +Mail que s'envia des d'un usuari qualsevol i redirigit per un usuari concret \ No newline at end of file diff --git a/test/mails/pgp.txt b/test/mails/pgp.txt new file mode 100644 index 0000000..07b0bbf --- /dev/null +++ b/test/mails/pgp.txt @@ -0,0 +1,154 @@ +Content-Type: multipart/alternative; + boundary="------------030903060301010207080901" + +This is a multi-part message in MIME format. +--------------030903060301010207080901 +Content-Type: text/plain; charset=utf-8; format=flowed +Content-Transfer-Encoding: 8bit + + + + +-------- Mensaje reenviado -------- +Asunto: activació de l'entorn segur +Fecha: Tue, 12 Jan 2016 07:56:42 +0100 +De: Usuari Qualsevol +Para: mailtoticket@example.com + + + +Hola, + +Us volia demanar... la desactivació de la connexió a Internet (em penso que + +Grà cies, + +-- +Salut! + +Usuari + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +CFsAnHUBBh3XTpN30HrfOUaGVpxYsX9xlNOMlluEioZwSBHlL0/42g5VjCYxY21R +mQINBO1W3yxOxAJ/x3h0bGdXfCKuoA/tKIUMO97D2/5mPcOgXAVYALUafLv7y1V0 +DwFjA9T1ONO5LR0iknc= +=1gTk +-----END PGP PUBLIC KEY BLOCK----- + + + +-- + + E-mail : mailtoticket@example.com + +====================================================================== + +Abans d'imprimir aquest missatge, si us plau, assegureu-vos que sigui +necessari. El medi ambient és cosa de tots. + + +-- + + + E-mail : usuari@example.com + Web : http://suport.example.com/ + +====================================================================== + +Abans d'imprimir aquest missatge, si us plau, assegureu-vos que sigui +necessari. El medi ambient és cosa de tots. + + +--------------030903060301010207080901 +Content-Type: text/html; charset=utf-8 +Content-Transfer-Encoding: 8bit + + + + + + + +
+

+
+ -------- Mensaje reenviado -------- + + + + + + + + + + + + + + + + + + + +
Asunto: + activació de l'entorn segur
Fecha: Tue, 12 Jan 2016 07:56:42 +0100
De: Jordi Delgado <usuari.qualsevol@example.com>
Para: mailtoticket@example.com
+
+
+
Hola,
+
+Us volia demanar...
+
+Grà cies,
+
+--
+Salut!
+
+Usuari
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+CFsAnHUBBh3XTpN30HrfOUaGVpxYsX9xlNOMlluEioZwSBHlL0/42g5VjCYxY21R
+mQINBO1W3yxOxAJ/x3h0bGdXfCKuoA/tKIUMO97D2/5mPcOgXAVYALUafLv7y1V0
+DwFjA9T1ONO5LR0iknc=
+=1gTk
+-----END PGP PUBLIC KEY BLOCK-----
+
+
+
+
+
--
+
+       E-mail : mailtoticket@example.com
+
+======================================================================
+
+Abans  d'imprimir aquest missatge, si us plau, assegureu-vos que sigui
+necessari. El medi ambient és cosa de tots.
+
+
+
+
+
+
+
+
--
+
+       E-mail : usuari@example.com
+
+======================================================================
+
+Abans  d'imprimir aquest missatge, si us plau, assegureu-vos que sigui
+necessari. El medi ambient és cosa de tots.
+
+
+
+ + + +--------------030903060301010207080901-- diff --git a/test/mails/reply-attachment.txt b/test/mails/reply-attachment.txt new file mode 100644 index 0000000..319335b --- /dev/null +++ b/test/mails/reply-attachment.txt @@ -0,0 +1,34 @@ +MIME-Version: 1.0 +Content-Type: multipart/mixed; + boundary="------------000908000400050109010407" + +This is a multi-part message in MIME format. +--------------000908000400050109010407 +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +Ni cas! + +El 05/12/2014 15:33, mailtoticket@example.com escribió El tiquet 99999 amb prioritat *2:Mitja* sol·licitat per *USUARI QUALSEVOL* ha +> estat assignat a l'equip *PROVA*. +> +> Tiquet: *Ticket de prova que no s'ha d'esborrar* +> +> Descripció +> Aquest ticket es per provar un tema d'attachments i replys +> +> +> +> + +--------------000908000400050109010407 +Content-Type: text/plain; charset=UTF-8; + name="prova.txt" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="prova.txt" + +cHJvdmEgaW5MYWI= +--------------000908000400050109010407-- + + diff --git a/test/mails/reply-mutipart-alternative.txt b/test/mails/reply-mutipart-alternative.txt index 388a53c..5396298 100644 --- a/test/mails/reply-mutipart-alternative.txt +++ b/test/mails/reply-mutipart-alternative.txt @@ -20,13 +20,9 @@ El 09/12/2014 15:46, mailtoticket@example.com escribió > Descripció > hola > -> -> -> Per accedir al tiquet prem sobre el segünllaç> 549720 - prova reply - --- +-- USUARI QUALSEVOL --------------090609040105000108020504 @@ -68,7 +64,7 @@ Content-Transfer-Encoding: 8bit alert("hola");
-
-- 
+    
--
 
        USUARI QUALSEVOL
 
diff --git a/test/mails/reply-no-html.txt b/test/mails/reply-no-html.txt new file mode 100644 index 0000000..033b6f9 --- /dev/null +++ b/test/mails/reply-no-html.txt @@ -0,0 +1,23 @@ +MIME-Version: 1.0 +Content-Type: text/plain;charset=iso-8859-1 +Content-Transfer-Encoding: 8bit +X-Priority: 3 (Normal) +Importance: Normal + +Hola, + + + Ok, dema em passo. + + Usuari + +>

Bon dia,
+>
+> Us informem que s'ha actualitzat el contingut del vostre tiquet +> 999999 (Programari docent laboratoris +> d'informàtica) que es troba en procés de +> resolució amb el següent comentari:
+>
+ + + diff --git a/test/mails/reply6.txt b/test/mails/reply6.txt new file mode 100644 index 0000000..006294d --- /dev/null +++ b/test/mails/reply6.txt @@ -0,0 +1,84 @@ +Content-Type: multipart/alternative; + boundary="------------040907080504060509070408" + +This is a multi-part message in MIME format. +--------------040907080504060509070408 +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 8bit + +HOla + +No vaig contestar? Per mi be. + +Salutacions + +Usuari + +El 10/12/2014 9:59, mailtoticket@example.com escribió: +> Bon dia, +> +> Us informem que s'ha actualitzat el contingut del vostre tiquet +> *999999* que es troba en procés +> de resolució amb el següent comentari: +> +> Hola, +> +> Us torno a enviar el mail ja que no veig si hi ha hagut resposta. +> +> He demanat de reservar ... +> +> Us va bé? +> +> +> + + +-- +Usuari Qualsevol + + +--------------040907080504060509070408 +Content-Type: text/html; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + + + + + +

HOla
+
+ No vaig contestar? Per mi be.
+
+ Salutacions
+
+ Usuari
+
+ El 10/12/2014 9:59, mailtoticket@example.com escribió:
+
+ +
Bon dia,
+
+ Us informem que s'ha actualitzat el contingut del vostre tiquet 999999 + que es troba + en procés de resolució amb el següent comentari:
+
+

Hola,

+

Us torno a enviar el mail ja que no veig si hi ha hagut + resposta.

+

He demanat de reservar ...

+

Us va bé?

+
+
+
+
+
+
--
+Usuari Qualsevol
+
+ + + +--------------040907080504060509070408-- \ No newline at end of file diff --git a/test/mails/urgent.txt b/test/mails/urgent.txt new file mode 100644 index 0000000..0083f45 --- /dev/null +++ b/test/mails/urgent.txt @@ -0,0 +1,6 @@ +From: usuari.qualsevol@example.com +Subject: Mail URGENT reenviat des d'un usuari qualsevol +Content-Type: text/plain; charset=ISO-8859-1; format=flowed +Content-Transfer-Encoding: 8bit + +Mail que s'envia des d'un usuari qualsevol \ No newline at end of file diff --git a/test/test_identitat_local.py b/test/test_identitat_local.py new file mode 100644 index 0000000..c6474a4 --- /dev/null +++ b/test/test_identitat_local.py @@ -0,0 +1,28 @@ +from soa.identitat import GestioIdentitatLocal +import settings +import unittest + + +class TestIdentitatLocal(unittest.TestCase): + + def test_patrons_mail(self): + settings.init() + settings.set("patrons_mail_addicionals", { + "^root@([a-z0-9.\-]+\.)?domain\.example\.com$": "usuari.generic", + "^(.*)@example.edu$": "%s", + "^(.*)@example.org$": "%s" + }) + identitat = GestioIdentitatLocal() + uid = identitat.obtenir_uid_local("usuari.qualsevol@example.edu") + self.assertEquals("usuari.qualsevol", uid) + uid = identitat.obtenir_uid_local("usuari.qualsevol@example.org") + self.assertEquals("usuari.qualsevol", uid) + uid = identitat.obtenir_uid_local("root@xxxx.domain.example.com") + self.assertEquals("usuari.generic", uid) + uid = identitat.obtenir_uid_local("root@domain.example.com") + self.assertEquals("usuari.generic", uid) + uid = identitat.obtenir_uid_local("root@xx.example.com") + self.assertEquals(None, uid) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_mailticket.py b/test/test_mailticket.py index 8f69603..1903115 100644 --- a/test/test_mailticket.py +++ b/test/test_mailticket.py @@ -55,5 +55,31 @@ def test_get_date_invalid_format(self): dt = apple_mail.get_date() self.assertEquals("11/09/2015 11:45", dt.strftime("%d/%m/%Y %H:%M")) + def test_redirigit_passa_a_to(self): + """ Un missatge redirigit a usuari.concret@example.com + ha de tenir el "to" igual a usuari.concret@example.com """ + msg = MailTicket(StringIO( + "Resent-To: usuari.concret@example.com\n" + "To: altre.usuari@example.com")) + self.assertEquals(msg.get_to(), "usuari.concret@example.com") + + def test_comprovar_from_to(self): + """ Si un usuari.concret redirigeix a mailtoticket + s'han de de mantenir les dos adreces """ + msg = MailTicket(StringIO( + "From: usuari.concret@example.com\n" + "Resent-To: mailtoticket@example.com")) + self.assertEquals(msg.get_from(), "usuari.concret@example.com") + self.assertEquals(msg.get_to(), "mailtoticket@example.com") + + def test_mailticket_multipart_alternative(self): + msg = llegir_mail("reply-mutipart-alternative.txt") + self.assertTrue(not msg.te_attachments()) + + def test_mailticket_attach(self): + """ Un mail amb attachmens ha de retornar que te attachments """ + msg = llegir_mail("reply-attachment.txt") + self.assertTrue(msg.te_attachments()) + if __name__ == '__main__': unittest.main() diff --git a/test/test_neteja.py b/test/test_neteja.py index 71cc5e6..7e87700 100644 --- a/test/test_neteja.py +++ b/test/test_neteja.py @@ -2,11 +2,53 @@ import netejahtml import unittest +import settings from testhelper import llegir_mail class TestNeteja(unittest.TestCase): + def setUp(self): + settings.init() + + def test_neteja_reply6(self): + msg = llegir_mail("reply6.txt") + html = msg.get_body() + net = netejahtml.neteja_reply(html) + self.assertTrue("vaig contestar?" in net) + self.assertFalse("Usuari Qualsevol" in net) + + def test_neteja_mail_accents(self): + msg = llegir_mail("mail-accents.txt") + html = msg.get_body() + net = netejahtml.neteja_reply(html) + self.assertTrue(u"què passa!" in net) + self.assertFalse("amb prioritat" in net) + + def test_neteja_mail_office(self): + msg = llegir_mail("mail-office.txt") + html = msg.get_body() + net = netejahtml.neteja_reply(html) + self.assertTrue("compte Atenea" in net) + self.assertFalse("la matricula dels estudiants" in net) + + def test_neteja_reply_no_html(self): + msg = llegir_mail("reply-no-html.txt") + html = msg.get_body() + net = netejahtml.neteja_reply(html) + self.assertTrue("Usuari" in net) + self.assertFalse("contingut del vostre tiquet" in net) + + def test_neteja_pgp(self): + msg = llegir_mail("pgp.txt") + html = msg.get_body() + net = netejahtml.treure_pgp(html) + self.assertTrue("Us volia demanar" in net) + self.assertTrue("Usuari" in net) + self.assertTrue("mailtoticket" in net) + self.assertFalse("PGP" in net) + self.assertFalse("mQINB" in net) + def test_treure_style(self): msg = llegir_mail("reply-mutipart-alternative.txt") html = msg.get_body() diff --git a/test/test_nou.py b/test/test_nou.py new file mode 100644 index 0000000..58eb218 --- /dev/null +++ b/test/test_nou.py @@ -0,0 +1,97 @@ +from filtres.nou import FiltreNou +import unittest +import mock +import testhelper +import settings +from soa.tiquets import GestioTiquets +from soa.identitat import GestioIdentitat + + +class TestTicketNou(unittest.TestCase): + + def setUp(self): + self.mock_tickets = self.crear_mock_tickets() + self.mock_identitat = self.crear_mock_identitat() + settings.init() + + def crear_mock_tickets(self): + tickets = mock.create_autospec(GestioTiquets) + tickets.consulta_tiquet.return_value = { + "solicitant": "usuari.qualsevol"} + tickets.afegir_comentari_tiquet.return_value = {"codiRetorn": "1"} + tickets.alta_tiquet.return_value = { + "codiRetorn": "1", "codiTiquet": "666"} + return tickets + + def crear_mock_identitat(self): + identitat = mock.create_autospec(GestioIdentitat) + identitat.obtenir_uid.return_value = "usuari.qualsevol" + return identitat + + def test_filtra_signatura(self): + """ Un mail amb signatura coneguda + no ha de fer un attachment amb la signatura """ + settings.set("filtrar_attachments_per_hash", [ + "593e2391d469398a04b4d315e5793341" + ]) + msg = testhelper.llegir_mail("attachment_signatura.txt") + f = FiltreNou(msg, self.mock_tickets, self.mock_identitat) + if f.es_aplicable(): + f.filtrar() + self.assertEquals( + self.mock_tickets.annexar_fitxer_tiquet.call_count, 0) + + def test_redirigit_per_usuari_concret(self): + """ Un missatge reenviat per usuari.concret@example.com + ha de crear-se a l'equip 11112 """ + settings.set("valors_defecte", [{ + "order": ['Resent-From'], + "match": "^usuari.concret@example\.com$", + "defaults": {"equipResolutor": "11112"} + }]) + msg = testhelper.llegir_mail("mail_redirigit_usuari_concret.txt") + self.assertEquals(msg.get_resent_from(), "usuari.concret@example.com") + f = FiltreNou(msg, self.mock_tickets, self.mock_identitat) + if f.es_aplicable(): + f.filtrar() + self.assertEquals( + self.mock_tickets.alta_tiquet.call_args_list[ + 0][1]['equipResolutor'], + '11112') + + def test_message_from_usuari_concret(self): + """ Un missatge que ve de usuari.concret@example.com + ha de crear-se a l'equip 11113 """ + settings.set("valors_defecte", [{ + "order": ['From'], + "match": "^usuari.concret@example\.com$", + "defaults": {"equipResolutor": "11113"} + }]) + msg = testhelper.llegir_mail("mail_enviat_usuari_concret.txt") + self.assertEquals(msg.get_from(), "usuari.concret@example.com") + f = FiltreNou(msg, self.mock_tickets, self.mock_identitat) + if f.es_aplicable(): + f.filtrar() + self.assertEquals( + self.mock_tickets.alta_tiquet.call_args_list[ + 0][1]['equipResolutor'], + '11113') + + def test_message_urgent(self): + """ Un missatge amb la paraula URGENT al subject + ha de crear-se amb gravetat alta """ + settings.set("valors_defecte", [{ + "order": ['Subject'], + "match": ".*URGENT", + "defaults": {"urgencia": "GRAVETAT_ALTA"} + }]) + msg = testhelper.llegir_mail("urgent.txt") + f = FiltreNou(msg, self.mock_tickets, self.mock_identitat) + if f.es_aplicable(): + f.filtrar() + self.assertEquals( + self.mock_tickets.alta_tiquet.call_args_list[0][1]['urgencia'], + 'GRAVETAT_ALTA') + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_reply.py b/test/test_reply.py index b1b680c..21883e0 100644 --- a/test/test_reply.py +++ b/test/test_reply.py @@ -1,57 +1,57 @@ -import unittest -import mock -import settings -from soa.tiquets import GestioTiquets -from soa.identitat import GestioIdentitat -from filtres.reply import FiltreReply -from mailticket import MailTicket - - -class TestReply(unittest.TestCase): - - def setUp(self): - self.tickets = mock.create_autospec(GestioTiquets) - self.tickets.consulta_tiquet_dades.return_value = { - "solicitant": "usuari.real", - "emailSolicitant": "mail.extern@mail.com" - } - self.identitat = mock.create_autospec(GestioIdentitat) - self.identitat.obtenir_uid.return_value = None - - settings.init() - settings.set("regex_reply", "(.*)") # Una que trobi sempre algo - settings.set("regex_privat", "X") # Una que no trobi mai res - settings.set("usuari_extern", "usuari.extern") - - def test_reply_mail_extern_igual_a_solicitant_detecta_usuari_real( - self): - msg = mock.create_autospec(MailTicket) - msg.get_from.return_value = "mail.extern@mail.com" - msg.get_subject.return_value = "Re: ticket de prova" - f = FiltreReply(msg, self.tickets, self.identitat) - - self.assertTrue(f.es_aplicable()) - self.assertEquals(f.solicitant, 'usuari.real') - - def test_reply_mail_extern_diferent_a_solicitant_detecta_usuari_extern( - self): - msg = mock.create_autospec(MailTicket) - msg.get_from.return_value = "mail.extern.diferent@mail.com" - msg.get_subject.return_value = "Re: ticket de prova" - f = FiltreReply(msg, self.tickets, self.identitat) - - self.assertTrue(f.es_aplicable()) - self.assertEquals(f.solicitant, 'usuari.extern') - - def test_reply_ticket_id_dintre_de_message_id( - self): - msg = mock.create_autospec(MailTicket) - msg.get_header.return_value = "<4b3b6b9c-bd31-tiquet-id-657421@gn6>" - msg.get_subject.return_value = "Re: ticket de prova" - f = FiltreReply(msg, self.tickets, self.identitat) - - self.assertTrue(f.es_aplicable()) - self.assertEquals(f.ticket_id, "657421") - -if __name__ == '__main__': - unittest.main() +import unittest +import mock +import settings +from soa.tiquets import GestioTiquets +from soa.identitat import GestioIdentitat +from filtres.reply import FiltreReply +from mailticket import MailTicket + + +class TestReply(unittest.TestCase): + + def setUp(self): + self.tickets = mock.create_autospec(GestioTiquets) + self.tickets.consulta_tiquet_dades.return_value = { + "solicitant": "usuari.real", + "emailSolicitant": "mail.extern@example.com" + } + self.identitat = mock.create_autospec(GestioIdentitat) + self.identitat.obtenir_uid.return_value = None + + settings.init() + settings.set("regex_reply", "(.*)") # Una que trobi sempre algo + settings.set("regex_privat", "X") # Una que no trobi mai res + settings.set("usuari_extern", "usuari.extern") + + def test_reply_mail_extern_igual_a_solicitant_detecta_usuari_real( + self): + msg = mock.create_autospec(MailTicket) + msg.get_from.return_value = "mail.extern@example.com" + msg.get_subject.return_value = "Re: ticket de prova" + f = FiltreReply(msg, self.tickets, self.identitat) + + self.assertTrue(f.es_aplicable()) + self.assertEquals(f.solicitant, 'usuari.real') + + def test_reply_mail_extern_diferent_a_solicitant_detecta_usuari_extern( + self): + msg = mock.create_autospec(MailTicket) + msg.get_from.return_value = "mail.extern.diferent@example.com" + msg.get_subject.return_value = "Re: ticket de prova" + f = FiltreReply(msg, self.tickets, self.identitat) + + self.assertTrue(f.es_aplicable()) + self.assertEquals(f.solicitant, 'usuari.extern') + + def test_reply_ticket_id_dintre_de_message_id( + self): + msg = mock.create_autospec(MailTicket) + msg.get_header.return_value = "<4b3b6b9c-bd31-tiquet-id-999999@gn6>" + msg.get_subject.return_value = "Re: ticket de prova" + f = FiltreReply(msg, self.tickets, self.identitat) + + self.assertTrue(f.es_aplicable()) + self.assertEquals(f.ticket_id, "999999") + +if __name__ == '__main__': + unittest.main()