Skip to content

Commit

Permalink
Error message for avatar image that's too large. mastodon#9204 (masto…
Browse files Browse the repository at this point in the history
…don#9518)

* Error message for avatar image that's too large. mastodon#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
  • Loading branch information
sumdog authored and hiyuki2578 committed Oct 2, 2019
1 parent 5a4bac1 commit 94f5f34
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
3 changes: 3 additions & 0 deletions app/services/update_account_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ def call(account, params, raise_error: false)
check_links(account)
process_hashtags(account)
end
rescue Mastodon::DimensionsValidationError => de
account.errors.add(:avatar, de.message)
false
end

private
Expand Down
22 changes: 22 additions & 0 deletions spec/controllers/settings/profiles_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,26 @@
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
Binary file added spec/fixtures/files/4096x4097.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 94f5f34

Please sign in to comment.