99from ietf .community .utils import docs_matching_community_list_rule , community_list_rules_matching_doc
1010from ietf .doc .models import State
1111from ietf .doc .utils import add_state_change_event
12- from ietf .person .models import Person
12+ from ietf .person .models import Person , Email
1313from ietf .utils .test_data import make_test_data
1414from ietf .utils .test_utils import login_testing_unauthorized , TestCase
1515from ietf .utils .mail import outbox
@@ -217,28 +217,18 @@ def test_feed(self):
217217 self .assertEqual (r .status_code , 200 )
218218 self .assertTrue ('<entry>' not in r .content )
219219
220- def extract_confirm_url (self , confirm_email ):
221- # dig out confirm_email link
222- msg = confirm_email .get_payload (decode = True )
223- line_start = "http"
224- confirm_url = None
225- for line in msg .split ("\n " ):
226- if line .strip ().startswith (line_start ):
227- confirm_url = line .strip ()
228- self .assertTrue (confirm_url )
229-
230- return confirm_url
231-
232220 def test_subscription (self ):
233221 draft = make_test_data ()
234222
235- url = urlreverse ("community_personal_subscription" , kwargs = { "operation" : "subscribe" , " username" : "plain" })
223+ url = urlreverse ("community_personal_subscription" , kwargs = { "username" : "plain" })
236224
237- # subscribe without list
225+ login_testing_unauthorized (self , "plain" , url )
226+
227+ # subscription without list
238228 r = self .client .get (url )
239229 self .assertEqual (r .status_code , 404 )
240230
241- # subscribe with list
231+ # subscription with list
242232 clist = CommunityList .objects .create (user = User .objects .get (username = "plain" ))
243233 clist .added_docs .add (draft )
244234 SearchRule .objects .create (
@@ -250,42 +240,19 @@ def test_subscription(self):
250240 r = self .client .get (url )
251241 self .assertEqual (r .status_code , 200 )
252242
253- # do subscribe
254- mailbox_before = len (outbox )
255- r = self .client .post (url , { "email" : "subscriber@example.com" , "notify_on" : "significant" })
256- self .assertEqual (r .status_code , 200 )
257- self .assertEqual (len (outbox ), mailbox_before + 1 )
258-
259- # go to confirm page
260- confirm_url = self .extract_confirm_url (outbox [- 1 ])
261- r = self .client .get (confirm_url )
262- self .assertEqual (r .status_code , 200 )
263-
264- # confirm subscribe
265- r = self .client .post (confirm_url , { 'action' : 'confirm' })
243+ # subscribe
244+ email = Email .objects .filter (person__user__username = "plain" ).first ()
245+ r = self .client .post (url , { "email" : email .pk , "notify_on" : "significant" , "action" : "subscribe" })
266246 self .assertEqual (r .status_code , 302 )
267- self .assertEqual (EmailSubscription .objects .filter (community_list = clist , email = "subscriber@example.com" , significant = True ).count (), 1 )
268-
269- # unsubscribe
270- url = urlreverse ("community_personal_subscription" , kwargs = { "operation" : "unsubscribe" , "username" : "plain" })
271- r = self .client .get (url )
272- self .assertEqual (r .status_code , 200 )
273247
274- # do unsubscribe
275- mailbox_before = len (outbox )
276- r = self .client .post (url , { "email" : "subscriber@example.com" , "notify_on" : "significant" })
277- self .assertEqual (r .status_code , 200 )
278- self .assertEqual (len (outbox ), mailbox_before + 1 )
248+ subscription = EmailSubscription .objects .filter (community_list = clist , email = email , notify_on = "significant" ).first ()
279249
280- # go to confirm page
281- confirm_url = self .extract_confirm_url (outbox [- 1 ])
282- r = self .client .get (confirm_url )
283- self .assertEqual (r .status_code , 200 )
250+ self .assertTrue (subscription )
284251
285- # confirm unsubscribe
286- r = self .client .post (confirm_url , { ' action' : 'confirm' })
252+ # delete subscription
253+ r = self .client .post (url , { "subscription_id" : subscription . pk , " action" : "unsubscribe" })
287254 self .assertEqual (r .status_code , 302 )
288- self .assertEqual (EmailSubscription .objects .filter (community_list = clist , email = "subscriber@example.com" , significant = True ).count (), 0 )
255+ self .assertEqual (EmailSubscription .objects .filter (community_list = clist , email = email , notify_on = "significant" ).count (), 0 )
289256
290257 def test_notification (self ):
291258 draft = make_test_data ()
@@ -299,7 +266,7 @@ def test_notification(self):
299266 text = "test" ,
300267 )
301268
302- EmailSubscription .objects .create (community_list = clist , email = "subscriber@example.com" , significant = True )
269+ EmailSubscription .objects .create (community_list = clist , email = Email . objects . filter ( person__user__username = "plain" ). first (), notify_on = "significant" )
303270
304271 mailbox_before = len (outbox )
305272 active_state = State .objects .get (type = "draft" , slug = "active" )
0 commit comments