camp/photologue/tests/test_views_photo.py

68 lines
2.5 KiB
Python
Raw Normal View History

2025-03-24 11:35:33 +00:00
from django.test import TestCase, override_settings
from ..models import Photo
from .factories import PhotoFactory
@override_settings(ROOT_URLCONF='photologue.tests.test_urls')
class RequestPhotoTest(TestCase):
def setUp(self):
super().setUp()
self.photo = PhotoFactory(slug='fake-photo')
def tearDown(self):
super().tearDown()
self.photo.delete()
def test_archive_photo_url_works(self):
response = self.client.get('/ptests/photo/')
self.assertEqual(response.status_code, 200)
def test_archive_photo_empty(self):
"""If there are no photo to show, tell the visitor - don't show a
404."""
Photo.objects.all().update(is_public=False)
response = self.client.get('/ptests/photo/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['latest'].count(),
0)
def test_paginated_photo_url_works(self):
response = self.client.get('/ptests/photolist/')
self.assertEqual(response.status_code, 200)
def test_photo_works(self):
response = self.client.get('/ptests/photo/fake-photo/')
self.assertEqual(response.status_code, 200)
def test_archive_year_photo_works(self):
response = self.client.get('/ptests/photo/2011/')
self.assertEqual(response.status_code, 200)
def test_archive_month_photo_works(self):
response = self.client.get('/ptests/photo/2011/12/')
self.assertEqual(response.status_code, 200)
def test_archive_day_photo_works(self):
response = self.client.get('/ptests/photo/2011/12/23/')
self.assertEqual(response.status_code, 200)
def test_detail_photo_works(self):
response = self.client.get('/ptests/photo/2011/12/23/fake-photo/')
self.assertEqual(response.status_code, 200)
def test_detail_photo_xss(self):
"""Check that the default templates handle XSS."""
self.photo.title = '<img src=x onerror=alert("title")>'
self.photo.caption = '<img src=x onerror=alert(origin)>'
self.photo.save()
response = self.client.get('/ptests/photo/2011/12/23/fake-photo/')
self.assertContains(response, 'Photologue Demo - &lt;img src=x onerror=alert(&quot;title&quot;)&gt;')
self.assertNotContains(response, '<img src=x onerror=alert("title")>')
self.assertContains(response, '&lt;img src=x onerror=alert(origin)&gt;')
self.assertNotContains(response, '<img src=x onerror=alert(origin)>')