~ubuntu-branches/ubuntu/hardy/ruby1.8/hardy-updates

« back to all changes in this revision

Viewing changes to test/wsdl/rpc/test_rpc.rb

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-03-13 22:11:58 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070313221158-h3oql37brlaf2go2
Tags: 1.8.6-1
* new upstream version, 1.8.6.
* libruby1.8 conflicts with libopenssl-ruby1.8 (< 1.8.6) (closes: #410018)
* changed packaging style to cdbs from dbs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
require 'test/unit'
 
2
require 'wsdl/parser'
 
3
require 'wsdl/soap/wsdl2ruby'
 
4
require 'soap/rpc/standaloneServer'
 
5
require 'soap/wsdlDriver'
 
6
 
 
7
 
 
8
module WSDL; module RPC
 
9
 
 
10
 
 
11
class TestRPC < Test::Unit::TestCase
 
12
  class Server < ::SOAP::RPC::StandaloneServer
 
13
    def on_init
 
14
      self.generate_explicit_type = false
 
15
      add_rpc_method(self, 'echo', 'arg1', 'arg2')
 
16
      add_rpc_method(self, 'echo_err', 'arg1', 'arg2')
 
17
    end
 
18
  
 
19
    DummyPerson = Struct.new("family-name".intern, :given_name)
 
20
    def echo(arg1, arg2)
 
21
      case arg1.family_name
 
22
      when 'normal'
 
23
        arg1.family_name = arg2.family_name
 
24
        arg1.given_name = arg2.given_name
 
25
        arg1.age = arg2.age
 
26
        arg1
 
27
      when 'dummy'
 
28
        DummyPerson.new("family-name", "given_name")
 
29
      else
 
30
        raise
 
31
      end
 
32
    end
 
33
  
 
34
    ErrPerson = Struct.new(:given_name, :no_such_element)
 
35
    def echo_err(arg1, arg2)
 
36
      ErrPerson.new(58, Time.now)
 
37
    end
 
38
  end
 
39
 
 
40
  DIR = File.dirname(File.expand_path(__FILE__))
 
41
 
 
42
  Port = 17171
 
43
 
 
44
  def setup
 
45
    setup_server
 
46
    setup_classdef
 
47
    @client = nil
 
48
  end
 
49
 
 
50
  def teardown
 
51
    teardown_server
 
52
    File.unlink(pathname('echo.rb'))
 
53
    @client.reset_stream if @client
 
54
  end
 
55
 
 
56
  def setup_server
 
57
    @server = Server.new('Test', "urn:rpc", '0.0.0.0', Port)
 
58
    @server.level = Logger::Severity::ERROR
 
59
    @server_thread = start_server_thread(@server)
 
60
  end
 
61
 
 
62
  def setup_classdef
 
63
    gen = WSDL::SOAP::WSDL2Ruby.new
 
64
    gen.location = pathname("rpc.wsdl")
 
65
    gen.basedir = DIR
 
66
    gen.logger.level = Logger::FATAL
 
67
    gen.opt['classdef'] = nil
 
68
    gen.opt['force'] = true
 
69
    gen.run
 
70
    require pathname('echo')
 
71
  end
 
72
 
 
73
  def teardown_server
 
74
    @server.shutdown
 
75
    @server_thread.kill
 
76
    @server_thread.join
 
77
  end
 
78
 
 
79
  def start_server_thread(server)
 
80
    t = Thread.new {
 
81
      Thread.current.abort_on_exception = true
 
82
      server.start
 
83
    }
 
84
    t
 
85
  end
 
86
 
 
87
  def pathname(filename)
 
88
    File.join(DIR, filename)
 
89
  end
 
90
 
 
91
  def test_wsdl
 
92
    wsdl = File.join(DIR, 'rpc.wsdl')
 
93
    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
 
94
    @client.endpoint_url = "http://localhost:#{Port}/"
 
95
    @client.wiredump_dev = STDOUT if $DEBUG
 
96
 
 
97
    ret = @client.echo(Person.new("normal", "", 12), Person.new("Hi", "Na", 21))
 
98
    assert_equal(Person, ret.class)
 
99
    assert_equal("Hi", ret.family_name)
 
100
    assert_equal("Na", ret.given_name)
 
101
    assert_equal(21, ret.age)
 
102
 
 
103
    ret = @client.echo(Person.new("dummy", "", 12), Person.new("Hi", "Na", 21))
 
104
    assert_equal(Person, ret.class)
 
105
    assert_equal("family-name", ret.family_name)
 
106
    assert_equal("given_name", ret.given_name)
 
107
    assert_equal(nil, ret.age)
 
108
 
 
109
    ret = @client.echo_err(Person.new("Na", "Hi"), Person.new("Hi", "Na"))
 
110
    assert_equal(Person, ret.class)
 
111
    assert_equal("58", ret.given_name)
 
112
    assert_equal(nil, ret.family_name)
 
113
    assert_equal(nil, ret.age)
 
114
  end
 
115
end
 
116
 
 
117
 
 
118
end; end