diff --git a/app/models/user_avatar.rb b/app/models/user_avatar.rb index e271d2eab9d..d414d88525e 100644 --- a/app/models/user_avatar.rb +++ b/app/models/user_avatar.rb @@ -51,6 +51,10 @@ class UserAvatar < ActiveRecord::Base end end end + rescue OpenURI::HTTPError => e + if e.io&.status[0].to_i != 404 + raise e + end ensure tempfile&.close! end diff --git a/spec/models/user_avatar_spec.rb b/spec/models/user_avatar_spec.rb index b2aac9adebc..e5eba4498da 100644 --- a/spec/models/user_avatar_spec.rb +++ b/spec/models/user_avatar_spec.rb @@ -83,6 +83,23 @@ describe UserAvatar do end + describe "404 should be silent, nothing to do really" do + + it "does nothing when avatar is 404" do + + freeze_time Time.now + + stub_request(:get, "https://www.gravatar.com/avatar/#{avatar.user.email_hash}.png?d=404&s=360"). + to_return(status: 404, body: "", headers: {}) + + expect do + avatar.update_gravatar! + end.to_not change { Upload.count } + + expect(avatar.last_gravatar_download_attempt).to eq(Time.now) + end + end + end context '.import_url_for_user' do