def test_actor_avatar(self): avatar = create_content() self.api_post('/api/user/change_avatar', {'content_id': avatar.id}, user=self.actor) comment = create_quest_comment(author=self.user) star_models.star(self.actor, comment) sticker = comment.stickers.all()[0] stream = ActivityStream(self.user.id, activity_types={StarredActivity.TYPE: StarredActivity}) activity = StarredActivity.from_sticker(self.actor, sticker) stream.push(activity) activity, _ = list(self.user.redis.activity_stream) self.assertTrue('avatar_url' in activity.to_client()['actor'])
def test_empty_quest_inbox(self): create_quest_comment(quest=self.quest, author=self.user) resp = self.api_post('/api/quests/inbox', user=self.user) self.assertAPISuccess(resp) self.assertEqual(0, len(resp['quests'])) self.assertFalse('current_quest' in resp)
def test_empty_quest_inbox(self): create_quest_comment(quest=self.quest, author=self.user) resp = self.api_post('/api/quests/history', user=self.user) self.assertAPISuccess(resp) self.assertEqual(1, len(resp['quests'])) self.assertEqual(resp['quests'][0]['id'], self.quest.id)
def test_deny_and_ban(self): cmt = create_quest_comment(self.quest) cmt2 = create_quest_comment(self.quest, author=cmt.author) self.api_post('/api/whitelisting/deny', { 'comment_id': cmt.id, 'disable_author': True }, user=create_staff()) self._assert_not_in_gallery(cmt) self._assert_not_in_gallery(cmt2)
def test_profile(self): self.assertStatus(200, '/' + self.user.username) for _ in range(10): cmt = create_quest_comment(author=self.user) self.api_post('/api/stars/star', {'comment_id': cmt.id}) self.assertStatus(200, '/' + self.user.username)
def test_starred_comments_gallery(self): cmt = create_quest_comment(self.quest) user = create_user() self._star(cmt.id, user=user) gallery = self.api_post('/api/quest_comments/starred_comments_gallery', {'username': user.username})['comments'] self.assertEqual(cmt.id, gallery[0]['id'])
def test_rejudge(self): cmt = create_quest_comment(self.quest) self.api_post("/api/whitelisting/deny", {"comment_id": cmt.id}, user=create_staff()) self._assert_not_in_gallery(cmt) self.api_post("/api/whitelisting/allow", {"comment_id": cmt.id}, user=create_staff()) self._assert_in_gallery(cmt)
def test_rejudge(self): cmt = create_quest_comment(self.quest) self.api_post('/api/whitelisting/deny', {'comment_id': cmt.id}, user=create_staff()) self._assert_not_in_gallery(cmt) self.api_post('/api/whitelisting/allow', {'comment_id': cmt.id}, user=create_staff()) self._assert_in_gallery(cmt)
def test_visibility_changes(self): cmt = create_quest_comment(self.quest) self._gallery(self.quest) deny(cmt) cmts = self._gallery(self.quest) self.assertFalse(cmt.id in [c['id'] for c in cmts])
def test_create_share_url_for_channel_via_api(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', {'comment_id': cmt.id, 'channel': 'testing'}, user=self.user) self.assertAPISuccess(result) url = result['share_url'] rmatch = '/s/{}'.format(util.base36encode(ShareTrackingUrl.objects.order_by('-id')[0].id)) self.assertEqual(url[url.rfind(rmatch):], rmatch)
def test_create_share_url_for_channel_has_message_for_twitter(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', { 'comment_id': cmt.id, 'channel': 'twitter' }, user=self.user) self.assertTrue('message' in result)
def test_create_share_url_for_channel_via_api(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', {'comment_id': cmt.id, 'channel': 'testing'}, user=self.user) self.assertAPISuccess(result) url = result['share_url'] rmatch = '/s/1j' self.assertEqual(url[url.rfind(rmatch):], rmatch)
def test_reenable(self): cmt = create_quest_comment(self.quest) self._assert_not_in_gallery(cmt) self._disable() self._assert_in_gallery(cmt) self._enable() self._assert_not_in_gallery(cmt)
def test_reactions(self): cmt = create_quest_comment() star_models.star(create_user(), cmt) Playback.append(comment=cmt, viewer=create_user()) cmt = QuestComment.objects.get(id=cmt.id) reactions = cmt.details().reactions self.assertEqual(len(reactions), 2)
def _followee_post(self): """ Returns the posted comment. """ self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types=[FolloweePostedActivity]) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) return comment
def test_quest_comments_with_forced_id(self): cmt = create_quest_comment(self.quest) for _ in range(4): create_quest_comment(self.quest) def get_cmts(): return self.api_post('/api/quests/comments', { 'quest_id': self.quest.id, 'force_comment_id': cmt.id, })['comments'] cmts = get_cmts() self.assertTrue(str(cmt.id) in [str(c['id']) for c in cmts]) self.assertEqual(len(cmts), COMMENTS_PER_PAGE + 1) cmt = create_quest_comment(self.quest) cmts = get_cmts() self.assertTrue(str(cmt.id) in [str(c['id']) for c in cmts]) self.assertEqual(len(cmts), COMMENTS_PER_PAGE)
def test_followee_posted(self): self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types={FolloweePostedActivity.TYPE: FolloweePostedActivity}) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) activity, _ = list(self.user.redis.activity_stream) self.assertEqual(activity.to_client()['comment_id'], comment.id)
def test_auto_moderation_from_flags(self): cmt = create_quest_comment() for i in range(1, settings.AUTO_MODERATE_FLAGGED_COMMENTS_THRESHOLD + 1): resp = self.api_post('/api/comment/flag', {'comment_id': cmt.id}) cmt = QuestComment.all_objects.get(pk=cmt.pk) getattr(self, 'assert' + str(i == settings.AUTO_MODERATE_FLAGGED_COMMENTS_THRESHOLD))( cmt.visibility == Visibility.DISABLED) self.assertTrue(cmt.id in [qc.id for qc in QuestComment.unjudged_flagged()])
def test_cache_invalidation(self): original_len = len(self._get_items()) self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types=[FolloweePostedActivity]) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) self.assertEqual(len(self._get_items()), original_len + 1)
def test_create_share_url_for_channel_via_api(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', { 'comment_id': cmt.id, 'channel': 'testing' }, user=self.user) self.assertAPISuccess(result) url = result['share_url'] rmatch = '/s/1j' self.assertEqual(url[url.rfind(rmatch):], rmatch)
def test_divvy(self): cmt = create_quest_comment(self.quest) cmt.id = 9001 cmt.save() for mode in ['']: def divvy(from_, to): return self.get('/admin/staff/moderation{}/divvy/{}-{}'.format(mode, from_, to), user=create_staff()).content self.assertFalse(str(cmt.id) in divvy(2, 4)) self.assertTrue(str(cmt.id) in divvy(0, 9)) self.assertTrue(str(cmt.id) in divvy(0, 1))
def test_create_share_url_for_channel_via_api(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', { 'comment_id': cmt.id, 'channel': 'testing' }, user=self.user) self.assertAPISuccess(result) url = result['share_url'] rmatch = '/s/{}'.format( util.base36encode(ShareTrackingUrl.objects.order_by('-id')[0].id)) self.assertEqual(url[url.rfind(rmatch):], rmatch)
def recipients(): actor = create_user() cmt = create_quest_comment(author=author) sticker = CommentSticker.objects.create( comment=cmt, timestamp=time.time(), type_id=settings.STAR_STICKER_TYPE_ID, user=actor, ip='0.0.0.0', ) r = action_recipients('starred', actor, sticker, channel='PushNotificationChannel') return (r, cmt)
def test_quest_gallery_for_comment(self): cmt = create_quest_comment(self.quest) for _ in range(4): create_quest_comment(self.quest) def get_cmts(): return self.api_post('/api/quests/gallery_for_comment', { 'comment_id': cmt.id, })['comments'] cmts = get_cmts() print [c['id'] for c in cmts] self.assertTrue(str(cmt.id) in [str(c['id']) for c in cmts]) self.assertEqual(len(cmts), COMMENTS_PER_PAGE) cmt = create_quest_comment(self.quest) cmts = get_cmts() self.assertTrue(str(cmt.id) in [str(c['id']) for c in cmts]) self.assertEqual(len(cmts), COMMENTS_PER_PAGE) curate(cmt) self.assertTrue(str(cmt.id) in [str(c['id']) for c in get_cmts()])
def test_cache_invalidation(self): def get_items(): return self.api_post('/api/activity/activities', user=self.user)['activities'] original_len = len(get_items()) self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types={FolloweePostedActivity.TYPE: FolloweePostedActivity}) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) self.assertEqual(len(get_items()), original_len + 1)
def test_followee_posted(self): self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types={ FolloweePostedActivity.TYPE: FolloweePostedActivity }) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) activity, _ = list(self.user.redis.activity_stream) self.assertEqual(activity.to_client()['comment_id'], comment.id)
def test_divvy(self): cmt = create_quest_comment(self.quest) cmt.id = 9001 cmt.save() for mode in ['']: def divvy(from_, to): return self.get('/admin/staff/moderation{}/divvy/{}-{}'.format( mode, from_, to), user=create_staff()).content self.assertFalse(str(cmt.id) in divvy(2, 4)) self.assertTrue(str(cmt.id) in divvy(0, 9)) self.assertTrue(str(cmt.id) in divvy(0, 1))
def test_actor_avatar(self): avatar = create_content() self.api_post('/api/user/change_avatar', {'content_id': avatar.id}, user=self.actor) comment = create_quest_comment(author=self.user) star_models.star(self.actor, comment) sticker = comment.stickers.all()[0] stream = ActivityStream(self.user.id, activity_types=[StarredActivity]) activity = StarredActivity.from_sticker(self.actor, sticker) stream.push(activity) activity, _ = list(self.user.redis.activity_stream) self.assertTrue('avatar_url' in activity.to_client()['actor'])
def test_auto_moderation_from_flags(self): cmt = create_quest_comment() for i in range(1, knobs.AUTO_DISABLE_FLAGGED_COMMENTS_THRESHOLD[None] + 1): resp = self.api_post('/api/comment/flag', {'comment_id': cmt.id}) cmt = QuestComment.all_objects.get(pk=cmt.pk) getattr( self, 'assert' + str(i == knobs.AUTO_DISABLE_FLAGGED_COMMENTS_THRESHOLD[None]))( cmt.visibility == Visibility.DISABLED) self.assertTrue( cmt.id in [qc.id for qc in QuestComment.unjudged_flagged()])
def test_cache_invalidation(self): def get_items(): return self.api_post('/api/activity/activities', user=self.user)['activities'] original_len = len(get_items()) self.user.follow(self.actor) comment = create_quest_comment(author=self.actor) stream = ActivityStream(self.user.id, activity_types={ FolloweePostedActivity.TYPE: FolloweePostedActivity }) activity = FolloweePostedActivity.from_comment(self.actor, comment) stream.push(activity) self.assertEqual(len(get_items()), original_len + 1)
def test_unjudged(self): cmt = create_quest_comment(self.quest) self._assert_not_in_gallery(cmt)
def test_create_share_url_for_channel_has_message_for_twitter(self): cmt = create_quest_comment() result = self.api_post('/api/share/create_for_channel', {'comment_id': cmt.id, 'channel': 'twitter'}, user=self.user) self.assertTrue('message' in result)
def after_setUp(self): self.comment = create_quest_comment() self.user = create_user()
def test_deny(self): cmt = create_quest_comment(self.quest) self.api_post('/api/whitelisting/deny', {'comment_id': cmt.id}, user=create_staff()) self._assert_not_in_gallery(cmt)
def test_quest_comments(self): cmt = create_quest_comment(self.quest) cmts = self.api_post('/api/quests/comments', {'quest_id': self.quest.id})['comments'] self.assertEqual(cmts[0]['id'], cmt.id)
def test_self_flag(self): cmt = create_quest_comment() resp = self.api_post('/api/comment/flag', {'comment_id': cmt.id}, user=cmt.author)
def test_playback_data(self): data = {'foo': 'bar'} self._check(create_quest_comment(playback_data=data), data)
def test_deny_and_ban(self): cmt = create_quest_comment(self.quest) cmt2 = create_quest_comment(self.quest, author=cmt.author) self.api_post('/api/whitelisting/deny', {'comment_id': cmt.id, 'disable_author': True}, user=create_staff()) self._assert_not_in_gallery(cmt) self._assert_not_in_gallery(cmt2)
def test_reactions_update_on_playback(self): cmt = create_quest_comment() self.assertEqual(len(cmt.details().reactions), 0) cmt = self.api_post('/api/playback/playback', {'comment_id': cmt.id})['comment'] self.assertEqual(len(cmt['reactions']), 1)
def test_empty_playback_data(self): self._check(create_quest_comment(), None)
def test_playback_data(self): data = json.dumps({'foo': 'bar'}) self._check(create_quest_comment(playback_data=data).id, data)
def test_top_gallery(self): cmt = create_quest_comment(self.quest) self.api_post('/api/stars/star', {'comment_id': cmt.id}) gallery = self.api_post('/api/quests/top_gallery', {'quest_id': cmt.parent_comment_id})['comments'] self.assertEqual(1, len(gallery))