Пример #1
0
    def test_new_contributor(self, get_current):
        """Verify that interested contributors are added to group."""
        get_current.return_value.domain = 'su.mo.com'
        group_name = 'Registered as contributor'
        group(name=group_name, save=True)
        data = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******',
            'password2': 'foobar22',
            'interested': 'yes'}
        response = self.client.post(reverse('users.register', locale='en-US'),
                                    data, follow=True)
        eq_(200, response.status_code)
        u = User.objects.get(username='******')
        eq_(group_name, u.groups.all()[0].name)

        # Activate user and verify email is sent.
        key = RegistrationProfile.objects.all()[0].activation_key
        url = reverse('users.activate', args=[u.id, key])
        response = self.client.get(url, follow=True)
        eq_(200, response.status_code)
        eq_(2, len(mail.outbox))
        assert mail.outbox[1].subject.find('Welcome to') == 0
        assert u.username in mail.outbox[1].body
Пример #2
0
    def test_new_contributor(self, get_current):
        """Verify that interested contributors are added to group."""
        get_current.return_value.domain = 'su.mo.com'
        group_name = 'Registered as contributor'
        group(name=group_name, save=True)
        data = {
            'username': '******',
            'email': '*****@*****.**',
            'password': '******',
            'password2': 'foobar22',
            'interested': 'yes'
        }
        response = self.client.post(reverse('users.register', locale='en-US'),
                                    data,
                                    follow=True)
        eq_(200, response.status_code)
        u = User.objects.get(username='******')
        eq_(group_name, u.groups.all()[0].name)

        # Activate user and verify email is sent.
        key = RegistrationProfile.objects.all()[0].activation_key
        url = reverse('users.activate', args=[u.id, key])
        response = self.client.get(url, follow=True)
        eq_(200, response.status_code)
        eq_(2, len(mail.outbox))
        assert mail.outbox[1].subject.find('Welcome to') == 0
        assert u.username in mail.outbox[1].body
Пример #3
0
    def test_right_group_profile(self):
        """Make sure we get the right group profile."""
        g1 = group(pk=100)
        g1.save()
        eq_(100, g1.pk)
        g2 = group(pk=101)
        g2.save()
        eq_(101, g2.pk)
        p = GroupProfile.objects.create(pk=100, group=g2, slug='foo')
        eq_(100, p.pk)

        eq_(group_link(g1), g1.name)
Пример #4
0
    def test_right_group_profile(self):
        """Make sure we get the right group profile."""
        g1 = group(pk=100)
        g1.save()
        eq_(100, g1.pk)
        g2 = group(pk=101)
        g2.save()
        eq_(101, g2.pk)
        p = GroupProfile.objects.create(pk=100, group=g2, slug='foo')
        eq_(100, p.pk)

        eq_(group_link(g1), g1.name)
Пример #5
0
 def setUp(self):
     super(AnnouncementModelTests, self).setUp()
     self.creator = user(save=True)
     profile(user=self.creator)
     self.group = group(save=True)
     self.locale = locale(locale='es', save=True)
     self.creator.groups.add(self.group)
Пример #6
0
    def setUp(self):
        url = reverse('forums.threads', args=[u'test-forum'])
        self.context = {'request': test_utils.RequestFactory().get(url)}

        self.group = group(save=True)

        # Set up forum_1
        f = self.forum_1 = forum(save=True)
        ct = ContentType.objects.get_for_model(self.forum_1)
        permission(codename='forums_forum.thread_edit_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.post_edit_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.post_delete_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct, object_id=f.id, group=self.group,
                   save=True)
        permission(codename='forums_forum.thread_sticky_forum',
                   content_type=ct, object_id=f.id, group=self.group,
                   save=True)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)

        # Set up forum_2
        f = self.forum_2 = forum(save=True)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
