diff --git a/app/models/user.rb b/app/models/user.rb index 4f8223dc..32cc08b1 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 6bf0e41f..fd340370 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."