1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- from io import BytesIO
- import pytest
- from PIL import Image
- from django.core.files.uploadedfile import SimpleUploadedFile
- from django.urls import reverse
- from ... import settings
- from ...models import Setting
- admin_link = reverse("misago:admin:settings:users:index")
- def create_image(width, height):
- image = Image.new("RGBA", (width, height))
- stream = BytesIO()
- image.save(stream, "PNG")
- stream.seek(0)
- return SimpleUploadedFile("image.png", stream.read(), "image/jpeg")
- def submit_image(admin_client, image=""):
- data = {
- "account_activation": "user",
- "username_length_min": 10,
- "username_length_max": 10,
- "anonymous_username": "Deleted",
- "avatar_upload_limit": 2000,
- "default_avatar": "gravatar",
- "default_gravatar_fallback": "dynamic",
- "signature_length_max": 100,
- "blank_avatar": image,
- "subscribe_start": "no",
- "subscribe_reply": "no",
- "users_per_page": 12,
- "users_per_page_orphans": 4,
- "top_posters_ranking_length": 10,
- "top_posters_ranking_size": 10,
- "allow_data_downloads": "no",
- "data_downloads_expiration": 48,
- "allow_delete_own_account": "no",
- "new_inactive_accounts_delete": 0,
- "ip_storage_time": 0,
- }
- return admin_client.post(admin_link, data)
- @pytest.fixture
- def setting(db):
- return Setting.objects.get(setting="blank_avatar")
- @pytest.fixture
- def setting_with_value(admin_client, setting):
- min_size = max(settings.MISAGO_AVATARS_SIZES)
- image_file = create_image(min_size, min_size)
- submit_image(admin_client, image_file)
- setting.refresh_from_db()
- return setting
- def test_uploaded_image_is_rejected_if_its_not_square(admin_client, setting):
- image_file = create_image(100, 200)
- submit_image(admin_client, image_file)
- setting.refresh_from_db()
- assert not setting.value
- def test_uploaded_image_is_rejected_if_its_smaller_than_max_avatar_size(
- admin_client, setting
- ):
- min_size = max(settings.MISAGO_AVATARS_SIZES)
- image_file = create_image(min_size - 1, min_size - 1)
- submit_image(admin_client, image_file)
- setting.refresh_from_db()
- assert not setting.value
- def test_valid_blank_avatar_can_be_uploaded(admin_client, setting):
- min_size = max(settings.MISAGO_AVATARS_SIZES)
- image_file = create_image(min_size, min_size)
- submit_image(admin_client, image_file)
- setting.refresh_from_db()
- assert setting.value
- def test_submitting_form_without_new_image_doesnt_unset_existing_image(
- admin_client, setting_with_value
- ):
- submit_image(admin_client)
- setting_with_value.refresh_from_db()
- assert setting_with_value.value
|