Пример #7
0
    def test_delete_post_belongs_to_thread_and_forum(self):
        """
        Delete post action - post belongs to thread and thread belongs to
        forum.
        """
        f = forum(save=True)
        t = thread(forum=f, save=True)
        # Post belongs to a different forum and thread.
        p = forum_post(save=True)
        u = p.author

        # Give the user the permission to delete posts.
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.post_delete_forum',
                   content_type=ct, object_id=p.thread.forum_id, group=g,
                   save=True)
        permission(codename='forums_forum.post_delete_forum',
                   content_type=ct, object_id=f.id, group=g, save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')

        # Post isn't in the passed forum:
        r = get(self.client, 'forums.delete_post',
                args=[f.slug, p.thread.id, p.id])
        eq_(404, r.status_code)

        # Post isn't in the passed thread:
        r = get(self.client, 'forums.delete_post',
                args=[p.thread.forum.slug, t.id, p.id])
        eq_(404, r.status_code)
Пример #8
0
 def test_new_contributor(self, get_current):
     """Verify that interested contributors are added to group."""
     get_current.return_value.domain = 'su.mo.com'
     group_name = 'Registered as contributor'
     group(name=group_name, save=True)
     data = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******',
         'password2': 'foobar22',
         'interested': 'yes'}
     response = self.client.post(reverse('users.register', locale='en-US'),
                                 data, follow=True)
     eq_(200, response.status_code)
     u = User.objects.get(username='******')
     eq_(group_name, u.groups.all()[0].name)
Пример #9
0
 def setUp(self):
     super(AddRemoveLeaderTests, self).setUp()
     self.user = user(save=True)
     add_permission(self.user, GroupProfile, 'change_groupprofile')
     self.leader = user(save=True)
     self.group_profile = group_profile(group=group(save=True), save=True)
     self.client.login(username=self.user.username, password='******')
Пример #10
0
    def test_move_thread(self):
        """Move a thread."""
        t = forum_post(save=True).thread
        f = forum(save=True)
        u = user(save=True)
        g = group(save=True)

        # Give the user permission to move threads between the two forums.
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_move_forum',
                   content_type=ct,
                   object_id=f.id,
                   group=g,
                   save=True)
        permission(codename='forums_forum.thread_move_forum',
                   content_type=ct,
                   object_id=t.forum.id,
                   group=g,
                   save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        response = post(self.client,
                        'forums.move_thread', {'forum': f.id},
                        args=[t.forum.slug, t.id])
        eq_(200, response.status_code)
        t = Thread.uncached.get(pk=t.pk)
        eq_(f.id, t.forum.id)
Пример #11
0
    def setUp(self):
        url = reverse('forums.threads', args=[u'test-forum'])
        self.context = {'request': test_utils.RequestFactory().get(url)}

        self.group = group(save=True)

        # Set up forum_1
        f = self.forum_1 = forum(save=True)
        ct = ContentType.objects.get_for_model(self.forum_1)
        permission(codename='forums_forum.thread_edit_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.post_edit_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.post_delete_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct, object_id=f.id, group=self.group,
                   save=True)
        permission(codename='forums_forum.thread_sticky_forum',
                   content_type=ct, object_id=f.id, group=self.group,
                   save=True)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)

        # Set up forum_2
        f = self.forum_2 = forum(save=True)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=f.id, group=self.group, save=True)
Пример #12
0
    def test_edit_post_moderator(self):
        """Editing post as a moderator works."""
        p = forum_post(save=True)
        t = p.thread
        f = t.forum

        # Create the moderator group, give it the edit permission
        # and add a moderator.
        moderator_group = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.post_edit_forum',
                   content_type=ct,
                   object_id=f.id,
                   group=moderator_group,
                   save=True)
        moderator = user(save=True)
        moderator_group.user_set.add(moderator)

        self.client.login(username=moderator.username, password='******')

        r = post(self.client,
                 'forums.edit_post', {'content': 'More new content'},
                 args=[f.slug, t.id, p.id])
        eq_(200, r.status_code)

        edited_p = Post.uncached.get(pk=p.pk)
        eq_('More new content', edited_p.content)
Пример #13
0
 def test_group_link_with_profile(self):
     g = group()
     g.save()
     p = GroupProfile.objects.create(group=g, slug='foo')
     text = group_link(g)
     doc = pq(text)
     eq_(reverse('groups.profile', args=[p.slug]),
         doc('a')[0].attrib['href'])
     eq_(g.name, doc('a')[0].text)
