Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/trunk/test/soap/test_cookie.rb

Revision 1963, 2.7 kB (checked in by nahi, 1 year ago)
  • update tests. do not crash at teardown when setup failed. closes #396.
Line 
1 require 'test/unit'
2 require 'soap/rpc/driver'
3 require 'webrick'
4 require 'logger'
5 require File.join(File.dirname(File.expand_path(__FILE__)), '..', 'testutil.rb')
6
7
8 module SOAP
9
10
11 class TestCookie < Test::Unit::TestCase
12   Port = 17171
13
14   class CookieFilter < SOAP::Filter::StreamHandler
15     attr_accessor :cookie_value
16
17     def initialize
18       @cookie_value = nil
19     end
20
21     def on_http_outbound(req)
22       if @cookie_value
23         req.header.delete('Cookie')
24         req.header['Cookie'] = @cookie_value
25       end
26     end
27
28     def on_http_inbound(req, res)
29       # this sample filter only caputures the first cookie.
30       cookie = res.header['Set-Cookie'][0]
31       cookie.sub!(/;.*\z/, '') if cookie
32       @cookie_value = cookie
33       # do not save cookie value.
34     end
35   end
36
37   def setup
38     @logger = Logger.new(STDERR)
39     @logger.level = Logger::Severity::ERROR
40     @url = "http://localhost:#{Port}/"
41     @server = @client = nil
42     @server_thread = nil
43     setup_server
44     setup_client
45   end
46
47   def teardown
48     teardown_client if @client
49     teardown_server if @server
50   end
51
52   def setup_server
53     @server = WEBrick::HTTPServer.new(
54       :BindAddress => "0.0.0.0",
55       :Logger => @logger,
56       :Port => Port,
57       :AccessLog => [],
58       :DocumentRoot => File.dirname(File.expand_path(__FILE__))
59     )
60     @server.mount(
61       '/',
62       WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc).to_proc)
63     )
64     @server_thread = TestUtil.start_server_thread(@server)
65   end
66
67   def setup_client
68     @client = SOAP::RPC::Driver.new(@url, '')
69     @client.add_method("do_server_proc")
70   end
71
72   def teardown_server
73     @server.shutdown
74     @server_thread.kill
75     @server_thread.join
76   end
77
78   def teardown_client
79     @client.reset_stream
80   end
81
82   def do_server_proc(req, res)
83     cookie = req['Cookie'].to_s
84     cookie = "var=hello world" if cookie.empty?
85     res['content-type'] = 'text/xml'
86     res['Set-Cookie'] = cookie
87     res.body = <<__EOX__
88 <?xml version="1.0" encoding="utf-8" ?>
89 <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
90   <env:Body>
91     <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
92       <return xsi:nil="true"/>
93     </n1:do_server_proc>
94   </env:Body>
95 </env:Envelope>
96 __EOX__
97   end
98
99   def test_normal
100     @client.wiredump_dev = STDOUT if $DEBUG
101     filter = CookieFilter.new
102     @client.streamhandler.filterchain << filter
103     assert_nil(@client.do_server_proc)
104     assert_equal('var=hello world', filter.cookie_value)
105     filter.cookie_value = 'var=empty'
106     assert_nil(@client.do_server_proc)
107     assert_equal('var=empty', filter.cookie_value)
108   end
109 end
110
111
112 end
Note: See TracBrowser for help on using the browser.