[ARVADOS] created: 7f5e5b88c9161cbec69725108e438aa1532acaf5

Git user git at public.curoverse.com
Wed Jun 29 15:54:19 EDT 2016


        at  7f5e5b88c9161cbec69725108e438aa1532acaf5 (commit)


commit 7f5e5b88c9161cbec69725108e438aa1532acaf5
Author: Tom Clegg <tom at curoverse.com>
Date:   Wed Jun 29 15:53:27 2016 -0400

    9518: Fix username conflict resolution.

diff --git a/services/api/app/models/user.rb b/services/api/app/models/user.rb
index 553a3be..18d33a6 100644
--- a/services/api/app/models/user.rb
+++ b/services/api/app/models/user.rb
@@ -312,8 +312,8 @@ class User < ArvadosModel
       self.class.
           where("username like '#{pattern}'").
           select(:username).
-          order(username: :asc).
-          find_each do |other_user|
+          order('username asc').
+          each do |other_user|
         if other_user.username > next_username
           break
         elsif other_user.username == next_username
diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb
index b96645c..4df6cc0 100644
--- a/services/api/test/unit/user_test.rb
+++ b/services/api/test/unit/user_test.rb
@@ -93,6 +93,16 @@ class UserTest < ActiveSupport::TestCase
   test "new username set with deduplication" do
     name = users(:active).username
     check_new_username_setting(name, "#{name}2")
+    check_new_username_setting(name, "#{name}3")
+    # Insert some out-of-order conflicts, to ensure our "sort by
+    # username, stop when we see a hole" strategy doesn't depend on
+    # insert order.
+    check_new_username_setting("#{name}13", "#{name}13")
+    check_new_username_setting("#{name}5", "#{name}5")
+    check_new_username_setting(name, "#{name}4")
+    6.upto(12).each do |n|
+      check_new_username_setting(name, "#{name}#{n}")
+    end
   end
 
   test "new username set avoiding blacklist" do

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list