Пример #14
0
 def test_group_link_with_profile(self):
     g = group()
     g.save()
     p = GroupProfile.objects.create(group=g, slug='foo')
     text = group_link(g)
     doc = pq(text)
     eq_(reverse('groups.profile', args=[p.slug]),
         doc('a')[0].attrib['href'])
     eq_(g.name, doc('a')[0].text)
Пример #15
0
 def test_group_avatar(self):
     g = group()
     g.save()
     p = GroupProfile.objects.create(group=g, slug='foo')
     url = group_avatar(p)
     eq_(settings.DEFAULT_AVATAR, url)
     p.avatar = Mock()
     p.avatar.url = '/foo/bar'
     url = group_avatar(p)
     eq_('/foo/bar', url)
Пример #16
0
 def test_group_avatar(self):
     g = group()
     g.save()
     p = GroupProfile.objects.create(group=g, slug='foo')
     url = group_avatar(p)
     eq_(settings.DEFAULT_AVATAR, url)
     p.avatar = Mock()
     p.avatar.url = '/foo/bar'
     url = group_avatar(p)
     eq_('/foo/bar', url)
Пример #17
0
 def setUp(self):
     super(HelpfulVotesGraphTests, self).setUp()
     self.user = user(save=True)
     self.client.login(username=self.user.username, password='******')
     self.group = group(name='Contributors', save=True)
     # Without this, there were unrelated failures with l10n dashboard
     self.REDIS_KEY = settings.HELPFULVOTES_UNHELPFUL_KEY
     try:
         self.redis = redis_client('helpfulvotes')
         self.redis.flushdb()
     except RedisError:
         raise SkipTest
Пример #18
0
    def test_personal_dashboards(self):
        """Just run through it to make sure there aren't obvious explosions."""
        g = group(name='winners', save=True)
        g2 = group(name='losers', save=True)
        u = user(save=True)
        u.groups.add(g)
        u.groups.add(g2)

        GroupDashboard.objects.create(group=g, dashboard='sea', parameters='1')
        GroupDashboard.objects.create(group=g2, dashboard='sea',
                                      parameters='3')

        class MockRequest(object):
            user = u

        request = MockRequest()
        dashes = personal_dashboards(request)
        # Sort order of the two ATestDashboards is by group name.
        eq_(2, len(dashes))
        eq_('3', dashes[0].parameters)
        eq_(g, dashes[1].group)
Пример #19
0
    def test_ga_custom_variable_on_admin_login(self):
        """After logging in, there should be a ga-push data attr on body."""
        user_ = profile().user

        # Add user to Administrators and so should be "Contributor - Admin":
        user_.groups.add(group(name="Administrators", save=True))
        response = self.client.post(
            reverse("users.login"), {"username": user_.username, "password": "******"}, follow=True
        )
        eq_(200, response.status_code)
        doc = pq(response.content)
        assert '"Contributor - Admin"' in doc("body").attr("data-ga-push")
Пример #20
0
 def setUp(self):
     super(HelpfulVotesGraphTests, self).setUp()
     self.user = user(save=True)
     self.client.login(username=self.user.username, password='******')
     self.group = group(name='Contributors', save=True)
     # Without this, there were unrelated failures with l10n dashboard
     self.REDIS_KEY = settings.HELPFULVOTES_UNHELPFUL_KEY
     try:
         self.redis = redis_client('helpfulvotes')
         self.redis.flushdb()
     except RedisError:
         raise SkipTest
Пример #21
0
    def test_ga_custom_variable_on_contributor_login(self):
        """After logging in, there should be a ga-push data attr on body."""
        user_ = profile().user

        # Add user to Contributors and so should be "Contributor":
        user_.groups.add(group(name='Contributors', save=True))
        response = self.client.post(reverse('users.login'),
                                    {'username': user_.username,
                                     'password': '******'},
                                    follow=True)
        eq_(200, response.status_code)
        doc = pq(response.content)
        assert '"Contributor"' in doc('body').attr('data-ga-push')
