def test_send_withdouble(self): configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) send_email( ['*****@*****.**', '*****@*****.**', '*****@*****.**'], 'send correct config', 'Yessss!!!', cclist=['*****@*****.**', '*****@*****.**', '*****@*****.**'], bcclist=['*****@*****.**', '*****@*****.**', '*****@*****.**']) self.assertEqual(1, self.server.count()) self.assertEqual('*****@*****.**', self.server.get(0)[1]) self.assertEqual([ '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**' ], self.server.get(0)[2]) msg, = self.server.check_first_message( 'send correct config', 1, { 'To': '[email protected], [email protected], [email protected]', 'Cc': '[email protected], [email protected]' }) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual('Yessss!!!', decode_b64(msg.get_payload())) self.assertEqual(None, self.server.smtp.auth_params)
def test_send_with_files(self): file1 = BytesIO(get_binay('blablabla\blabla.')) file2 = open(join(dirname(__file__), 'static', 'lucterios.mailing', 'images', 'config_mail.png'), mode='rb') try: configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) send_email('*****@*****.**', 'send with files', '2 files sent!', [('filename1.txt', file1), ('filename2.png', file2)]) self.assertEqual(1, self.server.count()) self.assertEqual('*****@*****.**', self.server.get(0)[1]) self.assertEqual(['*****@*****.**'], self.server.get(0)[2]) msg, msg_f1, msg_f2 = self.server.check_first_message( 'send with files', 3) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual('2 files sent!', decode_b64(msg.get_payload())) self.assertEqual(None, self.server.smtp.auth_params) self.assertTrue('filename1.txt' in msg_f1.get('Content-Type', ''), msg_f1.get('Content-Type', '')) self.assertEqual('blablabla\blabla.', decode_b64(msg_f1.get_payload())) self.assertTrue('filename2.png' in msg_f2.get('Content-Type', ''), msg_f2.get('Content-Type', '')) file2.seek(0, SEEK_END) self.assertEqual(file2.tell(), len(b64decode(msg_f2.get_payload()))) finally: file1.close() file2.close()
def test_user_withconfig(self): configSMTP('localhost', 1025) self.factory.xfer = UsersEdit() self.call('/CORE/usersEdit', {}, False) self.assert_observer('core.custom', 'CORE', 'usersEdit') self.assert_count_equal('COMPONENTS/*', 30) self.assert_attrib_equal('COMPONENTS/CHECK[@name="password_generate"]', "description", "Générer un nouveau mot de passe?")
def test_tryemail_noconfig(self): configSMTP('', 25) self.assertEqual(0, self.server.count()) self.factory.xfer = SendEmailTry() self.call('/lucterios.mailing/sendEmailTry', {}, False) self.assert_observer('core.exception', 'lucterios.mailing', 'sendEmailTry') self.assert_xml_equal("EXCEPTION/MESSAGE", "Mauvais paramètrage du courriel") self.assertEqual(0, self.server.count())
def test_send_no_config(self): configSMTP('', 25) self.assertEqual(0, self.server.count()) self.assertEqual(False, will_mail_send()) try: send_email('*****@*****.**', 'send without config', 'boom!!!') self.assertTrue(False) except LucteriosException as error: self.assertEqual(six.text_type(error), 'Courriel non configuré!') self.assertEqual(0, self.server.count())
def test_email_message(self): configSMTP('localhost', 1025) self.factory.xfer = MessageAddModify() self.call( '/lucterios.mailing/messageAddModify', { 'SAVE': 'YES', 'subject': 'new message', 'body': '{[b]}{[font color="blue"]}All{[/font]}{[/b]}{[newline]}Small message to give a big {[u]}kiss{[/u]} ;){[newline]}{[newline]}Bye' }, False) self.factory.xfer = MessageValidRecipient() self.call( '/lucterios.mailing/messageValidRecipient', { 'message': '1', 'modelname': 'contacts.Individual', 'CRITERIA': 'genre||8||1' }, False) self.factory.xfer = MessageValidRecipient() self.call('/lucterios.mailing/messageValidRecipient', { 'message': '1', 'modelname': 'contacts.LegalEntity', 'CRITERIA': '' }, False) self.factory.xfer = MessageTransition() self.call('/lucterios.mailing/messageValid', { 'message': '1', 'CONFIRME': 'YES' }, False) server = TestReceiver() server.start(1025) try: self.assertEqual(0, server.count()) self.factory.xfer = MessageEmail() self.call('/lucterios.mailing/messageEmail', { 'message': '1', 'CONFIRME': 'YES' }, False) self.assert_observer('core.dialogbox', 'lucterios.mailing', 'messageEmail') self.assertEqual(2, server.count()) self.assertEqual('*****@*****.**', server.get(0)[1]) self.assertEqual(['*****@*****.**'], server.get(0)[2]) msg, = server.check_first_message('new message', 1) self.assertEqual('text/html', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual( '<html><body><b><font color="blue">All</font></b><br/>Small message to give a big <u>kiss</u> ;)<br/><br/>Bye</body></html>', decode_b64(msg.get_payload())) finally: server.stop()
def test_send_bad_config(self): configSMTP('localhost', 1125) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) try: send_email('*****@*****.**', 'send without config', 'boom!!!') self.assertTrue(False) except LucteriosException as error: self.assertEqual(six.text_type(error), '[Errno 111] Connection refused') self.assertEqual(0, self.server.count())
def test_send_with_ssl(self): configSMTP('localhost', 1025, 2) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) try: send_email('*****@*****.**', 'send with ssl', 'not success!') self.assertTrue(False) except LucteriosException as error: self.assertTrue('unknown protocol' in six.text_type(error), six.text_type(error)) self.assertEqual(0, self.server.count())
def test_send_with_starttls(self): configSMTP('localhost', 1025, 1) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) try: send_email('*****@*****.**', 'send with starttls', 'failed!') self.assertTrue(False) except LucteriosException as error: self.assertEqual(six.text_type(error), 'STARTTLS extension not supported by server.') self.assertEqual(0, self.server.count())
def test_send_with_auth(self): if six.PY3: self.server.smtp.with_authentificate = True configSMTP('localhost', 1025, 0, 'toto', 'abc123') self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) send_email('*****@*****.**', 'send with auth', 'OK!') self.assertEqual(1, self.server.count()) msg, = self.server.check_first_message('send with auth', 1) self.assertEqual('OK!', decode_b64(msg.get_payload())) self.assertEqual(['', 'toto', 'abc123'], self.server.smtp.auth_params)
def test_send_html(self): configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) send_email('*****@*****.**', 'send html', '<html><body><h1>Yessss!!!</h1></body></html>') self.assertEqual(1, self.server.count()) self.assertEqual('*****@*****.**', self.server.get(0)[1]) self.assertEqual(['*****@*****.**'], self.server.get(0)[2]) msg, = self.server.check_first_message('send html', 1) self.assertEqual('text/html', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual('<html><body><h1>Yessss!!!</h1></body></html>', decode_b64(msg.get_payload()))
def test_send_copyhimself(self): configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.assertEqual(True, will_mail_send()) send_email('*****@*****.**', 'send correct config', 'Yessss!!!', withcopy=True) self.assertEqual(1, self.server.count()) self.assertEqual('*****@*****.**', self.server.get(0)[1]) self.assertEqual(['*****@*****.**', '*****@*****.**'], self.server.get(0)[2]) msg, = self.server.check_first_message('send correct config', 1) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual('Yessss!!!', decode_b64(msg.get_payload())) self.assertEqual(None, self.server.smtp.auth_params)
def test_tryemail_success(self): configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.factory.xfer = SendEmailTry() self.call('/lucterios.mailing/sendEmailTry', {}, False) self.assert_observer('core.dialogbox', 'lucterios.mailing', 'sendEmailTry') self.assert_xml_equal('TEXT', 'Courriel envoyé, veuillez le vérifier.') self.assertEqual(1, self.server.count()) self.assertEqual('*****@*****.**', self.server.get(0)[1]) self.assertEqual(['*****@*****.**'], self.server.get(0)[2]) msg, = self.server.check_first_message('Essai de courriel', 1) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) self.assertEqual( 'Courriel envoyé pour vérifier la configuration\n\nWoldCompany\n', decode_b64(msg.get_payload())[:60])
def test_pwd_forget(self): configSMTP('localhost', 1025) self.factory.xfer = AskPassword() self.call('/lucterios.CORE/askPassword', {}, False) self.assert_observer('core.custom', 'lucterios.CORE', 'askPassword') self.assert_count_equal('CONTEXT', 0) self.assert_count_equal('COMPONENTS/*', 4) self.assert_xml_equal('COMPONENTS/EDIT[@name="email"]', None) self.assert_count_equal('ACTIONS/ACTION', 2) server = TestReceiver() server.start(1025) try: self.assertEqual(0, server.count()) self.factory.xfer = AskPasswordAct() self.call('/lucterios.CORE/askPasswordAct', {"email": "*****@*****.**"}, False) self.assert_observer('core.acknowledge', 'lucterios.CORE', 'askPasswordAct') self.assertEqual(0, server.count()) self.factory.xfer = AskPasswordAct() self.call('/lucterios.CORE/askPasswordAct', {"email": "*****@*****.**"}, False) self.assert_observer('core.acknowledge', 'lucterios.CORE', 'askPasswordAct') self.assertEqual(1, server.count()) self.assertEqual('*****@*****.**', server.get(0)[1]) self.assertEqual(['*****@*****.**'], server.get(0)[2]) msg, = server.check_first_message('Mot de passe de connexion', 1) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) message = decode_b64(msg.get_payload()) self.assertEqual( 'Confirmation de connexion à votre application:\nAlias:jack\nMot de passe:', message[:71]) password = message[71:] finally: server.stop() user = LucteriosUser.objects.get(id=2) self.assertTrue(user.check_password(password), 'success after change')
def test_user_change_password(self): configSMTP('localhost', 1025) self.assertEqual(0, self.server.count()) self.factory.xfer = UsersEdit() self.call( '/CORE/usersEdit', { 'SAVE': 'YES', 'user_actif': '1', "password_generate": 'o', "email": '*****@*****.**' }, False) self.assert_observer('core.acknowledge', 'CORE', 'usersEdit') self.assertEqual(1, self.server.count()) msg, = self.server.check_first_message('Mot de passe de connexion', 1) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) content_msg = decode_b64(msg.get_payload()) self.assertEqual( 'Confirmation de connexion à votre application:\nAlias:admin\nMot de passe:', decode_b64(msg.get_payload())[:72]) password = content_msg[72:].strip() user = LucteriosUser.objects.get(id=1) self.assertTrue(user.check_password(password), content_msg)
def test_new_account_with_structure(self): param = Parameter.objects.get(name='contacts-createaccount') param.value = '2' param.save() configSMTP('localhost', 1025) self.factory.xfer = CreateAccount() self.call('/lucterios.contact/createAccount', {}, False) self.assert_observer('core.custom', 'lucterios.contact', 'createAccount') self.assert_count_equal('CONTEXT', 0) self.assert_count_equal('COMPONENTS/*', 16) self.assert_xml_equal('COMPONENTS/SELECT[@name="genre"]', '1') self.assert_xml_equal('COMPONENTS/EDIT[@name="firstname"]', None) self.assert_xml_equal('COMPONENTS/EDIT[@name="lastname"]', None) self.assert_xml_equal('COMPONENTS/EDIT[@name="username"]', None) self.assert_xml_equal('COMPONENTS/EDIT[@name="email"]', None) self.assert_xml_equal('COMPONENTS/EDIT[@name="legalentity"]', None) self.assert_xml_equal('COMPONENTS/CAPTCHA[@name="captcha"]', None) self.assert_count_equal('ACTIONS/ACTION', 2) server = TestReceiver() server.start(1025) try: self.factory.xfer = CreateAccount() self.call( '/lucterios.contacts/createAccount', { 'SAVE': 'YES', 'firstname': 'pierre', 'genre': 1, 'legalentity': 'Chez moi', 'lastname': 'DUPONT', 'username': '******', 'email': '*****@*****.**' }, False) self.assert_observer('core.dialogbox', 'lucterios.contacts', 'createAccount') self.assert_xml_equal( 'TEXT', 'Votre compte est créé{[br/]}Vous allez recevoir un courriel avec votre mot de passe.' ) self.assertEqual(1, server.count()) self.assertEqual('*****@*****.**', server.get(0)[1]) self.assertEqual(['*****@*****.**'], server.get(0)[2]) msg, = server.check_first_message('Mot de passe de connexion', 1) self.assertEqual('text/plain', msg.get_content_type()) self.assertEqual('base64', msg.get('Content-Transfer-Encoding', '')) message = decode_b64(msg.get_payload()) self.assertEqual( 'Confirmation de connexion à votre application:\nAlias:pierre\nMot de passe:', message[:73]) password = message[73:] finally: server.stop() user = LucteriosUser.objects.get(id=3) self.assertEqual('pierre', user.username) self.assertTrue(user.check_password(password), 'success after change') cont = Individual.objects.filter(user=user) self.assertEqual(1, len(cont)) self.assertEqual('pierre', cont[0].firstname) moral = LegalEntity.objects.filter( responsability__individual__user=user) self.assertEqual(1, len(moral)) self.assertEqual('Chez moi', moral[0].name) self.assertEqual('*****@*****.**', moral[0].email) self.assertEqual('---', moral[0].address) self.assertEqual('---', moral[0].postal_code) self.assertEqual('---', moral[0].city) self.assertEqual(2, len(LegalEntity.objects.all()))
def test_validate_message(self): configSMTP('', 25) self.assertFalse(will_mail_send(), 'no email') self.factory.xfer = MessageAddModify() self.call( '/lucterios.mailing/messageAddModify', { 'SAVE': 'YES', 'subject': 'new message', 'body': '{[b]}{[font color="blue"]}All{[/font]}{[/b]}{[newline]}Small message to give a big {[u]}kiss{[/u]} ;){[newline]}{[newline]}Bye' }, False) self.factory.xfer = MessageValidRecipient() self.call( '/lucterios.mailing/messageValidRecipient', { 'message': '1', 'modelname': 'contacts.Individual', 'CRITERIA': 'genre||8||1' }, False) self.factory.xfer = MessageValidRecipient() self.call('/lucterios.mailing/messageValidRecipient', { 'message': '1', 'modelname': 'contacts.LegalEntity', 'CRITERIA': '' }, False) self.factory.xfer = MessageTransition() self.call('/lucterios.mailing/messageTransition', { 'message': '1', 'TRANSITION': 'valid', 'CONFIRME': 'YES' }, False) self.assert_observer('core.acknowledge', 'lucterios.mailing', 'messageTransition') self.assertFalse(will_mail_send(), 'no email') self.factory.xfer = MessageShow() self.call('/lucterios.mailing/messageShow', {'message': '1'}, False) self.assert_observer('core.custom', 'lucterios.mailing', 'messageShow') self.assert_count_equal('COMPONENTS/*', 8) self.assert_xml_equal('COMPONENTS/LABELFORM[@name="status"]', 'fermé') self.assert_count_equal( 'COMPONENTS/GRID[@name="recipient_list"]/ACTIONS/ACTION', 0) self.assert_count_equal( 'COMPONENTS/GRID[@name="recipient_list"]/RECORD', 2) self.assert_xml_equal('COMPONENTS/LABELFORM[@name="contact_nb"]', 'Message défini pour 2 contacts') self.assert_count_equal('ACTIONS/ACTION', 2) self.assert_action_equal( 'ACTIONS/ACTION[1]', ('Lettres', 'lucterios.mailing/images/letter.png', 'lucterios.mailing', 'messageLetter', 0, 1, 1)) self.assert_action_equal('ACTIONS/ACTION[2]', ('Fermer', 'images/close.png')) configSMTP('localhost', 1025) self.assertTrue(will_mail_send(), 'with email') self.factory.xfer = MessageShow() self.call('/lucterios.mailing/messageShow', {'message': '1'}, False) self.assert_observer('core.custom', 'lucterios.mailing', 'messageShow') self.assert_count_equal('ACTIONS/ACTION', 3) self.assert_action_equal( 'ACTIONS/ACTION[1]', ('Lettres', 'lucterios.mailing/images/letter.png', 'lucterios.mailing', 'messageLetter', 0, 1, 1)) self.assert_action_equal( 'ACTIONS/ACTION[2]', ('Courriels', 'lucterios.mailing/images/email.png', 'lucterios.mailing', 'messageEmail', 0, 1, 1)) self.assert_action_equal('ACTIONS/ACTION[3]', ('Fermer', 'images/close.png'))
def test_user_withoutconfig(self): configSMTP('', 25) self.factory.xfer = UsersEdit() self.call('/CORE/usersEdit', {}, False) self.assert_observer('core.custom', 'CORE', 'usersEdit') self.assert_count_equal('COMPONENTS/*', 29)