1
+ from unittest import mock
2
+
1
3
from django .contrib .auth .models import AnonymousUser
4
+ from django .contrib .sites .shortcuts import get_current_site
2
5
from django .core import mail
3
6
from django .test import RequestFactory , TestCase
4
7
5
8
from templated_mail .mail import BaseEmailMessage
6
9
7
10
8
- class EmailMessage (BaseEmailMessage ):
9
- pass
10
-
11
-
12
11
class TestBaseEmailMessage (TestCase ):
13
12
def setUp (self ):
14
13
self .factory = RequestFactory ()
15
14
self .recipients = ['foo@bar.tld' ]
16
15
16
+ @mock .patch ('django.core.handlers.wsgi.WSGIRequest.is_secure' )
17
+ def test_get_context_data_with_insecure_request (self , is_secure_mock ):
18
+ is_secure_mock .return_value = False
19
+
20
+ request = self .factory .get ('/' )
21
+ request .user = AnonymousUser ()
22
+
23
+ email_message = BaseEmailMessage (
24
+ request = request , template_name = 'text_mail.html'
25
+ )
26
+ context = email_message .get_context_data ()
27
+ site = get_current_site (request )
28
+
29
+ self .assertEquals (context ['domain' ], site .domain )
30
+ self .assertEquals (context ['protocol' ], 'http' )
31
+ self .assertEquals (context ['site_name' ], site .name )
32
+ self .assertEquals (context ['user' ], request .user )
33
+
34
+ @mock .patch ('django.core.handlers.wsgi.WSGIRequest.is_secure' )
35
+ def test_get_context_data_with_secure_request (self , is_secure_mock ):
36
+ is_secure_mock .return_value = True
37
+
38
+ request = self .factory .get ('/' )
39
+ request .user = AnonymousUser ()
40
+
41
+ email_message = BaseEmailMessage (
42
+ request = request , template_name = 'text_mail.html'
43
+ )
44
+ context = email_message .get_context_data ()
45
+ site = get_current_site (request )
46
+
47
+ self .assertEquals (context ['domain' ], site .domain )
48
+ self .assertEquals (context ['protocol' ], 'https' )
49
+ self .assertEquals (context ['site_name' ], site .name )
50
+ self .assertEquals (context ['user' ], request .user )
51
+
52
+ def test_get_context_data_without_request_no_context (self ):
53
+ email_message = BaseEmailMessage (template_name = 'text_mail.html' )
54
+ context = email_message .get_context_data ()
55
+
56
+ self .assertEquals (context ['domain' ], '' )
57
+ self .assertEquals (context ['protocol' ], 'http' )
58
+ self .assertEquals (context ['site_name' ], '' )
59
+ self .assertEquals (context ['user' ], None )
60
+
61
+ def test_get_context_data_without_request_user_context (self ):
62
+ user = AnonymousUser ()
63
+ email_message = BaseEmailMessage (
64
+ context = {'user' : user }, template_name = 'text_mail.html'
65
+ )
66
+ context = email_message .get_context_data ()
67
+
68
+ self .assertEquals (context ['domain' ], '' )
69
+ self .assertEquals (context ['protocol' ], 'http' )
70
+ self .assertEquals (context ['site_name' ], '' )
71
+ self .assertEquals (context ['user' ], user )
72
+
17
73
def test_text_mail_contains_valid_data (self ):
18
74
request = self .factory .get ('/' )
19
75
request .user = AnonymousUser ()
20
76
21
- EmailMessage .template_name = 'text_mail.html'
22
- EmailMessage (request = request ).send (to = self .recipients )
77
+ BaseEmailMessage (
78
+ request = request , template_name = 'text_mail.html'
79
+ ).send (to = self .recipients )
80
+
23
81
self .assertEqual (len (mail .outbox ), 1 )
24
82
self .assertEqual (mail .outbox [0 ].recipients (), self .recipients )
25
83
self .assertEqual (mail .outbox [0 ].subject , 'Text mail subject' )
@@ -31,8 +89,10 @@ def test_html_mail_contains_valid_data(self):
31
89
request = self .factory .get ('/' )
32
90
request .user = AnonymousUser ()
33
91
34
- EmailMessage .template_name = 'html_mail.html'
35
- EmailMessage (request = request ).send (to = self .recipients )
92
+ BaseEmailMessage (
93
+ request = request , template_name = 'html_mail.html'
94
+ ).send (to = self .recipients )
95
+
36
96
self .assertEqual (len (mail .outbox ), 1 )
37
97
self .assertEqual (mail .outbox [0 ].recipients (), self .recipients )
38
98
self .assertEqual (mail .outbox [0 ].subject , 'HTML mail subject' )
@@ -44,8 +104,10 @@ def test_text_and_html_mail_contains_valid_data(self):
44
104
request = self .factory .get ('/' )
45
105
request .user = AnonymousUser ()
46
106
47
- EmailMessage .template_name = 'text_and_html_mail.html'
48
- EmailMessage (request = request ).send (to = self .recipients )
107
+ BaseEmailMessage (
108
+ request = request , template_name = 'text_and_html_mail.html'
109
+ ).send (to = self .recipients )
110
+
49
111
self .assertEqual (len (mail .outbox ), 1 )
50
112
self .assertEqual (mail .outbox [0 ].recipients (), self .recipients )
51
113
self .assertEqual (mail .outbox [0 ].subject , 'Text and HTML mail subject' )
@@ -57,8 +119,10 @@ def test_text_and_html_mail_contains_valid_data(self):
57
119
self .assertEqual (mail .outbox [0 ].content_subtype , 'plain' )
58
120
59
121
def test_can_send_mail_with_none_request (self ):
60
- EmailMessage .template_name = 'text_mail.html'
61
- EmailMessage (request = None ).send (to = self .recipients )
122
+ BaseEmailMessage (
123
+ request = None , template_name = 'text_mail.html'
124
+ ).send (to = self .recipients )
125
+
62
126
self .assertEqual (len (mail .outbox ), 1 )
63
127
self .assertEqual (mail .outbox [0 ].recipients (), self .recipients )
64
128
self .assertEqual (mail .outbox [0 ].subject , 'Text mail subject' )
@@ -72,8 +136,10 @@ def test_mail_cc_is_sent_to_valid_cc(self):
72
136
73
137
cc = ['email@example.tld' ]
74
138
75
- EmailMessage .template_name = 'text_mail.html'
76
- EmailMessage (request = request ).send (to = self .recipients , cc = cc )
139
+ BaseEmailMessage (
140
+ request = request , template_name = 'text_mail.html'
141
+ ).send (to = self .recipients , cc = cc )
142
+
77
143
self .assertEqual (len (mail .outbox ), 1 )
78
144
self .assertEqual (mail .outbox [0 ].to , self .recipients )
79
145
self .assertEqual (mail .outbox [0 ].cc , cc )
@@ -88,8 +154,10 @@ def test_mail_bcc_is_sent_to_valid_bcc(self):
88
154
89
155
bcc = ['email@example.tld' ]
90
156
91
- EmailMessage .template_name = 'text_mail.html'
92
- EmailMessage (request = request ).send (to = self .recipients , bcc = bcc )
157
+ BaseEmailMessage (
158
+ request = request , template_name = 'text_mail.html'
159
+ ).send (to = self .recipients , bcc = bcc )
160
+
93
161
self .assertEqual (len (mail .outbox ), 1 )
94
162
self .assertEqual (mail .outbox [0 ].to , self .recipients )
95
163
self .assertEqual (mail .outbox [0 ].bcc , bcc )
0 commit comments