Пример #22
0
    def test_personal_dashboards(self):
        """Just run through it to make sure there aren't obvious explosions."""
        g = group(name='winners', save=True)
        g2 = group(name='losers', save=True)
        u = user(save=True)
        u.groups.add(g)
        u.groups.add(g2)

        GroupDashboard.objects.create(group=g, dashboard='sea', parameters='1')
        GroupDashboard.objects.create(group=g2,
                                      dashboard='sea',
                                      parameters='3')

        class MockRequest(object):
            user = u

        request = MockRequest()
        dashes = personal_dashboards(request)
        # Sort order of the two ATestDashboards is by group name.
        eq_(2, len(dashes))
        eq_('3', dashes[0].parameters)
        eq_(g, dashes[1].group)
Пример #23
0
    def test_ga_custom_variable_on_admin_login(self):
        """After logging in, there should be a ga-push data attr on body."""
        user_ = profile().user

        # Add user to Administrators and so should be "Contributor - Admin":
        user_.groups.add(group(name='Administrators', save=True))
        response = self.client.post(reverse('users.login'),
                                    {'username': user_.username,
                                     'password': '******'},
                                    follow=True)
        eq_(200, response.status_code)
        doc = pq(response.content)
        assert '"Contributor - Admin"' in doc('body').attr('data-ga-push')
Пример #24
0
    def _setup_announcement(self, visible_dates=True):
        g = group(save=True)
        u1 = user(save=True)
        u2 = user(save=True)
        u1.groups.add(g)
        u2.groups.add(g)
        # Create profiles for these users
        profile(user=u1)
        profile(user=u2)
        self.user = u2

        return announcement(creator=u1, group=g, save=True,
                            visible_dates=visible_dates)
Пример #25
0
    def test_edit_thread_moderator(self):
        """Editing post as a moderator works."""
        t = forum_post(save=True).thread
        f = t.forum
        u = user(save=True)
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_edit_forum', content_type=ct,
                   object_id=f.id, group=g, save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        r = post(self.client, 'forums.edit_thread',
                 {'title': 'new title'}, args=[f.slug, t.id])
        eq_(200, r.status_code)
        edited_t = Thread.uncached.get(id=t.id)
        eq_('new title', edited_t.title)
Пример #26
0
    def test_edit_thread_moderator(self):
        """Editing post as a moderator works."""
        t = forum_post(save=True).thread
        f = t.forum
        u = user(save=True)
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_edit_forum', content_type=ct,
                   object_id=f.id, group=g, save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        r = post(self.client, 'forums.edit_thread',
                 {'title': 'new title'}, args=[f.slug, t.id])
        eq_(200, r.status_code)
        edited_t = Thread.uncached.get(id=t.id)
        eq_('new title', edited_t.title)
Пример #27
0
    def test_delete_thread_belongs_to_forum(self):
        """Delete thread action - thread belongs to forum."""
        f = forum(save=True)
        t = thread(save=True)  # Thread belongs to a different forum
        u = user(save=True)

        # Give the user the permission to delete threads.
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct, object_id=f.id, group=g, save=True)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct, object_id=t.forum.id, group=g, save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        r = get(self.client, 'forums.delete_thread', args=[f.slug, t.id])
        eq_(404, r.status_code)
Пример #28
0
    def test_delete_post_belongs_to_thread_and_forum(self):
        """
        Delete post action - post belongs to thread and thread belongs to
        forum.
        """
        f = forum(save=True)
        t = thread(forum=f, save=True)
        # Post belongs to a different forum and thread.
        p = forum_post(save=True)
        u = p.author

        # Give the user the permission to delete posts.
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.post_delete_forum',
                   content_type=ct,
                   object_id=p.thread.forum_id,
                   group=g,
                   save=True)
        permission(codename='forums_forum.post_delete_forum',
                   content_type=ct,
                   object_id=f.id,
                   group=g,
                   save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')

        # Post isn't in the passed forum:
        r = get(self.client,
                'forums.delete_post',
                args=[f.slug, p.thread.id, p.id])
        eq_(404, r.status_code)

        # Post isn't in the passed thread:
        r = get(self.client,
                'forums.delete_post',
                args=[p.thread.forum.slug, t.id, p.id])
        eq_(404, r.status_code)
Пример #29
0
    def test_move_thread(self):
        """Move a thread."""
        t = forum_post(save=True).thread
        f = forum(save=True)
        u = user(save=True)
        g = group(save=True)

        # Give the user permission to move threads between the two forums.
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=f.id, group=g, save=True)
        permission(codename='forums_forum.thread_move_forum', content_type=ct,
                   object_id=t.forum.id, group=g, save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        response = post(self.client, 'forums.move_thread',
                        {'forum': f.id},
                        args=[t.forum.slug, t.id])
        eq_(200, response.status_code)
        t = Thread.uncached.get(pk=t.pk)
        eq_(f.id, t.forum.id)
Пример #30
0
    def test_edit_post_moderator(self):
        """Editing post as a moderator works."""
        p = forum_post(save=True)
        t = p.thread
        f = t.forum

        # Create the moderator group, give it the edit permission
        # and add a moderator.
        moderator_group = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.post_edit_forum', content_type=ct,
                   object_id=f.id, group=moderator_group, save=True)
        moderator = user(save=True)
        moderator_group.user_set.add(moderator)

        self.client.login(username=moderator.username, password='******')

        r = post(self.client, 'forums.edit_post',
                 {'content': 'More new content'}, args=[f.slug, t.id, p.id])
        eq_(200, r.status_code)

        edited_p = Post.uncached.get(pk=p.pk)
        eq_('More new content', edited_p.content)
