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']))
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)
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']))
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)
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)
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)
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)
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)
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)
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)
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']))
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"]))
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)
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)
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']))
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)
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)
def test_songbook_index(self): response = testing.get_public_client().get(reverse('songbook')) self.assertEqual(200, response.status_code)