]> source.dussan.org Git - redmine.git/commitdiff
/users API accepts boolean strings for generate_password field (#28686).
authorGo MAEDA <maeda@farend.jp>
Sun, 6 May 2018 08:31:23 +0000 (08:31 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 6 May 2018 08:31:23 +0000 (08:31 +0000)
Patch by Gregor Schmidt.

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

app/models/user.rb
test/integration/api_test/users_test.rb

index 4440edf1c7d30f08dada35ffb201a8a45802ba3a..15d6333c6dbe313b71a4f27ffe788e92a1b46e9b 100644 (file)
@@ -354,7 +354,7 @@ class User < Principal
   end
 
   def generate_password?
-    generate_password == '1' || generate_password == true
+    ActiveRecord::Type::Boolean.new.deserialize(generate_password)
   end
 
   # Generate and set a random password on given length
index 468caf398119eeec5bfe949e5f5cd466823fd4da..1925578085849990a929f1997dfda18997a96a5a 100644 (file)
@@ -152,6 +152,22 @@ class Redmine::ApiTest::UsersTest < Redmine::ApiTest::Base
     assert_select 'user id', :text => user.id.to_s
   end
 
+  test "POST /users.xml with generate_password should generate password" do
+    assert_difference('User.count') do
+      post '/users.xml',
+        :params => {
+          :user => {
+            :login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname',
+            :mail => 'foo@example.net', :generate_password => 'true'
+          }
+        },
+        :headers => credentials('admin')
+    end
+
+    user = User.order('id DESC').first
+    assert user.hashed_password.present?
+  end
+
   test "POST /users.json with valid parameters should create the user" do
     assert_difference('User.count') do
       post '/users.json',