1
+ import io
2
+ import pickle
3
+
1
4
from .context import *
2
5
3
6
import unittest
4
7
import debug_toolbar
8
+ from debug_toolbar .toolbar import DebugToolbar
9
+ from django .core import mail
10
+ from mail_panel .backend import MailToolbarBackendEmail , MailToolbarBackend
5
11
from mail_panel .panels import MailToolbarPanel
6
12
13
+ from django .test .client import RequestFactory
14
+ rf = RequestFactory ()
15
+ get_request = rf .get ('/hello/' )
16
+ post_request = rf .post ('/submit/' , {'foo' : 'bar' })
17
+
7
18
8
19
class ToolbarSuite (unittest .TestCase ):
9
20
def setUp (self ):
10
21
debug_toolbar_version = debug_toolbar .VERSION
11
-
22
+
23
+ self .request = rf .post ('/submit/' , {'foo' : 'bar' })
24
+
12
25
# django-debug-toolbar 1.x take 1 argument, 2.x take 2 arguments
13
- self .panel_args = (None , None )
14
26
if debug_toolbar_version < '2.0' :
15
- self .panel_args = (None , )
27
+ self .toolbar = DebugToolbar (self .request )
28
+ self .panel_args = (self .toolbar , )
29
+ else :
30
+ self .toolbar = DebugToolbar (self .request , None )
31
+ self .panel_args = (self .toolbar , None )
32
+
33
+ @staticmethod
34
+ def get_fake_message (
35
+ to = None ,
36
+ cc = None ,
37
+ bcc = None ,
38
+ reply_to = None ,
39
+ from_email = None ,
40
+ body = None ,
41
+ alternatives = None ,
42
+ ):
43
+ # TODO Use Faker (https://github.com/joke2k/faker)
44
+ return mail .EmailMultiAlternatives (
45
+
46
+
47
+
48
+ reply_to = reply_to or [
'[email protected] ' ],
49
+ from_email = from_email or '[email protected] ' ,
50
+ body = body or 'body' ,
51
+ alternatives = alternatives or [('<b>HTML</b> body' , 'text/html' )],
52
+ )
16
53
17
54
def test_panel (self ):
18
55
"""
19
56
General 'does it run' test.
20
57
"""
21
58
p = MailToolbarPanel (* self .panel_args )
22
- self .assertIsNone ( p .toolbar )
59
+ self .assertEqual ( p . toolbar , self .toolbar )
23
60
24
61
def test_generate_stats (self ):
25
62
p = MailToolbarPanel (* self .panel_args )
@@ -29,10 +66,52 @@ def test_process_response(self):
29
66
p = MailToolbarPanel (* self .panel_args )
30
67
p .process_response (None , None )
31
68
69
+ def test_backend_email (self ):
70
+ fake_message = self .get_fake_message ()
71
+
72
+ # Create MailToolbarBackendEmail from fake EmailMultiAlternatives
73
+ message = MailToolbarBackendEmail (fake_message )
74
+
75
+ # Check email fields
76
+ self .assertEqual (message .to , fake_message .to )
77
+ self .assertEqual (message .cc , fake_message .cc )
78
+ self .assertEqual (message .bcc , fake_message .bcc )
79
+ self .assertEqual (message .reply_to , fake_message .reply_to )
80
+ self .assertEqual (message .from_email , fake_message .from_email )
81
+ self .assertEqual (message .body , fake_message .body )
82
+ self .assertEqual (message .alternatives , fake_message .alternatives )
83
+
84
+ # Check extra fields
85
+ self .assertIsNotNone (message .id )
86
+ self .assertIsNotNone (message .date_sent )
87
+ self .assertFalse (message .read )
88
+
89
+ def test_backend (self ):
90
+ # Test with simple message
91
+ fake_message = self .get_fake_message ()
92
+
93
+ backend = MailToolbarBackend ()
94
+ backend .send_messages ([fake_message ])
95
+
96
+ # Test with not serializable message
97
+ fake_message = self .get_fake_message ()
98
+ fake_message .not_serializable_field = io .BufferedReader (io .StringIO (u'initial text data' ))
99
+
100
+ # BufferedReader is serializable in Python2
101
+ if sys .version_info [0 ] >= 3 :
102
+ with self .assertRaises (TypeError ):
103
+ pickle .dumps (fake_message , pickle .HIGHEST_PROTOCOL )
104
+
105
+ backend = MailToolbarBackend ()
106
+ backend .send_messages ([fake_message ])
107
+
108
+
32
109
def suite ():
33
110
suite = unittest .TestSuite ()
34
111
suite .addTest (unittest .makeSuite (ToolbarSuite ))
35
112
return suite
36
113
114
+
37
115
def main ():
38
116
unittest .TextTestRunner ().run (suite ())
117
+
0 commit comments