mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
GH#retrieve_avatar: simplify conditional and restructured testing
This commit is contained in:
@ -118,14 +118,11 @@ class Auth::GithubAuthenticator < Auth::Authenticator
|
|||||||
scope: "user:email"
|
scope: "user:email"
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
private
|
||||||
|
|
||||||
def retrieve_avatar(user, data)
|
def retrieve_avatar(user, data)
|
||||||
return unless user
|
return unless data[:image].present? && user && user.user_avatar&.custom_upload_id.blank?
|
||||||
return if user.user_avatar&.custom_upload_id.present?
|
|
||||||
|
|
||||||
if (avatar_url = data[:image]).present?
|
Jobs.enqueue(:download_avatar_from_url, url: data[:image], user_id: user.id, override_gravatar: false)
|
||||||
Jobs.enqueue(:download_avatar_from_url, url: avatar_url, user_id: user.id, override_gravatar: false)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -184,27 +184,36 @@ describe Auth::GithubAuthenticator do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe 'avatar retrieval' do
|
describe 'avatar retrieval' do
|
||||||
|
let(:job_klass) { Jobs::DownloadAvatarFromUrl }
|
||||||
|
|
||||||
|
before { SiteSetting.queue_jobs = true }
|
||||||
|
|
||||||
context 'when user has a custom avatar' do
|
context 'when user has a custom avatar' do
|
||||||
let(:user_avatar) { Fabricate(:user_avatar, custom_upload: Fabricate(:upload)) }
|
let(:user_avatar) { Fabricate(:user_avatar, custom_upload: Fabricate(:upload)) }
|
||||||
let(:user_with_custom_avatar) { Fabricate(:user, user_avatar: user_avatar) }
|
let(:user_with_custom_avatar) { Fabricate(:user, user_avatar: user_avatar) }
|
||||||
|
|
||||||
it 'does not enqueue a download_avatar_from_url job' do
|
it 'does not enqueue a download_avatar_from_url job' do
|
||||||
Jobs.expects(:enqueue).with(:download_avatar_from_url, anything).never
|
Sidekiq::Testing.fake!
|
||||||
|
|
||||||
result = authenticator.after_authenticate(auth_token_for(user_with_custom_avatar))
|
expect {
|
||||||
|
authenticator.after_authenticate(auth_token_for(user_with_custom_avatar))
|
||||||
|
}.to_not change(job_klass.jobs, :size)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when user does not have a custom avatar' do
|
context 'when user does not have a custom avatar' do
|
||||||
it 'enqueues a download_avatar_from_url job' do
|
it 'enqueues a download_avatar_from_url job' do
|
||||||
Jobs.expects(:enqueue).with(
|
Sidekiq::Testing.fake!
|
||||||
:download_avatar_from_url,
|
|
||||||
url: "https://avatars3.githubusercontent.com/u/#{user.username}",
|
|
||||||
user_id: user.id,
|
|
||||||
override_gravatar: false
|
|
||||||
)
|
|
||||||
|
|
||||||
result = authenticator.after_authenticate(auth_token_for(user))
|
expect {
|
||||||
|
authenticator.after_authenticate(auth_token_for(user))
|
||||||
|
}.to change(job_klass.jobs, :size).by(1)
|
||||||
|
|
||||||
|
job_args = job_klass.jobs.last['args'].first
|
||||||
|
|
||||||
|
expect(job_args['url']).to eq("https://avatars3.githubusercontent.com/u/#{user.username}")
|
||||||
|
expect(job_args['user_id']).to eq(user.id)
|
||||||
|
expect(job_args['override_gravatar']).to eq(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user