Example #1
0
    def test_event_visibility(self):
        response = testing.get_public_client().get(reverse('event_index'))
        self.assertEqual(200, response.status_code)

        author = testing.create_user()
        venue = Venue.create_for_testing()

        event_a = Event.create_for_testing(author, venue)
        event_a.reviewed = True
        event_a.save()

        event_b = Event.create_for_testing(author, venue)
        event_b.reviewed = False
        event_b.save()

        # The general public should see only the reviewed event.
        response = testing.get_public_client().get(reverse('event_index'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['events']))

        # The author should see both.
        response = testing.get_user_client(author).get(reverse('event_index'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['events']))

        # Another regular user should also see both.
        response = testing.get_user_client().get(reverse('event_index'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['events']))
Example #2
0
    def test_band_redirects(self):
        """Tests for urls in form "/songs/band/id", which we can't handle."""
        old_url = "/songs/band/12"
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, reverse('songbook'), status_code=301)

        old_url = "/songs/band/12/"
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, reverse('songbook'), status_code=301)
Example #3
0
    def test_entity_index(self):
        author = testing.create_user()
        jack_white = Entity.create_for_testing()
        seven_nations_army = Song.create_for_testing(author)
        self.add_contribution(seven_nations_army, jack_white, True)
        jolene = Song.create_for_testing(author)
        self.add_contribution(jolene, jack_white, True)

        # Approve only Jolene.
        seven_nations_army.reviewed = False
        seven_nations_army.save()
        jolene.reviewed = True
        jolene.save()

        # General public should see only Jolene.
        response = testing.get_public_client().get(
            jack_white.get_absolute_url())
        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['songs']))

        # The author should see both.
        response = testing.get_user_client(author).get(
            jack_white.get_absolute_url())
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['songs']))

        # Any logged-in user should see both, too.
        response = testing.get_user_client().get(jack_white.get_absolute_url())
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['songs']))
Example #4
0
    def test_edit_item(self):
        author = testing.create_user()
        item = self.item_cls.create_for_testing(author)

        response = testing.get_public_client().get(item.get_edit_url())
        self.assertEqual(302, response.status_code)

        response = testing.get_user_client(author).get(item.get_edit_url())
        self.assertEqual(200, response.status_code)
Example #5
0
    def test_add_item(self):
        # Verify that the general public can't access the add view.
        response = testing.get_public_client().get(self.get_add_url())
        self.assertEqual(302, response.status_code)

        # Authenticated user should be able to access it just fine.
        authorized_user = testing.create_user()
        response = testing.get_user_client(authorized_user).get(self.get_add_url())
        self.assertEqual(200, response.status_code)
Example #6
0
    def test_redirect_by_id(self):
        """Tests evel older urls in form "/songs/song/id"."""
        song = self.song

        old_url = "/songs/song/%d" % (song.pk)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/songs/song/%d/" % (song.pk)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/songs/song/%d/print" % (song.pk)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/songs/song/%d/print/" % (song.pk)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)
Example #7
0
    def test_two_level_url_redirects(self):
        """Tests the old style two-level urls with entity-slug/song-slug."""
        song = self.song
        entity = self.entity

        old_url = "/spiewnik/%s/%s" % (entity.slug, song.old_slug)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/spiewnik/%s/%s/" % (entity.slug, song.old_slug)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/spiewnik/%s/%s/drukuj" % (entity.slug, song.old_slug)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)

        old_url = "/spiewnik/%s/%s/drukuj/" % (entity.slug, song.old_slug)
        response = testing.get_public_client().get(old_url, follow=True)
        self.assertRedirects(response, song.get_absolute_url(), status_code=301)
Example #8
0
    def test_to_review(self):
        login_url = reverse('hello') + '?next=' + reverse('to_review')
        response = testing.get_public_client().get(reverse('to_review'))
        self.assertEqual(302, response.status_code)
        self.assertRedirects(response, login_url)

        response = testing.get_user_client().get(reverse('to_review'))
        self.assertEqual(403, response.status_code)

        user = testing.create_user(perms=['content.review'])
        response = testing.get_user_client(user).get(reverse('to_review'))
        self.assertEqual(200, response.status_code)
Example #9
0
    def test_site_urls(self):
        login_url = reverse('hello') + '?next=' + reverse('inspect_locale')
        response = testing.get_public_client().get(reverse('inspect_locale'))
        self.assertEqual(302, response.status_code)
        self.assertRedirects(response, login_url)

        response = testing.get_user_client().get(reverse('inspect_locale'))
        self.assertEqual(403, response.status_code)

        user = testing.create_user(perms=['piosenka.inspect'])
        response = testing.get_user_client(user).get(reverse('inspect_locale'))
        self.assertEqual(200, response.status_code)
Example #10
0
    def test_approve_item(self):
        """Tests the approve view."""
        # Add a new item.
        author = testing.create_user()
        item = self.item_cls.create_for_testing(author)
        self.assertFalse(item.is_live())

        # Verify that the general public can't access the item.
        response = testing.get_public_client().get(item.get_absolute_url())
        self.assertNotServedOk(item, response)

        # Try to approve the item - the author can't do that.
        response = testing.get_user_client(author).get(
            item.get_approve_url())
        self.assertEqual(404, response.status_code)
        item.refresh_from_db()
        self.assertFalse(item.is_live())

        # Try to approve the item - another regular user cannot.
        response = testing.get_user_client().get(item.get_approve_url())
        self.assertEqual(404, response.status_code)
        item.refresh_from_db()
        self.assertFalse(item.is_live())

        # Try to approve the item - reviewer can and does.
        reviewer = testing.create_user(perms=['content.review'])
        response = testing.get_user_client(reviewer).get(item.get_approve_url())
        self.assertEqual(302, response.status_code)
        item.refresh_from_db()
        self.assertTrue(item.is_live())

        # General public should now be able to access the item.
        response = testing.get_public_client().get(item.get_absolute_url())
        self.assertServedOk(item, response)

        # The reviewer should still be able to access the item. Ideally we'd
        # verify that the 'approve' link is no longer displayed here anymore.
        response = testing.get_user_client(reviewer).get(
            item.get_absolute_url())
        self.assertServedOk(item, response)
