mirror of https://github.com/zulip/zulip.git
tests: Add test coverage for uploading avatars to S3UploadBackend.
Add test coverage for the function upload_avatar_image and ensure_medium_avatar_image in S3UploadBackend.
This commit is contained in:
parent
bebd8df728
commit
092472f42d
|
@ -7,6 +7,7 @@ from zerver.lib.avatar import (
|
||||||
avatar_url,
|
avatar_url,
|
||||||
get_avatar_field,
|
get_avatar_field,
|
||||||
)
|
)
|
||||||
|
from zerver.lib.avatar_hash import user_avatar_path
|
||||||
from zerver.lib.bugdown import url_filename
|
from zerver.lib.bugdown import url_filename
|
||||||
from zerver.lib.realm_icon import realm_icon_url
|
from zerver.lib.realm_icon import realm_icon_url
|
||||||
from zerver.lib.test_classes import ZulipTestCase, UploadSerializeMixin
|
from zerver.lib.test_classes import ZulipTestCase, UploadSerializeMixin
|
||||||
|
@ -19,7 +20,7 @@ from zerver.lib.test_helpers import (
|
||||||
from zerver.lib.test_runner import slow
|
from zerver.lib.test_runner import slow
|
||||||
from zerver.lib.upload import sanitize_name, S3UploadBackend, \
|
from zerver.lib.upload import sanitize_name, S3UploadBackend, \
|
||||||
upload_message_image, delete_message_image, LocalUploadBackend, \
|
upload_message_image, delete_message_image, LocalUploadBackend, \
|
||||||
ZulipUploadBackend
|
ZulipUploadBackend, MEDIUM_AVATAR_SIZE, resize_avatar
|
||||||
import zerver.lib.upload
|
import zerver.lib.upload
|
||||||
from zerver.models import Attachment, get_user, \
|
from zerver.models import Attachment, get_user, \
|
||||||
get_old_unclaimed_attachments, Message, UserProfile, Stream, Realm, \
|
get_old_unclaimed_attachments, Message, UserProfile, Stream, Realm, \
|
||||||
|
@ -984,6 +985,36 @@ class S3Test(ZulipTestCase):
|
||||||
self.send_stream_message(self.example_email("hamlet"), "Denmark", body, "test")
|
self.send_stream_message(self.example_email("hamlet"), "Denmark", body, "test")
|
||||||
self.assertIn('title="zulip.txt"', self.get_last_message().rendered_content)
|
self.assertIn('title="zulip.txt"', self.get_last_message().rendered_content)
|
||||||
|
|
||||||
|
@use_s3_backend
|
||||||
|
def test_upload_avatar_image(self) -> None:
|
||||||
|
conn = S3Connection(settings.S3_KEY, settings.S3_SECRET_KEY)
|
||||||
|
bucket = conn.create_bucket(settings.S3_AVATAR_BUCKET)
|
||||||
|
|
||||||
|
user_profile = self.example_user('hamlet')
|
||||||
|
path_id = user_avatar_path(user_profile)
|
||||||
|
original_image_path_id = path_id + ".original"
|
||||||
|
medium_path_id = path_id + "-medium.png"
|
||||||
|
|
||||||
|
with get_test_image_file('img.png') as image_file:
|
||||||
|
zerver.lib.upload.upload_backend.upload_avatar_image(image_file, user_profile, user_profile)
|
||||||
|
test_image_data = open(get_test_image_file('img.png').name, 'rb').read()
|
||||||
|
test_medium_image_data = resize_avatar(test_image_data, MEDIUM_AVATAR_SIZE)
|
||||||
|
|
||||||
|
original_image_key = bucket.get_key(original_image_path_id)
|
||||||
|
self.assertEqual(original_image_key.key, original_image_path_id)
|
||||||
|
image_data = original_image_key.get_contents_as_string()
|
||||||
|
self.assertEqual(image_data, test_image_data)
|
||||||
|
|
||||||
|
medium_image_key = bucket.get_key(medium_path_id)
|
||||||
|
self.assertEqual(medium_image_key.key, medium_path_id)
|
||||||
|
medium_image_data = medium_image_key.get_contents_as_string()
|
||||||
|
self.assertEqual(medium_image_data, test_medium_image_data)
|
||||||
|
bucket.delete_key(medium_image_key)
|
||||||
|
|
||||||
|
zerver.lib.upload.upload_backend.ensure_medium_avatar_image(user_profile)
|
||||||
|
medium_image_key = bucket.get_key(medium_path_id)
|
||||||
|
self.assertEqual(medium_image_key.key, medium_path_id)
|
||||||
|
|
||||||
class UploadTitleTests(TestCase):
|
class UploadTitleTests(TestCase):
|
||||||
def test_upload_titles(self) -> None:
|
def test_upload_titles(self) -> None:
|
||||||
self.assertEqual(url_filename("http://localhost:9991/user_uploads/1/LUeQZUG5jxkagzVzp1Ox_amr/dummy.txt"), "dummy.txt")
|
self.assertEqual(url_filename("http://localhost:9991/user_uploads/1/LUeQZUG5jxkagzVzp1Ox_amr/dummy.txt"), "dummy.txt")
|
||||||
|
|
|
@ -135,6 +135,7 @@ LOCAL_UPLOADS_DIR = 'var/test_uploads'
|
||||||
S3_KEY = 'test-key'
|
S3_KEY = 'test-key'
|
||||||
S3_SECRET_KEY = 'test-secret-key'
|
S3_SECRET_KEY = 'test-secret-key'
|
||||||
S3_AUTH_UPLOADS_BUCKET = 'test-authed-bucket'
|
S3_AUTH_UPLOADS_BUCKET = 'test-authed-bucket'
|
||||||
|
S3_AVATAR_BUCKET = 'test-avatar-bucket'
|
||||||
|
|
||||||
# Test Custom TOS template rendering
|
# Test Custom TOS template rendering
|
||||||
TERMS_OF_SERVICE = 'corporate/terms.md'
|
TERMS_OF_SERVICE = 'corporate/terms.md'
|
||||||
|
|
Loading…
Reference in New Issue