diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index b59b61072..3b369e84e 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -13,6 +13,7 @@ from django.db import models from django.forms import ClearableFileInput, ImageField as DjangoImageField from django.utils import timezone from django.utils.translation import gettext_lazy as _ + from bookwyrm import activitypub from bookwyrm.connectors import get_image from bookwyrm.sanitize_html import InputHtmlParser @@ -354,7 +355,8 @@ def image_serializer(value, alt): url = value.url else: return None - url = "https://%s%s" % (DOMAIN, url) + if not url[:4] == "http": + url = "https://{:s}{:s}".format(DOMAIN, url) return activitypub.Document(url=url, name=alt) diff --git a/bookwyrm/tests/models/test_fields.py b/bookwyrm/tests/models/test_fields.py index a8a6096be..c234ffd08 100644 --- a/bookwyrm/tests/models/test_fields.py +++ b/bookwyrm/tests/models/test_fields.py @@ -426,6 +426,15 @@ class ActivitypubFields(TestCase): self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile) + def test_image_serialize(self): + """make sure we're creating sensible image paths""" + ValueMock = namedtuple("ValueMock", ("url")) + value_mock = ValueMock("/images/fish.jpg") + result = fields.image_serializer(value_mock, "hello") + self.assertEqual(result.type, "Document") + self.assertEqual(result.url, "https://your.domain.here/images/fish.jpg") + self.assertEqual(result.name, "hello") + def test_datetime_field(self): """this one is pretty simple, it just has to use isoformat""" instance = fields.DateTimeField() diff --git a/pytest.ini b/pytest.ini index fa9dbc59f..8539d1167 100644 --- a/pytest.ini +++ b/pytest.ini @@ -4,3 +4,19 @@ python_files = tests.py test_*.py *_tests.py addopts = --cov=bookwyrm --cov-config=.coveragerc markers = integration: marks tests as requiring external resources (deselect with '-m "not integration"') + +env = + DEBUG = false + DOMAIN = your.domain.here + BOOKWYRM_DATABASE_BACKEND = postgres + MEDIA_ROOT = images/ + CELERY_BROKER = "" + REDIS_BROKER_PORT = 6379 + FLOWER_PORT = 8888 + EMAIL_HOST = "smtp.mailgun.org" + EMAIL_PORT = 587 + EMAIL_HOST_USER = "" + EMAIL_HOST_PASSWORD = "" + EMAIL_USE_TLS = true + ENABLE_PREVIEW_IMAGES = false + USE_S3 = false diff --git a/requirements.txt b/requirements.txt index 4a8c15aa1..ec0eb1a81 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,4 +23,5 @@ coverage==5.1 pytest-django==4.1.0 pytest==6.1.2 pytest-cov==2.10.1 +pytest-env==0.6.2 pytest-xdist==2.3.0