skillbox/server/core/tests/test_wagtail_images.py

64 lines
1.9 KiB
Python

import os
from pathlib import Path
from unittest import skipIf,skip
from django.core.files import File
from django.test import RequestFactory, TestCase
from django.urls import reverse
from core.factories import UserFactory
from wagtail.images.models import Image
TEST_IMAGE = Path(__file__).parent / "test_images" / "user1_profile.jpg"
# @skipIf(
# os.environ.get("ENABLE_S3_STORAGE_UNIT_TESTS") is None,
# "Only enable tests by setting ENABLE_S3_STORAGE_UNIT_TESTS=1",
# )
@skip("This test is not working")
class UserImageViewTest(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.user = UserFactory(username="supervisor")
with open(TEST_IMAGE, "rb") as f:
self.user_image, _ = Image.objects.get_or_create(
file=File(f, name=TEST_IMAGE.name),
)
def test_image(self):
self.client.force_login(self.user)
response = self._get_image(self.user_image.id, "fill-300x150")
self.assertEqual(200, response.status_code)
self.assertEqual("image/jpeg", response["Content-Type"])
def test_invalid_id(self):
image_id = 123456789
self.client.force_login(self.user)
response = self._get_image(image_id)
self.assertEqual(404, response.status_code)
def test_invalid_filter(self):
self.client.force_login(self.user)
filter_spec = "invalid-filter"
response = self._get_image(self.user_image.id, filter_spec)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content, f"Invalid filter spec: {filter_spec}".encode()
)
def _get_image(self, image_id, filter_spec=None):
#url = reverse("wagtailimages_serve", kwargs={"image_id": image_id})
url = f"/cms/images/{image_id}"
if filter_spec:
url += f"?filter={filter_spec}"
return self.client.get(url)