Example #11
0
    def test_article_index(self):
        response = testing.get_public_client().get(reverse('articles'))
        self.assertEqual(200, response.status_code)

        author = testing.create_user()
        article_a = Article.create_for_testing(author)
        article_a.reviewed = True
        article_a.save()

        article_b = Article.create_for_testing(author)
        article_b.reviewed = False
        article_b.save()

        response = testing.get_public_client().get(reverse('articles'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context['articles']))

        response = testing.get_user_client(author).get(reverse('articles'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['articles']))

        response = testing.get_user_client().get(reverse('articles'))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context['articles']))
Example #12
0
    def test_blog_index(self):
        response = testing.get_public_client().get(reverse("post_index"))
        self.assertEqual(200, response.status_code)

        author = testing.create_user()
        post_a = Post.create_for_testing(author)
        post_a.reviewed = True
        post_a.save()

        post_b = Post.create_for_testing(author)
        post_b.reviewed = False
        post_b.save()

        response = testing.get_public_client().get(reverse("post_index"))
        self.assertEqual(200, response.status_code)
        self.assertEqual(1, len(response.context["all_posts"]))

        response = testing.get_user_client(author).get(reverse("post_index"))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context["all_posts"]))

        response = testing.get_user_client().get(reverse("post_index"))
        self.assertEqual(200, response.status_code)
        self.assertEqual(2, len(response.context["all_posts"]))
Example #13
0
    def test_view_new_item(self):
        author = testing.create_user()
        item = self.item_cls.create_for_testing(author)
        item.save()

        # Verify that the general public can't access the item.
        self.assertFalse(item.is_live())
        response = testing.get_public_client().get(item.get_absolute_url())
        self.assertNotServedOk(item, response)

        # Verify that the author can.
        response = testing.get_user_client(author).get(item.get_absolute_url())
        self.assertServedOk(item, response)

        # Verify that another signed-in user can, too.
        response = testing.get_user_client().get(item.get_absolute_url())
        self.assertServedOk(item, response)
Example #14
0
    def test_add_item(self):
        if self.item_cls.is_card:
            return

        # Verify that the general public can't access the add view.
        response = testing.get_public_client().get(self.item_cls.get_add_url())
        self.assertEqual(302, response.status_code)

        # Verify that unauthorized user can't access it either.
        response = testing.get_user_client().get(self.item_cls.get_add_url())
        self.assertEqual(404, response.status_code)

        # Authorized user should be able to access it just fine.
        authorized_user = testing.create_user(
            perms=[self.item_cls.permstring()])
        response = testing.get_user_client(authorized_user).get(
            self.item_cls.get_add_url())
        self.assertEqual(200, response.status_code)
Example #15
0
    def test_review_item(self):
        """Tests the review helper view."""
        # Add a new item.
        author = testing.create_user()
        item = self.item_cls.create_for_testing(author)
        self.assertFalse(item.is_live())

        # Verify that anonymous user is redirected to login.
        response = testing.get_public_client().get(item.get_review_url())
        self.assertEqual(302, response.status_code)
        self.assertTrue(reverse('hello') in response.url)

        # The author should be redirected to the actual item with some
        # informative message.
        response = testing.get_client(author).get(
            item.get_review_url(), follow=True)
        self.assertRedirects(response, item.get_absolute_url())
        self.assertTrue('messages' in response.context)
        self.assertEqual(1, len(response.context['messages']))

        # Another regular user should be redirected too.
        response = testing.get_user_client().get(
            item.get_review_url(), follow=True)
        self.assertRedirects(response, item.get_absolute_url())
        self.assertTrue('messages' in response.context)
        self.assertEqual(1, len(response.context['messages']))

        # And the valid approver too.
        reviewer = testing.create_user(perms=['content.review'])
        response = testing.get_client(reviewer).get(
            item.get_review_url(), follow=True)
        self.assertRedirects(response, item.get_absolute_url())
        self.assertTrue('messages' in response.context)
        self.assertEqual(1, len(response.context['messages']))

        # After the item is live too.
        item.reviewed = True
        item.save()
        response = testing.get_client(reviewer).get(
            item.get_review_url(), follow=True)
        self.assertRedirects(response, item.get_absolute_url())
        self.assertTrue('messages' in response.context)
        self.assertEqual(1, len(response.context['messages']))
Example #16
0
 def test_public_menu(self):
     response = testing.get_public_client().get(reverse('index'))
     self.assertEqual(200, response.status_code)
     self.assertContains(response, reverse('hello'), html=False)
     self.assertNotContains(response, reverse('goodbye'), html=False)
Example #17
0
 def test_site_urls(self):
     response = testing.get_public_client().get(reverse('index'))
     self.assertEqual(200, response.status_code)
     response = testing.get_public_client().get(reverse('about'))
     self.assertEqual(200, response.status_code)
Example #18
0
 def test_songbook_index(self):
     response = testing.get_public_client().get(reverse('songbook'))
     self.assertEqual(200, response.status_code)