From df9e445e9f663fec6e33723aa45817c2edacac3d Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Fri, 25 Feb 2022 12:05:46 -0500 Subject: [PATCH] 18803: Save empty identity_url to database as null. Allows multiple records to have empty identity_url without hitting unique constraint. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- services/api/app/models/user.rb | 7 +++++++ services/api/test/unit/user_test.rb | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/services/api/app/models/user.rb b/services/api/app/models/user.rb index febb8ea516..811cd89758 100644 --- a/services/api/app/models/user.rb +++ b/services/api/app/models/user.rb @@ -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 diff --git a/services/api/test/unit/user_test.rb b/services/api/test/unit/user_test.rb index 7368d89374..9a0e1dbf9c 100644 --- a/services/api/test/unit/user_test.rb +++ b/services/api/test/unit/user_test.rb @@ -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 -- 2.30.2