コード例 #1
0
ファイル: test_fields.py プロジェクト: cincodenada/bookwyrm
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
ファイル: test_fields.py プロジェクト: cincodenada/bookwyrm
    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)
コード例 #5
0
ファイル: test_fields.py プロジェクト: AylaJK/bookwyrm
    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)
コード例 #6
0
ファイル: test_fields.py プロジェクト: cincodenada/bookwyrm
    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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: test_fields.py プロジェクト: cincodenada/bookwyrm
    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")