diff options
Diffstat (limited to 'test/xmlrpc/test_client.rb')
-rw-r--r-- | test/xmlrpc/test_client.rb | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/test/xmlrpc/test_client.rb b/test/xmlrpc/test_client.rb deleted file mode 100644 index 634de02d4d..0000000000 --- a/test/xmlrpc/test_client.rb +++ /dev/null @@ -1,323 +0,0 @@ -# frozen_string_literal: false -require 'test/unit' -require 'xmlrpc/client' -require 'net/http' -begin - require 'openssl' -rescue LoadError -end - -module XMLRPC - class ClientTest < Test::Unit::TestCase - module Fake - class HTTP < Net::HTTP - class << self - def new(*args, &block) - Class.method(:new).unbind.bind(self).call(*args, &block) - end - end - - def initialize responses = {} - super("127.0.0.1") - @started = false - @responses = responses - end - - def started? - @started - end - - def start - @started = true - if block_given? - begin - return yield(self) - ensure - @started = false - end - end - self - end - - def request_post path, request, headers - @responses[path].shift - end - end - - class Client < XMLRPC::Client - attr_reader :args, :http - - def initialize(*args) - @args = args - super - end - - private - def net_http host, port, proxy_host, proxy_port - HTTP.new - end - end - - class Response - def self.new body, fields = [], status = '200' - klass = Class.new(Net::HTTPResponse::CODE_TO_OBJ[status]) { - def initialize(*args) - super - @read = true - end - } - - resp = klass.new '1.1', status, 'OK' - resp.body = body - fields.each do |k,v| - resp.add_field k, v - end - resp - end - end - end - - def test_new2_host_path_port - client = Fake::Client.new2 'http://example.org/foo' - host, path, port, *rest = client.args - - assert_equal 'example.org', host - assert_equal '/foo', path - assert_equal 80, port - - rest.each { |x| refute x } - end - - def test_new2_custom_port - client = Fake::Client.new2 'http://example.org:1234/foo' - host, path, port, *rest = client.args - - assert_equal 'example.org', host - assert_equal '/foo', path - assert_equal 1234, port - - rest.each { |x| refute x } - end - - def test_new2_ssl - client = Fake::Client.new2 'https://example.org/foo' - host, path, port, proxy_host, proxy_port, user, password, use_ssl, timeout = client.args - - assert_equal 'example.org', host - assert_equal '/foo', path - assert_equal 443, port - assert use_ssl - - refute proxy_host - refute proxy_port - refute user - refute password - refute timeout - end if defined?(OpenSSL) - - def test_new2_ssl_custom_port - client = Fake::Client.new2 'https://example.org:1234/foo' - host, path, port, proxy_host, proxy_port, user, password, use_ssl, timeout = client.args - - assert_equal 'example.org', host - assert_equal '/foo', path - assert_equal 1234, port - assert use_ssl - - refute proxy_host - refute proxy_port - refute user - refute password - refute timeout - end if defined?(OpenSSL) - - def test_new2_user_password - client = Fake::Client.new2 'http://aaron:tenderlove@example.org/foo' - host, path, port, proxy_host, proxy_port, user, password, use_ssl, timeout = client.args - - [ host, path, port ].each { |x| assert x } - assert_equal 'aaron', user - assert_equal 'tenderlove', password - - [ proxy_host, proxy_port, use_ssl, timeout ].each { |x| refute x } - end - - def test_new2_proxy_host - client = Fake::Client.new2 'http://example.org/foo', 'example.com' - host, path, port, proxy_host, proxy_port, user, password, use_ssl, timeout = client.args - - [ host, path, port ].each { |x| assert x } - - assert_equal 'example.com', proxy_host - - [ user, password, proxy_port, use_ssl, timeout ].each { |x| refute x } - end - - def test_new2_proxy_port - client = Fake::Client.new2 'http://example.org/foo', 'example.com:1234' - host, path, port, proxy_host, proxy_port, user, password, use_ssl, timeout = client.args - - [ host, path, port ].each { |x| assert x } - - assert_equal 'example.com', proxy_host - assert_equal 1234, proxy_port - - [ user, password, use_ssl, timeout ].each { |x| refute x } - end - - def test_new2_no_path - client = Fake::Client.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 = Fake::Client.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_raise(ArgumentError) do - XMLRPC::Client.new2 'ftp://example.org' - end - end - - def test_new2_bad_uri - assert_raise(ArgumentError) do - XMLRPC::Client.new2 ':::::' - end - end - - def test_new2_path_with_query - client = Fake::Client.new2 'http://example.org/foo?bar=baz' - host, path, port, *rest = client.args - - assert_equal 'example.org', host - assert_equal '/foo?bar=baz', path - assert port - - rest.each { |x| refute x } - end - - def test_request - fh = read 'blog.xml' - - responses = { - '/foo' => [ Fake::Response.new(fh, [['Content-Type', 'text/xml']]) ] - } - - client = fake_client(responses).new2 'http://example.org/foo' - - resp = client.call('wp.getUsersBlogs', 'tlo', 'omg') - - expected = [{ - "isAdmin" => true, - "url" => "http://tenderlovemaking.com/", - "blogid" => "1", - "blogName" => "Tender Lovemaking", - "xmlrpc" => "http://tenderlovemaking.com/xmlrpc.php" - }] - - assert_equal expected, resp - end - - def test_async_request - fh = read 'blog.xml' - - responses = { - '/foo' => [ Fake::Response.new(fh, [['Content-Type', 'text/xml']]) ] - } - - client = fake_client(responses).new2 'http://example.org/foo' - - resp = client.call_async('wp.getUsersBlogs', 'tlo', 'omg') - - expected = [{ - "isAdmin" => true, - "url" => "http://tenderlovemaking.com/", - "blogid" => "1", - "blogName" => "Tender Lovemaking", - "xmlrpc" => "http://tenderlovemaking.com/xmlrpc.php" - }] - - assert_equal expected, resp - end - - # make a request without content-type header - def test_bad_content_type - fh = read 'blog.xml' - - responses = { - '/foo' => [ Fake::Response.new(fh) ] - } - - client = fake_client(responses).new2 'http://example.org/foo' - - resp = client.call('wp.getUsersBlogs', 'tlo', 'omg') - - expected = [{ - "isAdmin" => true, - "url" => "http://tenderlovemaking.com/", - "blogid" => "1", - "blogName" => "Tender Lovemaking", - "xmlrpc" => "http://tenderlovemaking.com/xmlrpc.php" - }] - - assert_equal expected, resp - end - - def test_i8_tag - fh = read('blog.xml').gsub(/string/, 'i8') - - responses = { - '/foo' => [ Fake::Response.new(fh) ] - } - - client = fake_client(responses).new2 'http://example.org/foo' - - resp = client.call('wp.getUsersBlogs', 'tlo', 'omg') - - assert_equal 1, resp.first['blogid'] - end - - def test_cookie_simple - client = Fake::Client.new2('http://example.org/cookie') - assert_nil(client.cookie) - client.send(:parse_set_cookies, ["param1=value1", "param2=value2"]) - assert_equal("param1=value1; param2=value2", client.cookie) - end - - def test_cookie_override - client = Fake::Client.new2('http://example.org/cookie') - client.send(:parse_set_cookies, - [ - "param1=value1", - "param2=value2", - "param1=value3", - ]) - assert_equal("param2=value2; param1=value3", client.cookie) - end - - private - def read filename - File.read File.expand_path(File.join(__FILE__, '..', 'data', filename)) - end - - def fake_client responses - Class.new(Fake::Client) { - define_method(:net_http) { |*_| Fake::HTTP.new(responses) } - } - end - end -end |