Create a constant for a small png image in tests. (#10834)

To avoid duplicating it between a few tests.
This commit is contained in:
Patrick Cloke 2021-09-16 12:01:14 -04:00 committed by GitHub
parent 3eba047d38
commit bfb4b858a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 45 additions and 94 deletions

1
changelog.d/10834.misc Normal file
View file

@ -0,0 +1 @@
Factor out PNG image data to a constant to be used in several tests.

View file

@ -1,4 +1,4 @@
# Copyright 2020 The Matrix.org Foundation C.I.C. # Copyright 2020-2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -13,7 +13,6 @@
# limitations under the License. # limitations under the License.
import logging import logging
import os import os
from binascii import unhexlify
from typing import Optional, Tuple from typing import Optional, Tuple
from twisted.internet.protocol import Factory from twisted.internet.protocol import Factory
@ -28,6 +27,7 @@ from synapse.server import HomeServer
from tests.http import TestServerTLSConnectionFactory, get_test_ca_cert_file from tests.http import TestServerTLSConnectionFactory, get_test_ca_cert_file
from tests.replication._base import BaseMultiWorkerStreamTestCase from tests.replication._base import BaseMultiWorkerStreamTestCase
from tests.server import FakeChannel, FakeSite, FakeTransport, make_request from tests.server import FakeChannel, FakeSite, FakeTransport, make_request
from tests.test_utils import SMALL_PNG
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -190,31 +190,25 @@ class MediaRepoShardTestCase(BaseMultiWorkerStreamTestCase):
channel1, request1 = self._get_media_req(hs1, "example.com:443", "PIC1") channel1, request1 = self._get_media_req(hs1, "example.com:443", "PIC1")
channel2, request2 = self._get_media_req(hs2, "example.com:443", "PIC1") channel2, request2 = self._get_media_req(hs2, "example.com:443", "PIC1")
png_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
request1.setResponseCode(200) request1.setResponseCode(200)
request1.responseHeaders.setRawHeaders(b"Content-Type", [b"image/png"]) request1.responseHeaders.setRawHeaders(b"Content-Type", [b"image/png"])
request1.write(png_data) request1.write(SMALL_PNG)
request1.finish() request1.finish()
self.pump(0.1) self.pump(0.1)
self.assertEqual(channel1.code, 200, channel1.result["body"]) self.assertEqual(channel1.code, 200, channel1.result["body"])
self.assertEqual(channel1.result["body"], png_data) self.assertEqual(channel1.result["body"], SMALL_PNG)
request2.setResponseCode(200) request2.setResponseCode(200)
request2.responseHeaders.setRawHeaders(b"Content-Type", [b"image/png"]) request2.responseHeaders.setRawHeaders(b"Content-Type", [b"image/png"])
request2.write(png_data) request2.write(SMALL_PNG)
request2.finish() request2.finish()
self.pump(0.1) self.pump(0.1)
self.assertEqual(channel2.code, 200, channel2.result["body"]) self.assertEqual(channel2.code, 200, channel2.result["body"])
self.assertEqual(channel2.result["body"], png_data) self.assertEqual(channel2.result["body"], SMALL_PNG)
# We expect only three new thumbnails to have been persisted. # We expect only three new thumbnails to have been persisted.
self.assertEqual(start_count + 3, self._count_remote_thumbnails()) self.assertEqual(start_count + 3, self._count_remote_thumbnails())

View file

@ -1,4 +1,4 @@
# Copyright 2018 New Vector Ltd # Copyright 2018-2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -15,7 +15,6 @@
import json import json
import os import os
import urllib.parse import urllib.parse
from binascii import unhexlify
from unittest.mock import Mock from unittest.mock import Mock
from twisted.internet.defer import Deferred from twisted.internet.defer import Deferred
@ -28,6 +27,7 @@ from synapse.rest.client import groups, login, room
from tests import unittest from tests import unittest
from tests.server import FakeSite, make_request from tests.server import FakeSite, make_request
from tests.test_utils import SMALL_PNG
class VersionTestCase(unittest.HomeserverTestCase): class VersionTestCase(unittest.HomeserverTestCase):
@ -150,11 +150,6 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase):
self.media_repo = hs.get_media_repository_resource() self.media_repo = hs.get_media_repository_resource()
self.download_resource = self.media_repo.children[b"download"] self.download_resource = self.media_repo.children[b"download"]
self.upload_resource = self.media_repo.children[b"upload"] self.upload_resource = self.media_repo.children[b"upload"]
self.image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
def make_homeserver(self, reactor, clock): def make_homeserver(self, reactor, clock):
@ -266,7 +261,7 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase):
# Upload some media into the room # Upload some media into the room
response = self.helper.upload_media( response = self.helper.upload_media(
self.upload_resource, self.image_data, tok=admin_user_tok self.upload_resource, SMALL_PNG, tok=admin_user_tok
) )
# Extract media ID from the response # Extract media ID from the response
@ -314,10 +309,10 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase):
# Upload some media # Upload some media
response_1 = self.helper.upload_media( response_1 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
response_2 = self.helper.upload_media( response_2 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
# Extract mxcs # Extract mxcs
@ -381,10 +376,10 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase):
# Upload some media # Upload some media
response_1 = self.helper.upload_media( response_1 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
response_2 = self.helper.upload_media( response_2 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
# Extract media IDs # Extract media IDs
@ -421,10 +416,10 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase):
# Upload some media # Upload some media
response_1 = self.helper.upload_media( response_1 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
response_2 = self.helper.upload_media( response_2 = self.helper.upload_media(
self.upload_resource, self.image_data, tok=non_admin_user_tok self.upload_resource, SMALL_PNG, tok=non_admin_user_tok
) )
# Extract media IDs # Extract media IDs

View file

@ -1,4 +1,5 @@
# Copyright 2020 Dirk Klimpel # Copyright 2020 Dirk Klimpel
# Copyright 2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -14,7 +15,6 @@
import json import json
import os import os
from binascii import unhexlify
from parameterized import parameterized from parameterized import parameterized
@ -25,6 +25,7 @@ from synapse.rest.media.v1.filepath import MediaFilePaths
from tests import unittest from tests import unittest
from tests.server import FakeSite, make_request from tests.server import FakeSite, make_request
from tests.test_utils import SMALL_PNG
class DeleteMediaByIDTestCase(unittest.HomeserverTestCase): class DeleteMediaByIDTestCase(unittest.HomeserverTestCase):
@ -110,15 +111,10 @@ class DeleteMediaByIDTestCase(unittest.HomeserverTestCase):
download_resource = self.media_repo.children[b"download"] download_resource = self.media_repo.children[b"download"]
upload_resource = self.media_repo.children[b"upload"] upload_resource = self.media_repo.children[b"upload"]
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Upload some media into the room # Upload some media into the room
response = self.helper.upload_media( response = self.helper.upload_media(
upload_resource, image_data, tok=self.admin_user_tok, expect_code=200 upload_resource, SMALL_PNG, tok=self.admin_user_tok, expect_code=200
) )
# Extract media ID from the response # Extract media ID from the response
server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://' server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://'
@ -504,16 +500,10 @@ class DeleteMediaByDateSizeTestCase(unittest.HomeserverTestCase):
Create a media and return media_id and server_and_media_id Create a media and return media_id and server_and_media_id
""" """
upload_resource = self.media_repo.children[b"upload"] upload_resource = self.media_repo.children[b"upload"]
# file size is 67 Byte
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Upload some media into the room # Upload some media into the room
response = self.helper.upload_media( response = self.helper.upload_media(
upload_resource, image_data, tok=self.admin_user_tok, expect_code=200 upload_resource, SMALL_PNG, tok=self.admin_user_tok, expect_code=200
) )
# Extract media ID from the response # Extract media ID from the response
server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://' server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://'
@ -584,16 +574,10 @@ class QuarantineMediaByIDTestCase(unittest.HomeserverTestCase):
# Create media # Create media
upload_resource = media_repo.children[b"upload"] upload_resource = media_repo.children[b"upload"]
# file size is 67 Byte
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Upload some media into the room # Upload some media into the room
response = self.helper.upload_media( response = self.helper.upload_media(
upload_resource, image_data, tok=self.admin_user_tok, expect_code=200 upload_resource, SMALL_PNG, tok=self.admin_user_tok, expect_code=200
) )
# Extract media ID from the response # Extract media ID from the response
server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://' server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://'
@ -711,16 +695,10 @@ class ProtectMediaByIDTestCase(unittest.HomeserverTestCase):
# Create media # Create media
upload_resource = media_repo.children[b"upload"] upload_resource = media_repo.children[b"upload"]
# file size is 67 Byte
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Upload some media into the room # Upload some media into the room
response = self.helper.upload_media( response = self.helper.upload_media(
upload_resource, image_data, tok=self.admin_user_tok, expect_code=200 upload_resource, SMALL_PNG, tok=self.admin_user_tok, expect_code=200
) )
# Extract media ID from the response # Extract media ID from the response
server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://' server_and_media_id = response["content_uri"][6:] # Cut off 'mxc://'

View file

@ -1,4 +1,5 @@
# Copyright 2020 Dirk Klimpel # Copyright 2020 Dirk Klimpel
# Copyright 2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -13,7 +14,6 @@
# limitations under the License. # limitations under the License.
import json import json
from binascii import unhexlify
from typing import Any, Dict, List, Optional from typing import Any, Dict, List, Optional
import synapse.rest.admin import synapse.rest.admin
@ -21,6 +21,7 @@ from synapse.api.errors import Codes
from synapse.rest.client import login from synapse.rest.client import login
from tests import unittest from tests import unittest
from tests.test_utils import SMALL_PNG
class UserMediaStatisticsTestCase(unittest.HomeserverTestCase): class UserMediaStatisticsTestCase(unittest.HomeserverTestCase):
@ -468,16 +469,9 @@ class UserMediaStatisticsTestCase(unittest.HomeserverTestCase):
""" """
upload_resource = self.media_repo.children[b"upload"] upload_resource = self.media_repo.children[b"upload"]
for _ in range(number_media): for _ in range(number_media):
# file size is 67 Byte
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Upload some media into the room # Upload some media into the room
self.helper.upload_media( self.helper.upload_media(
upload_resource, image_data, tok=user_token, expect_code=200 upload_resource, SMALL_PNG, tok=user_token, expect_code=200
) )
def _check_fields(self, content: List[Dict[str, Any]]): def _check_fields(self, content: List[Dict[str, Any]]):

View file

@ -1,4 +1,4 @@
# Copyright 2018 New Vector Ltd # Copyright 2018-2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -33,7 +33,7 @@ from synapse.types import JsonDict, UserID
from tests import unittest from tests import unittest
from tests.server import FakeSite, make_request from tests.server import FakeSite, make_request
from tests.test_utils import make_awaitable from tests.test_utils import SMALL_PNG, make_awaitable
from tests.unittest import override_config from tests.unittest import override_config
@ -2835,11 +2835,7 @@ class UserMediaRestTestCase(unittest.HomeserverTestCase):
other_user_tok = self.login("user", "pass") other_user_tok = self.login("user", "pass")
# Resolution: 1×1, MIME type: image/png, Extension: png, Size: 67 B # Resolution: 1×1, MIME type: image/png, Extension: png, Size: 67 B
image_data1 = unhexlify( image_data1 = SMALL_PNG
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
# Resolution: 1×1, MIME type: image/gif, Extension: gif, Size: 35 B # Resolution: 1×1, MIME type: image/gif, Extension: gif, Size: 35 B
image_data2 = unhexlify( image_data2 = unhexlify(
b"47494638376101000100800100000000" b"47494638376101000100800100000000"
@ -2943,14 +2939,7 @@ class UserMediaRestTestCase(unittest.HomeserverTestCase):
""" """
media_ids = [] media_ids = []
for _ in range(number_media): for _ in range(number_media):
# file size is 67 Byte media_ids.append(self._create_media_and_access(user_token, SMALL_PNG))
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
media_ids.append(self._create_media_and_access(user_token, image_data))
return media_ids return media_ids

View file

@ -1,4 +1,4 @@
# Copyright 2018 New Vector Ltd # Copyright 2018-2021 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -38,6 +38,7 @@ from synapse.rest.media.v1.storage_provider import FileStorageProviderBackend
from tests import unittest from tests import unittest
from tests.server import FakeSite, make_request from tests.server import FakeSite, make_request
from tests.test_utils import SMALL_PNG
from tests.utils import default_config from tests.utils import default_config
@ -134,11 +135,7 @@ class _TestImage:
# smoll png # smoll png
( (
_TestImage( _TestImage(
unhexlify( SMALL_PNG,
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
),
b"image/png", b"image/png",
b".png", b".png",
unhexlify( unhexlify(
@ -593,15 +590,8 @@ class SpamCheckerTestCase(unittest.HomeserverTestCase):
def test_upload_innocent(self): def test_upload_innocent(self):
"""Attempt to upload some innocent data that should be allowed.""" """Attempt to upload some innocent data that should be allowed."""
image_data = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)
self.helper.upload_media( self.helper.upload_media(
self.upload_resource, image_data, tok=self.tok, expect_code=200 self.upload_resource, SMALL_PNG, tok=self.tok, expect_code=200
) )
def test_upload_ban(self): def test_upload_ban(self):

View file

@ -1,5 +1,4 @@
# Copyright 2019 New Vector Ltd # Copyright 2019-2021 The Matrix.org Foundation C.I.C.
# Copyright 2020 The Matrix.org Foundation C.I.C
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -19,6 +18,7 @@ Utilities for running the unit tests
import sys import sys
import warnings import warnings
from asyncio import Future from asyncio import Future
from binascii import unhexlify
from typing import Any, Awaitable, Callable, TypeVar from typing import Any, Awaitable, Callable, TypeVar
from unittest.mock import Mock from unittest.mock import Mock
@ -117,3 +117,13 @@ class FakeResponse:
def deliverBody(self, protocol): def deliverBody(self, protocol):
protocol.dataReceived(self.body) protocol.dataReceived(self.body)
protocol.connectionLost(Failure(ResponseDone())) protocol.connectionLost(Failure(ResponseDone()))
# A small image used in some tests.
#
# Resolution: 1×1, MIME type: image/png, Extension: png, Size: 67 B
SMALL_PNG = unhexlify(
b"89504e470d0a1a0a0000000d4948445200000001000000010806"
b"0000001f15c4890000000a49444154789c63000100000500010d"
b"0a2db40000000049454e44ae426082"
)