Esempio n. 1
0
    def test_get_image_bytes(self):
        descriptor = avatar_service.PubsubAvatarDescriptor(
            TEST_JID1,
            "image/png",
            TEST_IMAGE_SHA1.upper(),
            len(TEST_IMAGE),
            pubsub=self.pubsub)

        self.assertTrue(descriptor.has_image_data_in_pubsub)
        self.assertEqual(TEST_IMAGE_SHA1, descriptor.normalized_id)

        items = pubsub_xso.Items(namespaces.xep0084_data, )
        item = pubsub_xso.Item(id_=TEST_IMAGE_SHA1)
        item.registered_payload = avatar_xso.Data(TEST_IMAGE)
        items.items.append(item)
        pubsub_result = pubsub_xso.Request(items)

        with unittest.mock.patch.object(self.pubsub,
                                        "get_items_by_id",
                                        new=CoroutineMock()):
            self.pubsub.get_items_by_id.return_value = pubsub_result

            res = run_coroutine(descriptor.get_image_bytes())

            self.assertSequenceEqual(self.pubsub.get_items_by_id.mock_calls, [
                unittest.mock.call(
                    TEST_JID1,
                    namespaces.xep0084_data,
                    [TEST_IMAGE_SHA1.upper()],
                )
            ])
            self.assertEqual(res, TEST_IMAGE)
Esempio n. 2
0
    def test_get_avatar_metadata_with_require_fresh_does_not_crash(self):
        aset = avatar_service.AvatarSet()
        aset.add_avatar_image("image/png", image_bytes=TEST_IMAGE)
        aset.add_avatar_image("image/png",
                              nbytes=0,
                              id_="00000000000000000000",
                              url="http://example.com/avatar")

        # construct the proper pubsub response
        items = pubsub_xso.Items(namespaces.xep0084_metadata, )
        item = pubsub_xso.Item(id_=aset.png_id)
        item.registered_payload = aset.metadata
        items.items.append(item)

        pubsub_result = pubsub_xso.Request(items)

        with unittest.mock.patch.object(self.pubsub,
                                        "get_items",
                                        new=CoroutineMock()):

            self.pubsub.get_items.return_value = pubsub_result
            run_coroutine(
                self.s.get_avatar_metadata(TEST_JID1, require_fresh=True))

            self.assertSequenceEqual(self.pubsub.get_items.mock_calls, [
                unittest.mock.call(
                    TEST_JID1, namespaces.xep0084_metadata, max_items=1)
            ])
Esempio n. 3
0
    def test_get_avatar_metadata(self):
        aset = avatar_service.AvatarSet()
        aset.add_avatar_image("image/png", image_bytes=TEST_IMAGE)
        aset.add_avatar_image("image/png",
                              nbytes=0,
                              id_="00000000000000000000",
                              url="http://example.com/avatar")

        # construct the proper pubsub response
        items = pubsub_xso.Items(
            namespaces.xep0084_metadata,
        )
        item = pubsub_xso.Item(id_=aset.png_id)
        item.registered_payload = aset.metadata
        items.items.append(item)

        pubsub_result = pubsub_xso.Request(items)

        with unittest.mock.patch.object(self.pubsub, "get_items",
                                        new=CoroutineMock()):
            self.pubsub.get_items.return_value = pubsub_result

            descriptors = run_coroutine(self.s.get_avatar_metadata(TEST_JID1))

            self.assertSequenceEqual(
                self.pubsub.get_items.mock_calls,
                [
                    unittest.mock.call(
                        TEST_JID1,
                        namespaces.xep0084_metadata,
                        max_items=1
                    )
                ]
            )

            self.assertEqual(len(descriptors), 2)

            png_descr = descriptors

            self.assertTrue(isinstance(png_descr[0],
                                       avatar_service.PubsubAvatarDescriptor))
            self.assertEqual(png_descr[0].mime_type, "image/png")
            self.assertEqual(png_descr[0].id_, TEST_IMAGE_SHA1)
            self.assertEqual(png_descr[0].nbytes, len(TEST_IMAGE))
            self.assertEqual(png_descr[0].url, None)

            self.assertTrue(isinstance(png_descr[0],
                                       avatar_service.PubsubAvatarDescriptor))

            self.assertEqual(png_descr[1].mime_type, "image/png")
            self.assertEqual(png_descr[1].id_, "00000000000000000000")
            self.assertEqual(png_descr[1].nbytes, 0)
            self.assertEqual(png_descr[1].url, "http://example.com/avatar")

        with unittest.mock.patch.object(self.pubsub, "get_items",
                                        new=CoroutineMock()):

            cached_descriptors = run_coroutine(
                self.s.get_avatar_metadata(TEST_JID1)
            )

            self.assertEqual(descriptors, cached_descriptors)

            # we must get the descriptors from the cache
            self.pubsub.get_items.assert_not_called()

        with unittest.mock.patch.object(self.pubsub, "get_items",
                                        new=CoroutineMock()):

            self.pubsub.get_items.return_value = pubsub_result
            descriptors = run_coroutine(
                self.s.get_avatar_metadata(TEST_JID1, require_fresh=True)
            )

            self.assertSequenceEqual(
                self.pubsub.get_items.mock_calls,
                [
                    unittest.mock.call(
                        TEST_JID1,
                        namespaces.xep0084_metadata,
                        max_items=1
                    )
                ]
            )