Esempio n. 1
0
    def test04_subscription_email(self):
        """ Test Subscription Email """
        # Subscribe to a tag from gitpost and webpost Note, don't send
        # a request to do it so that create_index() will happen later,
        # as it is before_first_request

        with self.app.app_context():
            db_session.expire_on_commit = False
            post = db_session.query(Post).get(self.post_id)

            user = User(username=self.knowledge_username)
            if user.id is None:
                db_session.commit()
            user_id = user.id

            # grab the first tag from the post
            tag_id = post.tags[0].id
            post_id = post.id

            subscription = Subscription(user_id=user_id,
                                        object_type='tag',
                                        object_id=tag_id)
            db_session.add(subscription)
            db_session.commit()

            # Run a request, which should trigger a subscription email for
            # tag_to_subscribe
            with self.app.config['mail'].record_messages() as outbox:
                with self.app.app_context():
                    send_subscription_emails(post)

            emails_sent = (db_session.query(Email).filter(
                and_(Email.object_id == post_id, Email.user_id == user_id,
                     Email.trigger_id == tag_id,
                     Email.trigger_type == 'subscription')).all())

            # There should be exactly 1 email sent to the user for the target post
            # Check EmailSent records
            assert len(
                outbox) == 1, 'One subscription email should be actually sent'
            assert len(emails_sent
                       ) == 1, 'One subscription email should recorded as sent'
            # Check outbox of messages
            assert len(
                outbox[0].bcc
            ) == 1, 'One subscription email should be actually sent to one user'
            assert "A knowledge post was just posted under tag" in outbox[
                0].body, 'Email should be the subscription email'

            username_to_email = self.app.repository.config.username_to_email
            assert outbox[0].bcc[0] == username_to_email(
                self.knowledge_username)
Esempio n. 2
0
    def test04_subscription_email(self):
        """ Test Subscription Email """
        # Subscribe to a tag from gitpost and webpost Note, don't send
        # a request to do it so that create_index() will happen later,
        # as it is before_first_request

        with self.app.app_context():
            db_session.expire_on_commit = False
            post = db_session.query(Post).get(self.post_id)

            user = User(identifier=self.knowledge_username)
            if user.id is None:
                db_session.commit()
            user_id = user.id

            # grab the first tag from the post
            tag_id = post.tags[0].id
            post_id = post.id

            subscription = Subscription(user_id=user_id, object_type='tag',
                                        object_id=tag_id)
            db_session.add(subscription)
            db_session.commit()

            # Run a request, which should trigger a subscription email for
            # tag_to_subscribe
            with self.app.config['mail'].record_messages() as outbox:
                with self.app.app_context():
                    send_subscription_emails(post)

            emails_sent = (db_session.query(Email)
                                     .filter(and_(Email.object_id == post_id,
                                                  Email.user_id == user_id,
                                                  Email.trigger_id == tag_id,
                                                  Email.trigger_type == 'subscription'))
                                     .all())

            # There should be exactly 1 email sent to the user for the target post
            # Check EmailSent records
            assert len(outbox) == 1, 'One subscription email should be actually sent'
            assert len(emails_sent) == 1, 'One subscription email should recorded as sent'
            # Check outbox of messages
            assert len(outbox[0].bcc) == 1, 'One subscription email should be actually sent to one user'
            assert "A knowledge post was just posted under tag" in outbox[0].body, 'Email should be the subscription email'

            username_to_email = self.app.repository.config.username_to_email
            assert outbox[0].bcc[0] == username_to_email(self.knowledge_username)
Esempio n. 3
0
    def test04_subscription_email(self):
        """ Test Subscription Email """
        # Subscribe to a tag from gitpost and webpost Note, don't send
        # a request to do it so that create_index() will happen later,
        # as it is before_first_request

        with self.app.app_context():
            db_session.expire_on_commit = False
            post = db_session.query(Post).get(self.post_id)

            user = User(identifier=self.knowledge_username)
            if user.id is None:
                db_session.commit()
            user_id = user.id

            # grab the first tag from the post
            tag_id = post.tags[0].id
            post_id = post.id

            subscription = Subscription(user_id=user_id,
                                        object_type='tag',
                                        object_id=tag_id)
            db_session.add(subscription)
            db_session.commit()

            # Run a request, which should trigger a subscription email for
            # tag_to_subscribe
            with self.app.config['mail'].record_messages() as outbox:
                with self.app.app_context():
                    send_subscription_emails(post)

            emails_sent = (db_session.query(Email).filter(
                and_(Email.object_id == post_id, Email.user_id == user_id,
                     Email.trigger_id == tag_id,
                     Email.trigger_type == 'subscription')).all())

            # There should be exactly 1 email sent to the user for the target post
            # Check EmailSent records
            assert len(
                outbox) == 1, 'One subscription email should be actually sent'
            assert len(emails_sent
                       ) == 1, 'One subscription email should recorded as sent'
            # Check outbox of messages
            assert len(
                outbox[0].bcc
            ) == 1, 'One subscription email should be actually sent to one user'
            assert "Title: " in outbox[
                0].body, 'Plain email should use the txt template'
            assert "cid:Thumb" in outbox[
                0].html, 'Rich email should use the html template'
            # Check thumbnail attachment
            assert len(
                outbox[0].attachments) == 1, 'One attachment should be sent'
            thumbnail = outbox[0].attachments[0]
            assert base64.b64decode(
                self.thumbnail) == thumbnail.data, 'Attachment should match'
            assert [['Content-ID', '<Thumb>']
                    ] == thumbnail.headers, 'Attachment id should match'

            username_to_email = self.app.repository.config.username_to_email
            assert outbox[0].bcc[0] == username_to_email(
                self.knowledge_username)