Checkout of Instiki Trunk 1/21/2007.
This commit is contained in:
commit
69b62b6f33
1138 changed files with 139586 additions and 0 deletions
184
vendor/rails/actionwebservice/test/abstract_client.rb
vendored
Normal file
184
vendor/rails/actionwebservice/test/abstract_client.rb
vendored
Normal file
|
@ -0,0 +1,184 @@
|
|||
require File.dirname(__FILE__) + '/abstract_unit'
|
||||
require 'webrick'
|
||||
require 'webrick/log'
|
||||
require 'singleton'
|
||||
|
||||
module ClientTest
|
||||
class Person < ActionWebService::Struct
|
||||
member :firstnames, [:string]
|
||||
member :lastname, :string
|
||||
|
||||
def ==(other)
|
||||
firstnames == other.firstnames && lastname == other.lastname
|
||||
end
|
||||
end
|
||||
|
||||
class Inner < ActionWebService::Struct
|
||||
member :name, :string
|
||||
end
|
||||
|
||||
class Outer < ActionWebService::Struct
|
||||
member :name, :string
|
||||
member :inner, Inner
|
||||
end
|
||||
|
||||
class User < ActiveRecord::Base
|
||||
end
|
||||
|
||||
module Accounting
|
||||
class User < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
class WithModel < ActionWebService::Struct
|
||||
member :user, User
|
||||
member :users, [User]
|
||||
end
|
||||
|
||||
class WithMultiDimArray < ActionWebService::Struct
|
||||
member :pref, [[:string]]
|
||||
end
|
||||
|
||||
class API < ActionWebService::API::Base
|
||||
api_method :void
|
||||
api_method :normal, :expects => [:int, :int], :returns => [:int]
|
||||
api_method :array_return, :returns => [[Person]]
|
||||
api_method :struct_pass, :expects => [[Person]], :returns => [:bool]
|
||||
api_method :nil_struct_return, :returns => [Person]
|
||||
api_method :inner_nil, :returns => [Outer]
|
||||
api_method :client_container, :returns => [:int]
|
||||
api_method :named_parameters, :expects => [{:key=>:string}, {:id=>:int}]
|
||||
api_method :thrower
|
||||
api_method :user_return, :returns => [User]
|
||||
api_method :with_model_return, :returns => [WithModel]
|
||||
api_method :scoped_model_return, :returns => [Accounting::User]
|
||||
api_method :multi_dim_return, :returns => [WithMultiDimArray]
|
||||
end
|
||||
|
||||
class NullLogOut
|
||||
def <<(*args); end
|
||||
end
|
||||
|
||||
class Container < ActionController::Base
|
||||
web_service_api API
|
||||
|
||||
attr_accessor :value_void
|
||||
attr_accessor :value_normal
|
||||
attr_accessor :value_array_return
|
||||
attr_accessor :value_struct_pass
|
||||
attr_accessor :value_named_parameters
|
||||
|
||||
def initialize
|
||||
@session = @assigns = {}
|
||||
@value_void = nil
|
||||
@value_normal = nil
|
||||
@value_array_return = nil
|
||||
@value_struct_pass = nil
|
||||
@value_named_parameters = nil
|
||||
end
|
||||
|
||||
def void
|
||||
@value_void = @method_params
|
||||
end
|
||||
|
||||
def normal
|
||||
@value_normal = @method_params
|
||||
5
|
||||
end
|
||||
|
||||
def array_return
|
||||
person = Person.new
|
||||
person.firstnames = ["one", "two"]
|
||||
person.lastname = "last"
|
||||
@value_array_return = [person]
|
||||
end
|
||||
|
||||
def struct_pass
|
||||
@value_struct_pass = @method_params
|
||||
true
|
||||
end
|
||||
|
||||
def nil_struct_return
|
||||
nil
|
||||
end
|
||||
|
||||
def inner_nil
|
||||
Outer.new :name => 'outer', :inner => nil
|
||||
end
|
||||
|
||||
def client_container
|
||||
50
|
||||
end
|
||||
|
||||
def named_parameters
|
||||
@value_named_parameters = @method_params
|
||||
end
|
||||
|
||||
def thrower
|
||||
raise "Hi"
|
||||
end
|
||||
|
||||
def user_return
|
||||
User.find(1)
|
||||
end
|
||||
|
||||
def with_model_return
|
||||
WithModel.new :user => User.find(1), :users => User.find(:all)
|
||||
end
|
||||
|
||||
def scoped_model_return
|
||||
Accounting::User.find(1)
|
||||
end
|
||||
|
||||
def multi_dim_return
|
||||
WithMultiDimArray.new :pref => [%w{pref1 value1}, %w{pref2 value2}]
|
||||
end
|
||||
end
|
||||
|
||||
class AbstractClientLet < WEBrick::HTTPServlet::AbstractServlet
|
||||
def initialize(controller)
|
||||
@controller = controller
|
||||
end
|
||||
|
||||
def get_instance(*args)
|
||||
self
|
||||
end
|
||||
|
||||
def require_path_info?
|
||||
false
|
||||
end
|
||||
|
||||
def do_GET(req, res)
|
||||
raise WEBrick::HTTPStatus::MethodNotAllowed, "GET request not allowed."
|
||||
end
|
||||
|
||||
def do_POST(req, res)
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
|
||||
class AbstractServer
|
||||
include ClientTest
|
||||
include Singleton
|
||||
attr :container
|
||||
def initialize
|
||||
@container = Container.new
|
||||
@clientlet = create_clientlet(@container)
|
||||
log = WEBrick::BasicLog.new(NullLogOut.new)
|
||||
@server = WEBrick::HTTPServer.new(:Port => server_port, :Logger => log, :AccessLog => log)
|
||||
@server.mount('/', @clientlet)
|
||||
@thr = Thread.new { @server.start }
|
||||
until @server.status == :Running; end
|
||||
at_exit { @server.stop; @thr.join }
|
||||
end
|
||||
|
||||
protected
|
||||
def create_clientlet
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def server_port
|
||||
raise NotImplementedError
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue