From 769c2d2680c365cfafb35e27bc1d3b39deac118e Mon Sep 17 00:00:00 2001 From: Sumit Khanna <notify@battlepenguin.com> Date: Thu, 13 Dec 2018 22:07:21 -0600 Subject: [PATCH] Error message for avatar image that's too large. #9204 (#9518) * Error message for avatar image that's too large. #9204 * Code climate/formatting * Removed avatar error message * Moved valid image dimentions check to update service * removed unnescessary begin block * code climate formatting * code climate indent fix --- app/services/update_account_service.rb | 3 +++ .../settings/profiles_controller_spec.rb | 22 ++++++++++++++++++ spec/fixtures/files/4096x4097.png | Bin 0 -> 58859 bytes 3 files changed, 25 insertions(+) create mode 100644 spec/fixtures/files/4096x4097.png diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb index 36665177db..01756a73d4 100644 --- a/app/services/update_account_service.rb +++ b/app/services/update_account_service.rb @@ -12,6 +12,9 @@ class UpdateAccountService < BaseService check_links(account) process_hashtags(account) end + rescue Mastodon::DimensionsValidationError => de + account.errors.add(:avatar, de.message) + false end private diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb index a453200af6..5b1fe3acad 100644 --- a/spec/controllers/settings/profiles_controller_spec.rb +++ b/spec/controllers/settings/profiles_controller_spec.rb @@ -26,4 +26,26 @@ RSpec.describe Settings::ProfilesController, type: :controller do expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) end end + + describe 'PUT #update with new profile image' do + it 'updates profile image' do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + account = Fabricate(:account, user: @user, display_name: 'AvatarTest') + expect(account.avatar.instance.avatar_file_name).to be_nil + + put :update, params: { account: { avatar: fixture_file_upload('files/avatar.gif', 'image/gif') } } + expect(response).to redirect_to(settings_profile_path) + expect(account.reload.avatar.instance.avatar_file_name).not_to be_nil + expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) + end + end + + describe 'PUT #update with oversized image' do + it 'gives the user an error message' do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + account = Fabricate(:account, user: @user, display_name: 'AvatarTest') + put :update, params: { account: { avatar: fixture_file_upload('files/4096x4097.png', 'image/png') } } + expect(response.body).to include('images are not supported') + end + end end diff --git a/spec/fixtures/files/4096x4097.png b/spec/fixtures/files/4096x4097.png new file mode 100644 index 0000000000000000000000000000000000000000..d1110cc2df0a299b47e9ad088ea61ccfd428cddb GIT binary patch literal 58859 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 literal 0 HcmV?d00001 -- GitLab