def test_post_notification(self): """Post a comment that sends a notification. """ testing.enable_subscription(self.root.forum) testing.set_member_email('dummy', '*****@*****.**') subscriptions = ISubscriptionManager(self.root.forum.topic) subscriptions.subscribe('*****@*****.**') browser = self.layer.get_browser(topic_settings) browser.login('dummy', 'dummy') self.assertEqual(browser.open('/root/forum'), 200) self.assertEqual(browser.get_link('Test Topic').click(), 200) # Post a comment. We don't use a title, so the topic one is used form = browser.get_form('post') form.get_control("title").value = "I am good" form.get_control("text").value = "very, very good" # We are already subscribed, so no option to subscribe self.assertRaises(AssertionError, form.get_control, 'subscribe') self.assertEqual(form.get_control("action.post").click(), 200) self.assertEqual(browser.inspect.feedback, ["Comment added."]) # A mail should have been sent to dummy message = self.root.service_mailhost.read_last_message() self.assertNotEqual(message, None) self.assertEqual(message.content_type, 'text/plain') self.assertEqual(message.charset, 'utf-8') self.assertEqual(message.mto, ['*****@*****.**']) self.assertEqual(message.mfrom, '*****@*****.**') self.assertEqual(message.subject, 'New comment in "Test Topic"')
def test_post_and_subscribe(self): """Post and subscribe to a topic. """ testing.enable_subscription(self.root.forum) testing.set_member_email('dummy', '*****@*****.**') subscriptions = ISubscriptionManager(self.root.forum.topic) self.assertEqual(subscriptions.is_subscribed('*****@*****.**'), False) self.assertEqual(len(self.root.service_mailhost.messages), 0) browser = self.layer.get_browser(topic_settings) browser.login('dummy', 'dummy') self.assertEqual(browser.open('/root/forum'), 200) self.assertEqual(browser.get_link('Test Topic').click(), 200) # Post a comment. We don't use a title, so the topic one is used form = browser.get_form('post') form.get_control("text").value = "How are you ?" self.assertEqual(form.get_control('subscribe').checked, True) self.assertEqual(form.get_control("action.post").click(), 200) # The comment is added, and the request for subscription is triggred. self.assertEqual(browser.inspect.feedback, [ "Comment added.", "A confirmation mail have been sent for your subscription." ]) subscription_request = self.root.service_mailhost.read_last_message() self.assertNotEqual(subscription_request, None) self.assertEqual(subscription_request.mto, ['*****@*****.**']) self.assertEqual(subscription_request.mfrom, '*****@*****.**') self.assertEqual(subscription_request.subject, 'Subscription confirmation to "Test Topic"') self.assertEqual(len(subscription_request.urls), 2) # the confirmation link is the last url in the mail confirmation_url = subscription_request.urls[-1] self.assertEqual(browser.open(confirmation_url), 200) self.assertEqual( browser.location, '/root/forum/topic/subscriptions.html/@@confirm_subscription') self.assertEqual( browser.html.xpath('//p[@class="subscription-result"]/text()'), [ 'You have been successfully subscribed. ' 'You will now receive email notifications.' ]) self.assertEqual(subscriptions.is_subscribed('*****@*****.**'), True)
def test_post_and_subscribe(self): """Post and subscribe to a topic. """ testing.enable_subscription(self.root.forum) testing.set_member_email('dummy', '*****@*****.**') subscriptions = ISubscriptionManager(self.root.forum.topic) self.assertEqual( subscriptions.is_subscribed('*****@*****.**'), False) self.assertEqual(len(self.root.service_mailhost.messages), 0) browser = self.layer.get_browser(topic_settings) browser.login('dummy', 'dummy') self.assertEqual(browser.open('/root/forum'), 200) self.assertEqual(browser.get_link('Test Topic').click(), 200) # Post a comment. We don't use a title, so the topic one is used form = browser.get_form('post') form.get_control("text").value = "How are you ?" self.assertEqual(form.get_control('subscribe').checked, True) self.assertEqual(form.get_control("action.post").click(), 200) # The comment is added, and the request for subscription is triggred. self.assertEqual( browser.inspect.feedback, ["Comment added.", "A confirmation mail have been sent for your subscription."]) subscription_request = self.root.service_mailhost.read_last_message() self.assertNotEqual(subscription_request, None) self.assertEqual(subscription_request.mto, ['*****@*****.**']) self.assertEqual(subscription_request.mfrom, '*****@*****.**') self.assertEqual( subscription_request.subject, 'Subscription confirmation to "Test Topic"') self.assertEqual(len(subscription_request.urls), 2) # the confirmation link is the last url in the mail confirmation_url = subscription_request.urls[-1] self.assertEqual(browser.open(confirmation_url), 200) self.assertEqual( browser.location, '/root/forum/topic/subscriptions.html/@@confirm_subscription') self.assertEqual( browser.html.xpath('//p[@class="subscription-result"]/text()'), ['You have been successfully subscribed. ' 'You will now receive email notifications.']) self.assertEqual(subscriptions.is_subscribed('*****@*****.**'), True)