summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/xmlrpc/client.rb4
-rw-r--r--test/xmlrpc/test_client.rb34
3 files changed, 42 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index d6fbea25c5..2bc4fbaa70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Mar 3 08:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): raises an ArgumentError on bad
+ arguments.
+ * test/xmlrpc/test_client.rb: tests for bad uris
+
Sat Mar 3 08:08:11 2012 Aaron Patterson <aaron@tenderlovemaking.com>
* lib/xmlrpc/client.rb (new2): fix custom port specification when an
diff --git a/lib/xmlrpc/client.rb b/lib/xmlrpc/client.rb
index b9d4affeb2..d6495b55c4 100644
--- a/lib/xmlrpc/client.rb
+++ b/lib/xmlrpc/client.rb
@@ -349,12 +349,12 @@ module XMLRPC
when 'http' then port ||= 80
when 'https' then port ||= 443
else
- raise "Wrong protocol specified. Only http or https allowed!"
+ raise ArgumentError, "Wrong protocol specified. Only http or https allowed!"
end
port = port.to_i
else
- raise "Wrong URI as parameter!"
+ raise ArgumentError, "Wrong URI as parameter!"
end
proxy_host, proxy_port = (proxy || "").split(":")
diff --git a/test/xmlrpc/test_client.rb b/test/xmlrpc/test_client.rb
index e12391a3ea..353bfc5f88 100644
--- a/test/xmlrpc/test_client.rb
+++ b/test/xmlrpc/test_client.rb
@@ -98,5 +98,39 @@ module XMLRPC
[ user, password, use_ssl, timeout ].each { |x| refute x }
end
+
+ def test_new2_no_path
+ client = FakeClient.new2 'http://example.org'
+ host, path, port, *rest = client.args
+
+ assert_equal 'example.org', host
+ assert_nil path
+ assert port
+
+ rest.each { |x| refute x }
+ end
+
+ def test_new2_slash_path
+ client = FakeClient.new2 'http://example.org/'
+ host, path, port, *rest = client.args
+
+ assert_equal 'example.org', host
+ assert_equal '/', path
+ assert port
+
+ rest.each { |x| refute x }
+ end
+
+ def test_new2_bad_protocol
+ assert_raises(ArgumentError) do
+ XMLRPC::Client.new2 'ftp://example.org'
+ end
+ end
+
+ def test_new2_bad_uri
+ assert_raises(ArgumentError) do
+ XMLRPC::Client.new2 ':::::'
+ end
+ end
end
end