18803: Save empty identity_url to database as null.
authorTom Clegg <tom@curii.com>
Fri, 25 Feb 2022 17:05:46 +0000 (12:05 -0500)
committerTom Clegg <tom@curii.com>
Fri, 25 Feb 2022 17:05:46 +0000 (12:05 -0500)
Allows multiple records to have empty identity_url without hitting
unique constraint.

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

services/api/app/models/user.rb
services/api/test/unit/user_test.rb

index febb8ea51611eb5a21549b8133770fe059a2ca5c..811cd89758d9ef8642be5382c9bac54b4f649134 100644 (file)
@@ -21,6 +21,7 @@ class User < ArvadosModel
             uniqueness: true,
             allow_nil: true)
   validate :must_unsetup_to_deactivate
+  validate :identity_url_nil_if_empty
   before_update :prevent_privilege_escalation
   before_update :prevent_inactive_admin
   before_update :verify_repositories_empty, :if => Proc.new {
@@ -810,4 +811,10 @@ SELECT target_uuid, perm_level
       repo.save!
     end
   end
+
+  def identity_url_nil_if_empty
+    if identity_url == ""
+      self.identity_url = nil
+    end
+  end
 end
index 7368d893745658fd20de42de6d2410f421a1098b..9a0e1dbf9cc2427be71613b1ed939bc125f07351 100644 (file)
@@ -797,4 +797,12 @@ class UserTest < ActiveSupport::TestCase
     assert user.save
   end
 
+  test "empty identity_url saves as null" do
+    set_user_from_auth :admin
+    user = users(:active)
+    assert user.update_attributes(identity_url: '')
+    user.reload
+    assert_nil user.identity_url
+  end
+
 end