Browse Source

More Python 3 compatibility Frappe test fixes (#4321)

* stream object should be BytesIO instead of StringIO

* Convert filter to list explicitly before checking length

* Decode sent_email and content before string operations
version-14
Aditya Hase 7 years ago
committed by Rushabh Mehta
parent
commit
d5d9fd5283
4 changed files with 14 additions and 14 deletions
  1. +4
    -4
      frappe/desk/doctype/event/test_event.py
  2. +1
    -1
      frappe/email/doctype/email_account/test_email_account.py
  3. +5
    -5
      frappe/tests/test_email.py
  4. +4
    -4
      frappe/twofactor.py

+ 4
- 4
frappe/desk/doctype/event/test_event.py View File

@@ -117,13 +117,13 @@ class TestEvent(unittest.TestCase):
ev.insert() ev.insert()


ev_list = get_events("2014-02-01", "2014-02-01", "Administrator", for_reminder=True) ev_list = get_events("2014-02-01", "2014-02-01", "Administrator", for_reminder=True)
self.assertTrue(filter(lambda e: e.name==ev.name, ev_list))
self.assertTrue(list(filter(lambda e: e.name==ev.name, ev_list)))


ev_list1 = get_events("2015-01-20", "2015-01-20", "Administrator", for_reminder=True) ev_list1 = get_events("2015-01-20", "2015-01-20", "Administrator", for_reminder=True)
self.assertFalse(filter(lambda e: e.name==ev.name, ev_list1))
self.assertFalse(list(filter(lambda e: e.name==ev.name, ev_list1)))


ev_list2 = get_events("2014-02-20", "2014-02-20", "Administrator", for_reminder=True) ev_list2 = get_events("2014-02-20", "2014-02-20", "Administrator", for_reminder=True)
self.assertFalse(filter(lambda e: e.name==ev.name, ev_list2))
self.assertFalse(list(filter(lambda e: e.name==ev.name, ev_list2)))


ev_list3 = get_events("2015-02-01", "2015-02-01", "Administrator", for_reminder=True) ev_list3 = get_events("2015-02-01", "2015-02-01", "Administrator", for_reminder=True)
self.assertTrue(filter(lambda e: e.name==ev.name, ev_list3))
self.assertTrue(list(filter(lambda e: e.name==ev.name, ev_list3)))

+ 1
- 1
frappe/email/doctype/email_account/test_email_account.py View File

@@ -111,7 +111,7 @@ class TestEmailAccount(unittest.TestCase):
frappe.sendmail(sender="test_sender@example.com", recipients="test_recipient@example.com", frappe.sendmail(sender="test_sender@example.com", recipients="test_recipient@example.com",
content="test mail 001", subject="test-mail-001", delayed=False) content="test mail 001", subject="test-mail-001", delayed=False)


sent_mail = email.message_from_string(frappe.flags.sent_mail)
sent_mail = email.message_from_string(frappe.flags.sent_mail.decode())
self.assertTrue("test-mail-001" in sent_mail.get("Subject")) self.assertTrue("test-mail-001" in sent_mail.get("Subject"))


def test_print_format(self): def test_print_format(self):


+ 5
- 5
frappe/tests/test_email.py View File

@@ -49,7 +49,7 @@ class TestEmail(unittest.TestCase):
self.assertTrue('test@example.com' in queue_recipients) self.assertTrue('test@example.com' in queue_recipients)
self.assertTrue('test1@example.com' in queue_recipients) self.assertTrue('test1@example.com' in queue_recipients)
self.assertEquals(len(queue_recipients), 2) self.assertEquals(len(queue_recipients), 2)
self.assertTrue('Unsubscribe' in frappe.flags.sent_mail)
self.assertTrue('Unsubscribe' in frappe.flags.sent_mail.decode())


def test_cc_header(self): def test_cc_header(self):
#test if sending with cc's makes it into header #test if sending with cc's makes it into header
@@ -84,7 +84,7 @@ class TestEmail(unittest.TestCase):
self.assertTrue('test@example.com' in queue_recipients) self.assertTrue('test@example.com' in queue_recipients)
self.assertTrue('test1@example.com' in queue_recipients) self.assertTrue('test1@example.com' in queue_recipients)


self.assertTrue('This email was sent to test@example.com and copied to test1@example.com' in frappe.flags.sent_mail)
self.assertTrue('This email was sent to test@example.com and copied to test1@example.com' in frappe.flags.sent_mail.decode())


def test_expose(self): def test_expose(self):
from frappe.utils.verified_command import verify_request from frappe.utils.verified_command import verify_request
@@ -104,12 +104,12 @@ class TestEmail(unittest.TestCase):
where status='Sent'""", as_dict=1)[0].message where status='Sent'""", as_dict=1)[0].message
self.assertTrue('<!--recipient-->' in message) self.assertTrue('<!--recipient-->' in message)