Пример #31
0
    def test_delete_thread_belongs_to_forum(self):
        """Delete thread action - thread belongs to forum."""
        f = forum(save=True)
        t = thread(save=True)  # Thread belongs to a different forum
        u = user(save=True)

        # Give the user the permission to delete threads.
        g = group(save=True)
        ct = ContentType.objects.get_for_model(f)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct,
                   object_id=f.id,
                   group=g,
                   save=True)
        permission(codename='forums_forum.thread_delete_forum',
                   content_type=ct,
                   object_id=t.forum.id,
                   group=g,
                   save=True)
        g.user_set.add(u)

        self.client.login(username=u.username, password='******')
        r = get(self.client, 'forums.delete_thread', args=[f.slug, t.id])
        eq_(404, r.status_code)
Пример #32
0
 def setUp(self):
     super(AnnouncementModelTests, self).setUp()
     self.creator = user(save=True)
     profile(self.creator).save()
     self.group = group(save=True)
     self.creator.groups.add(self.group)
Пример #33
0
 def test_group_link_no_profile(self):
     g = group()
     text = group_link(g)
     eq_(g.name, text)
Пример #34
0
 def setUp(self):
     super(GroupLocaleDashTests, self).setUp()
     self.g = group(save=True, name='A group')
     # defaults to a 'de' localization dashboard
     group_dashboard(group=self.g, save=True)
Пример #35
0
 def setUp(self):
     super(GroupLocaleDashTests, self).setUp()
     self.g = group(save=True, name='A group')
     # defaults to a 'de' localization dashboard
     group_dashboard(group=self.g, save=True)
Пример #36
0
 def setUp(self):
     super(DefaultDashboardRedirect, self).setUp()
     self.user = user(save=True)
     self.client.login(username=self.user.username, password='******')
     self.group = group(name='Contributors', save=True)
Пример #37
0
 def setUp(self):
     super(JoinContributorsTests, self).setUp()
     self.user = user(save=True)
     self.client.login(username=self.user.username, password='******')
     group(name='Contributors', save=True)
Пример #38
0
 def setUp(self):
     super(EditGroupProfileTests, self).setUp()
     self.user = user(save=True)
     self.group_profile = group_profile(group=group(save=True), save=True)
     self.client.login(username=self.user.username, password='******')
Пример #39
0
 def test_group_link_no_profile(self):
     g = group()
     text = group_link(g)
     eq_(g.name, text)
Пример #40
0
 def setUp(self):
     super(DefaultDashboardRedirect, self).setUp()
     self.user = user(save=True)
     self.client.login(username=self.user.username, password='******')
     self.group = group(name='Contributors', save=True)
Пример #41
0
 def setUp(self):
     super(AnnouncementModelTests, self).setUp()
     self.creator = user(save=True)
     profile(self.creator).save()
     self.group = group(save=True)
     self.creator.groups.add(self.group)
Пример #42
0
 def setUp(self):
     super(KarmaTitleHelperTests, self).setUp()
     self.user = user(save=True)
     self.group = group(name='group', save=True)
     self.user.groups.add(self.group)