diff --git a/lib/net/ldap/dn.rb b/lib/net/ldap/dn.rb index e314b80e..da0ff7ca 100644 --- a/lib/net/ldap/dn.rb +++ b/lib/net/ldap/dn.rb @@ -57,19 +57,19 @@ def each_pair state = :key_oid key << char when ' ' then state = :key - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :key_normal then case char when '=' then state = :value when 'a'..'z', 'A'..'Z', '0'..'9', '-', ' ' then key << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :key_oid then case char when '=' then state = :value when '0'..'9', '.', ' ' then key << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value then case char @@ -110,7 +110,7 @@ def each_pair when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_normal value << "#{hex_buffer}#{char}".to_i(16).chr - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_quoted then case char @@ -132,7 +132,7 @@ def each_pair when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_quoted value << "#{hex_buffer}#{char}".to_i(16).chr - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_hexstring then case char @@ -145,14 +145,14 @@ def each_pair yield key.string.strip, value.string.rstrip key = StringIO.new value = StringIO.new; - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_hexstring_hex then case char when '0'..'9', 'a'..'f', 'A'..'F' then state = :value_hexstring value << char - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end when :value_end then case char @@ -162,14 +162,14 @@ def each_pair yield key.string.strip, value.string.rstrip key = StringIO.new value = StringIO.new; - else raise "DN badly formed" + else raise Net::LDAP::InvalidDNError, "DN badly formed" end - else raise "Fell out of state machine" + else raise Net::LDAP::InvalidDNError, "Fell out of state machine" end end # Last pair - raise "DN badly formed" unless + raise Net::LDAP::InvalidDNError, "DN badly formed" unless [:value, :value_normal, :value_hexstring, :value_end].include? state yield key.string.strip, value.string.rstrip diff --git a/lib/net/ldap/error.rb b/lib/net/ldap/error.rb index 50442d06..2fe61fa6 100644 --- a/lib/net/ldap/error.rb +++ b/lib/net/ldap/error.rb @@ -60,6 +60,7 @@ class SearchScopeInvalidError < Error; end class ResponseTypeInvalidError < Error; end class ResponseMissingOrInvalidError < Error; end class EmptyDNError < Error; end + class InvalidDNError < Error; end class HashTypeUnsupportedError < Error; end class OperatorError < Error; end class SubstringFilterError < Error; end diff --git a/test/test_dn.rb b/test/test_dn.rb index a7b269b0..ac5949a8 100644 --- a/test/test_dn.rb +++ b/test/test_dn.rb @@ -26,7 +26,6 @@ def test_to_a_hash_symbol assert_equal ['1.23.4', '#A3B4D5', 'ou', 'Company'], dn.to_a end - # TODO: raise a more specific exception than RuntimeError def test_bad_input_raises_error [ 'cn=James,', @@ -38,7 +37,7 @@ def test_bad_input_raises_error 'd1.2=Value', ].each do |input| dn = Net::LDAP::DN.new(input) - assert_raises(RuntimeError) { dn.to_a } + assert_raises(Net::LDAP::InvalidDNError) { dn.to_a } end end end