email_obj = email.message_from_string(frappe.flags.sent_mail)
email_obj = email.message_from_string(frappe.flags.sent_mail.decode())
for part in email_obj.walk(): for part in email_obj.walk():
content = part.get_payload(decode=True) content = part.get_payload(decode=True)


if content: if content:
frappe.local.flags.signed_query_string = re.search('(?<=/api/method/frappe.email.queue.unsubscribe\?).*(?=\n)', content).group(0)
frappe.local.flags.signed_query_string = re.search('(?<=/api/method/frappe.email.queue.unsubscribe\?).*(?=\n)', content.decode()).group(0)
self.assertTrue(verify_request()) self.assertTrue(verify_request())
break break


@@ -150,7 +150,7 @@ class TestEmail(unittest.TestCase):
self.assertFalse('test@example.com' in queue_recipients) self.assertFalse('test@example.com' in queue_recipients)
self.assertTrue('test1@example.com' in queue_recipients) self.assertTrue('test1@example.com' in queue_recipients)
self.assertEquals(len(queue_recipients), 1) self.assertEquals(len(queue_recipients), 1)
self.assertTrue('Unsubscribe' in frappe.flags.sent_mail)
self.assertTrue('Unsubscribe' in frappe.flags.sent_mail.decode())


def test_email_queue_limit(self): def test_email_queue_limit(self):
from frappe.email.queue import send, EmailLimitCrossedError from frappe.email.queue import send, EmailLimitCrossedError


+ 4
- 4
frappe/twofactor.py View File

@@ -9,7 +9,7 @@ import pyotp, os
from frappe.utils.background_jobs import enqueue from frappe.utils.background_jobs import enqueue
from jinja2 import Template from jinja2 import Template
from pyqrcode import create as qrcreate from pyqrcode import create as qrcreate
from six import StringIO
from six import BytesIO
from base64 import b64encode, b32encode from base64 import b64encode, b32encode
from frappe.utils import get_url, get_datetime, time_diff_in_seconds from frappe.utils import get_url, get_datetime, time_diff_in_seconds
from six import iteritems, string_types from six import iteritems, string_types
@@ -318,11 +318,11 @@ def get_qr_svg_code(totp_uri):
'''Get SVG code to display Qrcode for OTP.''' '''Get SVG code to display Qrcode for OTP.'''
url = qrcreate(totp_uri) url = qrcreate(totp_uri)
svg = '' svg = ''
stream = StringIO()
stream = BytesIO()
try: try:
url.svg(stream, scale=4, background="#eee", module_color="#222") url.svg(stream, scale=4, background="#eee", module_color="#222")
svg = stream.getvalue().replace('\n', '')
svg = b64encode(bytes(svg))
svg = stream.getvalue().decode().replace('\n', '')
svg = b64encode(svg.encode())
finally: finally:
stream.close() stream.close()
return svg return svg


Loading…
Cancel
Save