def test_image_field_set_field_from_activity_with_overwrite_with_cover( self, *_): """update a model instance from an activitypub object""" image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) book = Edition.objects.create(title="hello") book.cover.save("test.jpg", ContentFile(output.getvalue())) cover_size = book.cover.size self.assertIsNotNone(cover_size) another_image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/logo.png") another_image = Image.open(another_image_file) another_output = BytesIO() another_image.save(another_output, format=another_image.format) instance = fields.ImageField(activitypub_field="cover", name="cover") responses.add( responses.GET, "http://www.example.com/image.jpg", body=another_image.tobytes(), status=200, ) MockActivity = namedtuple("MockActivity", ("cover")) mock_activity = MockActivity("http://www.example.com/image.jpg") instance.set_field_from_activity(book, mock_activity, overwrite=True) # new cover self.assertIsNotNone(book.cover.name) self.assertNotEqual(book.cover.size, cover_size)
def test_image_field(self, _): ''' storing images ''' user = User.objects.create_user('mouse', '*****@*****.**', 'mouseword', local=True, localname='mouse') image_file = pathlib.Path(__file__).parent.joinpath( '../../static/images/default_avi.jpg') image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) user.avatar.save('test.jpg', ContentFile(output.getvalue())) output = fields.image_serializer(user.avatar, alt='alt text') self.assertIsNotNone(re.match( r'.*\.jpg', output.url, )) self.assertEqual(output.name, 'alt text') self.assertEqual(output.type, 'Image') instance = fields.ImageField() output = fields.image_serializer(user.avatar, alt=None) self.assertEqual(instance.field_to_activity(user.avatar), output) responses.add(responses.GET, 'http://www.example.com/image.jpg', body=user.avatar.file.read(), status=200) loaded_image = instance.field_from_activity( 'http://www.example.com/image.jpg') self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile)
def test_image_field_from_activity(self, *_): """load an image from activitypub""" image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") instance = fields.ImageField() with open(image_file, "rb") as image_data: responses.add( responses.GET, "http://www.example.com/image.jpg", body=image_data.read(), status=200, content_type="image/jpeg", stream=True, ) loaded_image = instance.field_from_activity( "http://www.example.com/image.jpg") self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile)
def test_image_field_from_activity(self, *_): """load an image from activitypub""" image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) instance = fields.ImageField() responses.add( responses.GET, "http://www.example.com/image.jpg", body=image.tobytes(), status=200, ) loaded_image = instance.field_from_activity( "http://www.example.com/image.jpg") self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile)
def test_image_field(self, _): """storing images""" with patch( "bookwyrm.preview_images.generate_user_preview_image_task.delay" ): user = User.objects.create_user("mouse", "*****@*****.**", "mouseword", local=True, localname="mouse") image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) user.avatar.save("test.jpg", ContentFile(output.getvalue())) output = fields.image_serializer(user.avatar, alt="alt text") self.assertIsNotNone(re.match( r".*\.jpg", output.url, )) self.assertEqual(output.name, "alt text") self.assertEqual(output.type, "Document") instance = fields.ImageField() output = fields.image_serializer(user.avatar, alt=None) self.assertEqual(instance.field_to_activity(user.avatar), output) responses.add( responses.GET, "http://www.example.com/image.jpg", body=user.avatar.file.read(), status=200, ) loaded_image = instance.field_from_activity( "http://www.example.com/image.jpg") self.assertIsInstance(loaded_image, list) self.assertIsInstance(loaded_image[1], ContentFile)
def test_image_field_set_field_from_activity(self, *_): """update a model instance from an activitypub object""" image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) instance = fields.ImageField(activitypub_field="cover", name="cover") responses.add( responses.GET, "http://www.example.com/image.jpg", body=image.tobytes(), status=200, ) book = Edition.objects.create(title="hello") MockActivity = namedtuple("MockActivity", ("cover")) mock_activity = MockActivity("http://www.example.com/image.jpg") instance.set_field_from_activity(book, mock_activity) self.assertIsNotNone(book.cover.name)
def test_image_field_set_field_from_activity(self, *_): """update a model instance from an activitypub object""" image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") instance = fields.ImageField(activitypub_field="cover", name="cover") with open(image_file, "rb") as image_data: responses.add( responses.GET, "http://www.example.com/image.jpg", body=image_data.read(), content_type="image/jpeg", status=200, stream=True, ) book = Edition.objects.create(title="hello") MockActivity = namedtuple("MockActivity", ("cover")) mock_activity = MockActivity("http://www.example.com/image.jpg") instance.set_field_from_activity(book, mock_activity) self.assertIsNotNone(book.cover.name)
def test_image_field_to_activity(self, *_): """serialize an image field to activitypub""" user = User.objects.create_user("mouse", "*****@*****.**", "mouseword", local=True, localname="mouse") image_file = pathlib.Path(__file__).parent.joinpath( "../../static/images/default_avi.jpg") image = Image.open(image_file) output = BytesIO() image.save(output, format=image.format) user.avatar.save("test.jpg", ContentFile(output.getvalue())) instance = fields.ImageField() output = instance.field_to_activity(user.avatar) self.assertIsNotNone( re.match( fr"https:\/\/{DOMAIN}\/.*\.jpg", output.url, )) self.assertEqual(output.name, "") self.assertEqual(output.type, "Document")