]> source.dussan.org Git - redmine.git/commitdiff
Fix internal server error when trying to retrieve AnonymousUser's information via...
authorMarius Balteanu <marius.balteanu@zitec.com>
Fri, 27 May 2022 22:14:59 +0000 (22:14 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Fri, 27 May 2022 22:14:59 +0000 (22:14 +0000)
Patch by Yuichi HARADA.

git-svn-id: https://svn.redmine.org/redmine/trunk@21606 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/users/show.api.rsb
test/integration/api_test/users_test.rb

index f6a323265a0c3ea2b07be7b8d31e3cb84d6a9777..d84be914ec0dacf2625d07b8c0c03a6089168cfe 100644 (file)
@@ -9,7 +9,7 @@ api.user do
   api.updated_on @user.updated_on
   api.last_login_on     @user.last_login_on
   api.passwd_changed_on @user.passwd_changed_on
-  api.avatar_url gravatar_url(@user.mail, {rating: nil, size: nil, default: Setting.gravatar_default}) if Setting.gravatar_enabled?
+  api.avatar_url gravatar_url(@user.mail, {rating: nil, size: nil, default: Setting.gravatar_default}) if @user.mail && Setting.gravatar_enabled?
   api.twofa_scheme      @user.twofa_scheme if User.current.admin? || (User.current == @user)
   api.api_key    @user.api_key if User.current.admin? || (User.current == @user)
   api.status     @user.status if User.current.admin?
index 26473356ae299f3299d7f88f700ea46cedcdc375..8444500d9ac7e4a1a2eb979c87260888cdaaced4 100644 (file)
@@ -96,6 +96,24 @@ class Redmine::ApiTest::UsersTest < Redmine::ApiTest::Base
     assert_select 'user avatar_url', :text => %r|\Ahttps://gravatar.com/avatar/\h{32}\?default=robohash|
   end
 
+  test "GET /users/:id.xml should not return avatar_url when not set email address" do
+    user = User.find(2)
+    user.email_addresses.delete_all
+    assert_equal 'jsmith', user.login
+    assert_nil user.mail
+
+    Redmine::Configuration.with 'avatar_server_url' => 'https://gravatar.com' do
+      with_settings :gravatar_enabled => '1', :gravatar_default => 'robohash' do
+        get '/users/2.xml'
+      end
+    end
+
+    assert_response :success
+    assert_select 'user id', :text => '2'
+    assert_select 'user login', :text => 'jsmith'
+    assert_select 'user avatar_url', :count => 0
+  end
+
   test "GET /users/:id.json should return the user" do
     get '/users/2.json'