def setUp(self): """Set up the TagsTest Class by instantiating a tag.""" self.repo = KnowledgeRepository.for_uri('tests/test_repo', auto_create=True) self.app = self.repo.get_app(config='tests/config_server.py') self.client = self.app.test_client() self.knowledge_username = '******' with self.app.app_context(): user = User(identifier=self.knowledge_username) if user.id is None: db_session.commit() self.user_id = user.id # we'll create a tag for the purpose of tag testing test_run = datetime.datetime.now().strftime('%Y-%m-%d') tag = Tag(name='test/tag_' + test_run) db_session.commit() TagsTest.tag_id = tag.id TagsTest.tag_name = tag.name TagsTest.user_id = self.user_id # We need an example post as well to test some of the # add/delete/rename functionality example_post = (db_session.query(Post).first()) TagsTest.post_path = example_post.path self.headers = { self.app.config['AUTH_USER_IDENTIFIER_REQUEST_HEADER']: self.knowledge_username }
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)
def setUp(self): self.repo = KnowledgeRepository.for_uri('tests/test_repo', auto_create=True) self.repo_app = self.repo.get_app(config='tests/config_server.py') self.app = self.repo_app.test_client() self.knowledge_username = '******' with self.repo_app.app_context(): user = User(identifier=self.knowledge_username) if user.id is None: db_session.commit() self.user_id = user.id username_request_header = self.repo_app.config.get( "AUTH_USER_IDENTIFIER_REQUEST_HEADER") self.headers = {username_request_header: self.knowledge_username}
def setUpClass(self): self.repo = KnowledgeRepository.for_uri('tests/test_repo', auto_create=True) self.app = self.repo.get_app(config='tests/config_server.py') self.app.repository.config.editors = ['knowledge_editors'] self.client = self.app.test_client() self.knowledge_username = '******' # this creates a user with self.app.app_context(): User(username=self.knowledge_username) web_post = Post(title='test_webpost') git_post = (db_session.query(Post).first()) db_session.add(web_post) web_post.authors = ['test_author'] git_post.tags = ['test_tag'] db_session.commit() self.web_post_id = web_post.id self.git_post_id = git_post.id
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)