From 769c2d2680c365cfafb35e27bc1d3b39deac118e Mon Sep 17 00:00:00 2001 From: Sumit Khanna 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 36665177db9..01756a73d4b 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 a453200af6e..5b1fe3acad6 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 zcmeI5OKeP07{|YF#)6V2*JDi+v1-DtmUiNi30;r~MVqkj2;;FJE*osbS`bSM zAtJFLn23c~Ni2v)BoZ{CyT-z6oYR`yKPJ^oq$88xO`3boOmFY>fBwJkyuRL^&93ii zm^OEsnKfj(J2#j$x?*D@RpU;#FZI54r~3Wfn-7{zpXI+2cH!b2_hMZxvu;)0n{>K% zVbhaq&j;O0ExUU*Ddt)^PF7DfrJ)}*!8 z*sHb3rf4sanTj>k=AUAU)PI|bSf^o0v95V_yOlY zhuDG85vUr_0UhcGI#yK!I-o=S03E6ZbT~Se-B|4AETg#qW8yFeVGc6p24=6!(8UeL z93)UV=toMAvTp9HTjX^*_5H!#t}82&BbrSeJ^j>gj!$!okKQmYxQ@(Y0od_WPtiLE zDhG&_ix^m`kH8A7)DO_1YCs2cs2`w1)qsvFqN8N0m~UXnkbq0&>?>Cc^%=l+0DP@ z0{HJBA3$^>DV_C2Cb>#>CY+A+u;&H|Ri~;`FF~E-3GrGN1liyCf zIv1Ys%YG~cE4wTOSJhH*v1u`RQ3-#>phNut9jXR&K!^GPI#dnlfDZKobf_B8@pn2(q>6b7d7c%|vl5h8 z(q~Cu>_9eYplUz|bf_OHzTri4&>Uk5FqUI1H|7STw<0`>9VR-KyZr8J-mJDE)7jqR zF2_ZB@n_PVll^iy^aF=ru<+q<@^gp((7&y(rkb}dC_H@JwA{a! NS+&0N`pVu@KLEZqli>gW literal 0 HcmV?d00001