예제 #1
0
    def test_get_templates(self):
        """Make sure the get_templates method behaves as expected."""
        worker_base = SubscriptionEmailWorker({})

        # Basic template test.
        subject, txt, html = worker_base.get_templates(method='POST',
                                                       resource_name='story',
                                                       sub_resource_name=None)
        self.assertEqual('story/POST_subject.txt', subject)
        self.assertEqual('story/POST.txt', txt)
        self.assertEqual('story/POST.html', html)

        # Subresource template test.
        subject, txt, html = worker_base.get_templates(method='POST',
                                                       resource_name='story',
                                                       sub_resource_name='f')
        self.assertEqual('story/f/POST_subject.txt', subject)
        self.assertEqual('story/f/POST.txt', txt)
        self.assertEqual('story/f/POST.html', html)
예제 #2
0
    def test_get_templates(self):
        """Make sure the get_templates method behaves as expected."""
        worker_base = SubscriptionEmailWorker({})

        # Basic template test.
        subject, txt, html = worker_base.get_templates(method='POST',
                                                       resource_name='story',
                                                       sub_resource_name=None)
        self.assertEqual('story/POST_subject.txt', subject)
        self.assertEqual('story/POST.txt', txt)
        self.assertEqual('story/POST.html', html)

        # Subresource template test.
        subject, txt, html = worker_base.get_templates(method='POST',
                                                       resource_name='story',
                                                       sub_resource_name='f')
        self.assertEqual('story/f/POST_subject.txt', subject)
        self.assertEqual('story/f/POST.txt', txt)
        self.assertEqual('story/f/POST.html', html)
예제 #3
0
    def test_handle_email(self, get_smtp_client):
        """Make sure that events from the queue are sent as emails."""
        dummy_smtp = mock.Mock(smtplib.SMTP)
        worker_base = SubscriptionEmailWorker({})
        get_smtp_client.return_value.__enter__ = dummy_smtp

        with base.HybridSessionManager():
            session = db_api_base.get_session()
            author = db_api_base.entity_get(models.User, 2, session=session)
            story = db_api_base.entity_get(models.Story, 1, session=session)
            story_dict = story.as_dict()
            story_after_dict = copy.copy(story_dict)
            story_after_dict['title'] = 'New Test Title'

            subscribers = worker_base.get_subscribers(session, 'story', 1)
            self.assertEqual(2, len(subscribers))

            worker_base.handle_email(session=session,
                                     author=author,
                                     subscribers=subscribers,
                                     method='PUT',
                                     url='http://localhost/',
                                     path='/stories/1',
                                     query_string='',
                                     status=200,
                                     resource='story',
                                     resource_id=1,
                                     resource_before=story_dict,
                                     resource_after=story_after_dict)
            # There should be two subscribers, but only one should get an
            # email since the other is a digest receiver.

            subscribed_user = db_api_base.entity_get(models.User,
                                                     3,
                                                     session=session)
            self.assertEqual(dummy_smtp.return_value.sendmail.call_count, 1)
            self.assertEqual(
                dummy_smtp.return_value.sendmail.call_args[1]['to_addrs'],
                subscribed_user.email)
예제 #4
0
    def test_handle_email(self, get_smtp_client):
        """Make sure that events from the queue are sent as emails."""
        dummy_smtp = mock.Mock(smtplib.SMTP)
        worker_base = SubscriptionEmailWorker({})
        get_smtp_client.return_value.__enter__ = dummy_smtp

        with base.HybridSessionManager():
            session = db_api_base.get_session()
            author = db_api_base.entity_get(models.User, 2, session=session)
            story = db_api_base.entity_get(models.Story, 1, session=session)
            story_dict = story.as_dict()
            story_after_dict = copy.copy(story_dict)
            story_after_dict['title'] = 'New Test Title'

            subscribers = worker_base.get_subscribers(session, 'story', 1)
            self.assertEqual(2, len(subscribers))

            worker_base.handle_email(session=session,
                                     author=author,
                                     subscribers=subscribers,
                                     method='PUT',
                                     url='http://localhost/',
                                     path='/stories/1',
                                     query_string='',
                                     status=200,
                                     resource='story',
                                     resource_id=1,
                                     resource_before=story_dict,
                                     resource_after=story_after_dict)
            # There should be two subscribers, but only one should get an
            # email since the other is a digest receiver.

            subscribed_user = db_api_base.entity_get(models.User, 3,
                                                     session=session)
            self.assertEqual(dummy_smtp.return_value.sendmail.call_count, 1)
            self.assertEqual(
                dummy_smtp.return_value.sendmail.call_args[1]['to_addrs'],
                subscribed_user.email)