diff options
Diffstat (limited to 'ruby_1_8_6/test/soap/header')
-rw-r--r-- | ruby_1_8_6/test/soap/header/server.cgi | 119 | ||||
-rw-r--r-- | ruby_1_8_6/test/soap/header/test_authheader.rb | 240 | ||||
-rw-r--r-- | ruby_1_8_6/test/soap/header/test_authheader_cgi.rb | 121 | ||||
-rw-r--r-- | ruby_1_8_6/test/soap/header/test_simplehandler.rb | 116 |
4 files changed, 0 insertions, 596 deletions
diff --git a/ruby_1_8_6/test/soap/header/server.cgi b/ruby_1_8_6/test/soap/header/server.cgi deleted file mode 100644 index 2a188538d9..0000000000 --- a/ruby_1_8_6/test/soap/header/server.cgi +++ /dev/null @@ -1,119 +0,0 @@ -require 'pstore' -require 'soap/rpc/cgistub' -require 'soap/header/simplehandler' - - -class AuthHeaderPortServer < SOAP::RPC::CGIStub - PortName = 'http://tempuri.org/authHeaderPort' - SupportPortName = 'http://tempuri.org/authHeaderSupportPort' - MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth") - SessionDB = File.join(File.expand_path(File.dirname(__FILE__)), 'session.pstoredb') - - class AuthHeaderService - def self.create - new - end - - def deposit(amt) - "deposit #{amt} OK" - end - - def withdrawal(amt) - "withdrawal #{amt} OK" - end - end - - class AuthHeaderSupportService - def delete_sessiondb - File.unlink(SessionDB) if File.file?(SessionDB) - backup = SessionDB + "~" - File.unlink(backup) if File.file?(backup) - end - end - - def initialize(*arg) - super - add_rpc_servant(AuthHeaderService.new, PortName) - add_rpc_servant(AuthHeaderSupportService.new, SupportPortName) - add_rpc_headerhandler(ServerAuthHeaderHandler.new) - end - - class ServerAuthHeaderHandler < SOAP::Header::SimpleHandler - Users = { - 'NaHi' => 'passwd', - 'HiNa' => 'wspass' - } - - def initialize - super(MyHeaderName) - @db = PStore.new(SessionDB) - @db.transaction do - @db["root"] = {} unless @db.root?("root") - end - @userid = @sessionid = nil - end - - def login(userid, passwd) - userid and passwd and Users[userid] == passwd - end - - def auth(sessionid) - in_sessiondb do |root| - root[sessionid][0] - end - end - - def create_session(userid) - in_sessiondb do |root| - while true - key = create_sessionkey - break unless root[key] - end - root[key] = [userid] - key - end - end - - def destroy_session(sessionkey) - in_sessiondb do |root| - root.delete(sessionkey) - end - end - - def on_simple_outbound - { "sessionid" => @sessionid } - end - - def on_simple_inbound(my_header, mu) - succeeded = false - userid = my_header["userid"] - passwd = my_header["passwd"] - if login(userid, passwd) - succeeded = true - elsif sessionid = my_header["sessionid"] - if userid = auth(sessionid) - destroy_session(sessionid) - succeeded = true - end - end - raise RuntimeError.new("authentication failed") unless succeeded - @userid = userid - @sessionid = create_session(userid) - end - - private - - def create_sessionkey - Time.now.usec.to_s - end - - def in_sessiondb - @db.transaction do - yield(@db["root"]) - end - end - end -end - - -status = AuthHeaderPortServer.new('AuthHeaderPortServer', nil).start diff --git a/ruby_1_8_6/test/soap/header/test_authheader.rb b/ruby_1_8_6/test/soap/header/test_authheader.rb deleted file mode 100644 index 47e1e76b82..0000000000 --- a/ruby_1_8_6/test/soap/header/test_authheader.rb +++ /dev/null @@ -1,240 +0,0 @@ -require 'test/unit' -require 'soap/rpc/driver' -require 'soap/rpc/standaloneServer' -require 'soap/header/simplehandler' - - -module SOAP -module Header - - -class TestAuthHeader < Test::Unit::TestCase - Port = 17171 - PortName = 'http://tempuri.org/authHeaderPort' - MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth") - DummyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "dummy") - - class AuthHeaderPortServer < SOAP::RPC::StandaloneServer - class AuthHeaderService - def self.create - new - end - - def deposit(amt) - "deposit #{amt} OK" - end - - def withdrawal(amt) - "withdrawal #{amt} OK" - end - end - - def initialize(*arg) - super - add_rpc_servant(AuthHeaderService.new, PortName) - ServerAuthHeaderHandler.init - add_request_headerhandler(ServerAuthHeaderHandler) - end - - class ServerAuthHeaderHandler < SOAP::Header::SimpleHandler - class << self - def create - new - end - - def init - @users = { - 'NaHi' => 'passwd', - 'HiNa' => 'wspass' - } - @sessions = {} - end - - def login(userid, passwd) - userid and passwd and @users[userid] == passwd - end - - def auth(sessionid) - @sessions[sessionid][0] - end - - def create_session(userid) - while true - key = create_sessionkey - break unless @sessions[key] - end - @sessions[key] = [userid] - key - end - - def destroy_session(sessionkey) - @sessions.delete(sessionkey) - end - - def sessions - @sessions - end - - private - - def create_sessionkey - Time.now.usec.to_s - end - end - - def initialize - super(MyHeaderName) - @userid = @sessionid = nil - end - - def on_simple_outbound - { "sessionid" => @sessionid } - end - - def on_simple_inbound(my_header, mu) - auth = false - userid = my_header["userid"] - passwd = my_header["passwd"] - if self.class.login(userid, passwd) - auth = true - elsif sessionid = my_header["sessionid"] - if userid = self.class.auth(sessionid) - self.class.destroy_session(sessionid) - auth = true - end - end - raise RuntimeError.new("authentication failed") unless auth - @userid = userid - @sessionid = self.class.create_session(userid) - end - end - end - - class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler - def initialize(userid, passwd, mustunderstand) - super(MyHeaderName) - @sessionid = nil - @userid = userid - @passwd = passwd - @mustunderstand = mustunderstand - end - - def on_simple_outbound - if @sessionid - { "sessionid" => @sessionid } - else - { "userid" => @userid, "passwd" => @passwd } - end - end - - def on_simple_inbound(my_header, mustunderstand) - @sessionid = my_header["sessionid"] - end - - def sessionid - @sessionid - end - end - - class DummyHeaderHandler < SOAP::Header::SimpleHandler - def initialize(mustunderstand) - super(DummyHeaderName) - @mustunderstand = mustunderstand - end - - def on_simple_outbound - { XSD::QName.new("foo", "bar") => nil } - end - - def on_simple_inbound(my_header, mustunderstand) - end - end - - def setup - @endpoint = "http://localhost:#{Port}/" - setup_server - setup_client - end - - def setup_server - @server = AuthHeaderPortServer.new(self.class.name, nil, '0.0.0.0', Port) - @server.level = Logger::Severity::ERROR - @t = Thread.new { - @server.start - } - end - - def setup_client - @client = SOAP::RPC::Driver.new(@endpoint, PortName) - @client.wiredump_dev = STDERR if $DEBUG - @client.add_method('deposit', 'amt') - @client.add_method('withdrawal', 'amt') - end - - def teardown - teardown_server - teardown_client - end - - def teardown_server - @server.shutdown - @t.kill - @t.join - end - - def teardown_client - @client.reset_stream - end - - def test_success_no_mu - h = ClientAuthHeaderHandler.new('NaHi', 'passwd', false) - @client.headerhandler << h - do_transaction_check(h) - end - - def test_success_mu - h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true) - @client.headerhandler << h - do_transaction_check(h) - end - - def test_no_mu - h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true) - @client.headerhandler << h - @client.headerhandler << DummyHeaderHandler.new(false) - do_transaction_check(h) - end - - def test_mu - h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true) - @client.headerhandler << h - @client.headerhandler << (h2 = DummyHeaderHandler.new(true)) - assert_raise(SOAP::UnhandledMustUnderstandHeaderError) do - assert_equal("deposit 150 OK", @client.deposit(150)) - end - @client.headerhandler.delete(h2) - @client.headerhandler << (h2 = DummyHeaderHandler.new(false)) - do_transaction_check(h) - end - - def do_transaction_check(h) - assert_equal("deposit 150 OK", @client.deposit(150)) - serversess = AuthHeaderPortServer::ServerAuthHeaderHandler.sessions[h.sessionid] - assert_equal("NaHi", serversess[0]) - assert_equal("withdrawal 120 OK", @client.withdrawal(120)) - serversess = AuthHeaderPortServer::ServerAuthHeaderHandler.sessions[h.sessionid] - assert_equal("NaHi", serversess[0]) - end - - def test_authfailure - h = ClientAuthHeaderHandler.new('NaHi', 'pa', false) - @client.headerhandler << h - assert_raises(RuntimeError) do - @client.deposit(150) - end - end -end - - -end -end diff --git a/ruby_1_8_6/test/soap/header/test_authheader_cgi.rb b/ruby_1_8_6/test/soap/header/test_authheader_cgi.rb deleted file mode 100644 index d70b022ad8..0000000000 --- a/ruby_1_8_6/test/soap/header/test_authheader_cgi.rb +++ /dev/null @@ -1,121 +0,0 @@ -require 'test/unit' -require 'soap/rpc/driver' -require 'soap/rpc/standaloneServer' -require 'soap/header/simplehandler' -require 'logger' -require 'webrick' -require 'rbconfig' - - -module SOAP -module Header - - -class TestAuthHeaderCGI < Test::Unit::TestCase - # This test shuld be run after installing ruby. - RUBYBIN = File.join( - Config::CONFIG["bindir"], - Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"] - ) - RUBYBIN << " -d" if $DEBUG - - Port = 17171 - PortName = 'http://tempuri.org/authHeaderPort' - SupportPortName = 'http://tempuri.org/authHeaderSupportPort' - MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth") - - class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler - def initialize(userid, passwd) - super(MyHeaderName) - @sessionid = nil - @userid = userid - @passwd = passwd - end - - def on_simple_outbound - if @sessionid - { "sessionid" => @sessionid } - else - { "userid" => @userid, "passwd" => @passwd } - end - end - - def on_simple_inbound(my_header, mustunderstand) - @sessionid = my_header["sessionid"] - end - - def sessionid - @sessionid - end - end - - def setup - @endpoint = "http://localhost:#{Port}/" - setup_server - setup_client - end - - def setup_server - @endpoint = "http://localhost:#{Port}/server.cgi" - logger = Logger.new(STDERR) - logger.level = Logger::Severity::ERROR - @server = WEBrick::HTTPServer.new( - :BindAddress => "0.0.0.0", - :Logger => logger, - :Port => Port, - :AccessLog => [], - :DocumentRoot => File.dirname(File.expand_path(__FILE__)), - :CGIPathEnv => ENV['PATH'], - :CGIInterpreter => RUBYBIN - ) - @t = Thread.new { - Thread.current.abort_on_exception = true - @server.start - } - end - - def setup_client - @client = SOAP::RPC::Driver.new(@endpoint, PortName) - @client.wiredump_dev = STDERR if $DEBUG - @client.add_method('deposit', 'amt') - @client.add_method('withdrawal', 'amt') - @supportclient = SOAP::RPC::Driver.new(@endpoint, SupportPortName) - @supportclient.add_method('delete_sessiondb') - end - - def teardown - @supportclient.delete_sessiondb - teardown_server - teardown_client - end - - def teardown_server - @server.shutdown - @t.kill - @t.join - end - - def teardown_client - @client.reset_stream - @supportclient.reset_stream - end - - def test_success - h = ClientAuthHeaderHandler.new('NaHi', 'passwd') - @client.headerhandler << h - assert_equal("deposit 150 OK", @client.deposit(150)) - assert_equal("withdrawal 120 OK", @client.withdrawal(120)) - end - - def test_authfailure - h = ClientAuthHeaderHandler.new('NaHi', 'pa') - @client.headerhandler << h - assert_raises(RuntimeError) do - @client.deposit(150) - end - end -end - - -end -end diff --git a/ruby_1_8_6/test/soap/header/test_simplehandler.rb b/ruby_1_8_6/test/soap/header/test_simplehandler.rb deleted file mode 100644 index 75dbd4a550..0000000000 --- a/ruby_1_8_6/test/soap/header/test_simplehandler.rb +++ /dev/null @@ -1,116 +0,0 @@ -require 'test/unit' -require 'soap/rpc/driver' -require 'soap/rpc/standaloneServer' -require 'soap/header/simplehandler' - - -module SOAP -module Header - - -class TestSimpleHandler < Test::Unit::TestCase - Port = 17171 - PortName = 'http://tempuri.org/authHeaderPort' - - class PingPortServer < SOAP::RPC::StandaloneServer - class PingService - def self.create - new - end - - def ping - Thread.current[:pingheader] - end - end - - def initialize(*arg) - super - add_rpc_servant(PingService.new, PortName) - add_request_headerhandler(PingServerHeaderHandler) - end - - class PingServerHeaderHandler < SOAP::Header::SimpleHandler - MyHeaderName = XSD::QName.new("http://xmlsoap.org/Ping", "PingHeader") - - def self.create - new - end - - def initialize() - super(MyHeaderName) - end - - def on_simple_outbound - "dummy" - end - - def on_simple_inbound(my_header, mu) - Thread.current[:pingheader] = my_header - end - end - end - - class PingClientHeaderHandler < SOAP::Header::SimpleHandler - MyHeaderName = XSD::QName.new("http://xmlsoap.org/Ping", "PingHeader") - - def initialize(pingHeader) - super(MyHeaderName) - @pingHeader = pingHeader - @mustunderstand = false - end - - def on_simple_outbound - @pingHeader # --- note, not a Hash - end - - def on_simple_inbound(my_header, mustunderstand) - Thread.current[:pingheader] = my_header - end - end - - def setup - @endpoint = "http://localhost:#{Port}/" - setup_server - setup_client - end - - def setup_server - @server = PingPortServer.new(self.class.name, nil, '0.0.0.0', Port) - @server.level = Logger::Severity::ERROR - @t = Thread.new { - @server.start - } - end - - def setup_client - @client = SOAP::RPC::Driver.new(@endpoint, PortName) - @client.wiredump_dev = STDERR if $DEBUG - @client.add_method('ping') - end - - def teardown - teardown_server - teardown_client - end - - def teardown_server - @server.shutdown - @t.kill - @t.join - end - - def teardown_client - @client.reset_stream - end - - def test_string - h = PingClientHeaderHandler.new('pingheader') - @client.headerhandler << h - assert_equal("pingheader", @client.ping) - assert_equal("dummy", Thread.current[:pingheader]) - end -end - - -end -end |