summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb12
-rw-r--r--test/unit/user_test.rb11
2 files changed, 19 insertions, 4 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 4f8223dc0..32cc08b11 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -81,10 +81,14 @@ class User < ActiveRecord::Base
end
def identity_url=(url)
- begin
- self.write_attribute(:identity_url, OpenIdAuthentication.normalize_identifier(url))
- rescue InvalidOpenId
- # Invlaid url, don't save
+ if url.blank?
+ write_attribute(:identity_url, '')
+ else
+ begin
+ write_attribute(:identity_url, OpenIdAuthentication.normalize_identifier(url))
+ rescue OpenIdAuthentication::InvalidOpenId
+ # Invlaid url, don't save
+ end
end
self.read_attribute(:identity_url)
end
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 6bf0e41fd..fd3403709 100644
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -204,6 +204,17 @@ class UserTest < Test::Unit::TestCase
u = User.new( :identity_url => 'example.com' )
assert_equal normalized_open_id_url, u.identity_url
end
+
+ def test_setting_blank_identity_url
+ u = User.new( :identity_url => 'example.com' )
+ u.identity_url = ''
+ assert u.identity_url.blank?
+ end
+
+ def test_setting_invalid_identity_url
+ u = User.new( :identity_url => 'this is not an openid url' )
+ assert u.identity_url.blank?
+ end
else
puts "Skipping openid tests."