dougbarth-actionwebservice 2.1.1 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -38,25 +38,6 @@ task :build_database do
38
38
  %x( mysql -uroot actionwebservice_unittest < #{File.join(SCHEMA_PATH, 'mysql.sql')} )
39
39
  end
40
40
 
41
- desc 'Print file list for gemspec file.'
42
- task :list_files do
43
- s_files = [ "Rakefile", "setup.rb", "README", "TODO", "CHANGELOG", "MIT-LICENSE" ]
44
- s_files = s_files + Dir.glob( "examples/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
45
- s_files = s_files + Dir.glob( "lib/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
46
- s_files = s_files + Dir.glob( "test/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
47
- s_files = s_files + Dir.glob( "generators/**/*" ).delete_if { |item| item.match( /\.(svn|git)/ ) }
48
- puts "#{s_files.inspect}"
49
- end
50
-
51
- desc 'Checks gemspec for methods disallowed by GitHub\'s $SAFE=3 build environment.'
52
- task :check_for_github do
53
- require 'rubygems/specification'
54
- data = File.read('actionwebservice.gemspec')
55
- spec = nil
56
- Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
57
- puts "Success! Gem should build at GitHub." if spec.class == Gem::Specification
58
- end
59
-
60
41
 
61
42
  # Generate the RDoc documentation
62
43
  Rake::RDocTask.new { |rdoc|
@@ -91,8 +72,8 @@ spec = Gem::Specification.new do |s|
91
72
  s.rubyforge_project = "aws"
92
73
  s.homepage = "http://www.rubyonrails.org"
93
74
 
94
- s.add_dependency('actionpack', '= 2.1.1' + PKG_BUILD)
95
- s.add_dependency('activerecord', '= 2.1.1' + PKG_BUILD)
75
+ s.add_dependency('actionpack', '= 2.3.3' + PKG_BUILD)
76
+ s.add_dependency('activerecord', '= 2.3.3' + PKG_BUILD)
96
77
 
97
78
  s.has_rdoc = true
98
79
  s.requirements << 'none'
@@ -189,4 +170,4 @@ task :release => [ :package ] do
189
170
  rubyforge = RubyForge.new
190
171
  rubyforge.login
191
172
  rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
192
- end
173
+ end
@@ -27,9 +27,9 @@ begin
27
27
  require 'active_record'
28
28
  rescue LoadError
29
29
  require 'rubygems'
30
- gem 'activesupport', '>= 2.1.0'
31
- gem 'actionpack', '>= 2.1.0'
32
- gem 'activerecord', '>= 2.1.0'
30
+ gem 'activesupport', '>= 2.3.0'
31
+ gem 'actionpack', '>= 2.3.0'
32
+ gem 'activerecord', '>= 2.3.0'
33
33
  end
34
34
 
35
35
  $:.unshift(File.dirname(__FILE__) + "/action_web_service/vendor/")
@@ -117,8 +117,13 @@ module ActionWebService # :nodoc:
117
117
 
118
118
  def cast_to_structured_type(value, signature_type) # :nodoc:
119
119
  obj = nil
120
- obj = value if canonical_type(value.class) == canonical_type(signature_type.type)
121
- obj ||= signature_type.type_class.new
120
+ # if the canonical classes are the same or if the given value is of
121
+ # a type that is derived from the signature_type do not attempt to
122
+ # "cast" the value into the signature_type as it's already good to go
123
+ obj = (
124
+ canonical_type(value.class) == canonical_type(signature_type.type) or
125
+ derived_from?(signature_type.type, value.class)
126
+ ) ? value : signature_type.type_class.new
122
127
  if value.respond_to?(:each_pair)
123
128
  klass = signature_type.type_class
124
129
  value.each_pair do |name, val|
@@ -165,7 +165,7 @@ module ActionWebService # :nodoc:
165
165
  private
166
166
  def base_uri
167
167
  host = request.host_with_port
168
- relative_url_root = request.relative_url_root
168
+ relative_url_root = ::ActionController::Base.relative_url_root
169
169
  scheme = request.ssl? ? 'https' : 'http'
170
170
  '%s://%s%s/%s/' % [scheme, host, relative_url_root, self.class.controller_path]
171
171
  end
@@ -12,7 +12,7 @@ module ActionWebService # :nodoc:
12
12
 
13
13
  def encode_action_pack_request(service_name, public_method_name, raw_body, options={})
14
14
  klass = options[:request_class] || SimpleActionPackRequest
15
- request = klass.new
15
+ request = klass.new({})
16
16
  request.request_parameters['action'] = service_name.to_s
17
17
  request.env['RAW_POST_DATA'] = raw_body
18
18
  request.env['REQUEST_METHOD'] = 'POST'
@@ -71,9 +71,9 @@ module ActionWebService # :nodoc:
71
71
  end
72
72
  end
73
73
 
74
- class SimpleActionPackRequest < ActionController::AbstractRequest # :nodoc:
75
- def initialize
76
- @env = {}
74
+ class SimpleActionPackRequest < ActionController::Request # :nodoc:
75
+ def initialize(env = {})
76
+ @env = env
77
77
  @qparams = {}
78
78
  @rparams = {}
79
79
  @cookies = {}
@@ -69,7 +69,7 @@ module ActionWebService
69
69
  post_params = params['method_params'] ? params['method_params'].dup : nil
70
70
  params = []
71
71
  @scaffold_method.expects.each_with_index do |spec, i|
72
- params << post_params[i.to_s]
72
+ params << post_params[i.to_s]
73
73
  end if @scaffold_method.expects
74
74
  params = @scaffold_method.cast_expects(params)
75
75
  method_name = public_method_name(@scaffold_service.name, @scaffold_method.public_name)
@@ -87,7 +87,6 @@ module ActionWebService
87
87
  @method_return_value = @scaffold_method.cast_returns(obj)
88
88
  end
89
89
  @method_elapsed = bm.real
90
- add_instance_variables_to_assigns
91
90
  reset_invocation_response
92
91
  render_invocation_scaffold 'result'
93
92
  end
@@ -102,16 +101,15 @@ module ActionWebService
102
101
  @scaffold_service = @scaffold_container.services.find{ |x| x.name == params['service'] }
103
102
  @scaffold_method = @scaffold_service.api_methods[params['method']]
104
103
  end
105
- add_instance_variables_to_assigns
106
104
  end
107
105
 
108
106
  def render_invocation_scaffold(action)
109
107
  customized_template = "\#{self.class.controller_path}/#{action_name}/\#{action}"
110
108
  default_template = scaffold_path(action)
111
- if template_exists?(customized_template)
112
- content = @template.render_file(customized_template)
113
- else
114
- content = @template.render_file(default_template, false)
109
+ begin
110
+ content = @template.render(:file => customized_template)
111
+ rescue ActionView::MissingTemplate
112
+ content = @template.render(:file => default_template)
115
113
  end
116
114
  @template.instance_variable_set("@content_for_layout", content)
117
115
  if self.active_layout.nil?
@@ -127,7 +125,7 @@ module ActionWebService
127
125
 
128
126
  def reset_invocation_response
129
127
  erase_render_results
130
- response.headers = ::ActionController::AbstractResponse::DEFAULT_HEADERS.merge("cookie" => [])
128
+ response.instance_variable_set :@header, Rack::Utils::HeaderHash.new(::ActionController::Response::DEFAULT_HEADERS.merge("cookie" => []))
131
129
  end
132
130
 
133
131
  def public_method_name(service_name, method_name)
@@ -1,8 +1,8 @@
1
1
  module ActionWebService
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
- MINOR = 1
5
- TINY = 0
4
+ MINOR = 3
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -358,7 +358,7 @@ module DispatcherCommonTests
358
358
  response = ActionController::TestResponse.new
359
359
  controller.process(request, response)
360
360
  # puts response.body
361
- assert(response.headers['Status'] =~ /^500/)
361
+ assert(response.status =~ /^500/)
362
362
  end
363
363
  send_garbage_request.call
364
364
  controller.class.web_service_exception_reporting = false
@@ -538,7 +538,8 @@ module DispatcherCommonTests
538
538
 
539
539
  def http_method_allowed?(method)
540
540
  method = method.to_s.upcase
541
- test_request = ActionController::TestRequest.new({ 'action' => 'api' })
541
+ test_request = ActionController::TestRequest.new
542
+ test_request.action = 'api'
542
543
  test_response = ActionController::TestResponse.new
543
544
  test_request.env['REQUEST_METHOD'] = method
544
545
  result = @direct_controller.process(test_request, test_response)
@@ -4,7 +4,9 @@ require 'rubygems'
4
4
  require 'test/unit'
5
5
  require 'action_web_service'
6
6
  require 'action_controller'
7
- require 'action_controller/test_process'
7
+ require 'action_controller/test_case'
8
+ require 'action_view'
9
+ require 'action_view/test_case'
8
10
 
9
11
  # Show backtraces for deprecated behavior for quicker cleanup.
10
12
  ActiveSupport::Deprecation.debug = true
@@ -14,6 +16,7 @@ ActiveRecord::Base.logger = ActionController::Base.logger = Logger.new("debug.lo
14
16
 
15
17
  begin
16
18
  require 'activerecord'
19
+ require "active_record/test_case"
17
20
  require "active_record/fixtures" unless Object.const_defined?(:Fixtures)
18
21
  rescue LoadError => e
19
22
  fail "\nFailed to load activerecord: #{e}"
@@ -30,4 +33,7 @@ ActiveRecord::Base.configurations = {
30
33
 
31
34
  ActiveRecord::Base.establish_connection 'mysql'
32
35
 
33
- Test::Unit::TestCase.fixture_path = "#{File.dirname(__FILE__)}/fixtures/"
36
+ class ActiveSupport::TestCase
37
+ include ActiveRecord::TestFixtures
38
+ self.fixture_path = "#{File.dirname(__FILE__)}/fixtures/"
39
+ end
data/test/api_test.rb CHANGED
@@ -12,7 +12,7 @@ module APITest
12
12
  end
13
13
  end
14
14
 
15
- class TC_API < Test::Unit::TestCase
15
+ class TC_API < ActiveSupport::TestCase
16
16
  API = APITest::API
17
17
 
18
18
  def test_api_method_declaration
data/test/base_test.rb CHANGED
@@ -34,7 +34,7 @@ module BaseTest
34
34
  end
35
35
  end
36
36
 
37
- class TC_Base < Test::Unit::TestCase
37
+ class TC_Base < ActiveSupport::TestCase
38
38
  def test_options
39
39
  assert(BaseTest::PristineService.web_service_api.inflect_names == false)
40
40
  assert(BaseTest::Service.web_service_api.inflect_names == true)
data/test/casting_test.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/abstract_unit'
2
2
 
3
3
  module CastingTest
4
+ class A < ActionWebService::Struct; end
5
+ class B < A; end
4
6
  class API < ActionWebService::API::Base
5
7
  api_method :int, :expects => [:int]
6
8
  api_method :str, :expects => [:string]
@@ -14,6 +16,8 @@ module CastingTest
14
16
  api_method :int_array, :expects => [[:int]]
15
17
  api_method :str_array, :expects => [[:string]]
16
18
  api_method :bool_array, :expects => [[:bool]]
19
+
20
+ api_method :a, :expects => [A]
17
21
  end
18
22
  end
19
23
 
@@ -78,6 +82,10 @@ class TC_Casting < Test::Unit::TestCase
78
82
  cast_expects(:int_array, ['1', '2.021', '4'])
79
83
  end
80
84
  end
85
+
86
+ def test_structured_type_casting_with_polymorphism
87
+ assert cast_expects(:a, B.new)[0].is_a?(B)
88
+ end
81
89
 
82
90
  private
83
91
  def cast_expects(method_name, *args)
@@ -19,6 +19,8 @@ module ClientSoapTest
19
19
  rescue Exception => e
20
20
  $stderr.puts e.message
21
21
  $stderr.puts e.backtrace.join("\n")
22
+ ensure
23
+ ActiveRecord::Base.clear_active_connections!
22
24
  end
23
25
  end
24
26
 
@@ -46,7 +48,7 @@ module ClientSoapTest
46
48
  end
47
49
  end
48
50
 
49
- class TC_ClientSoap < Test::Unit::TestCase
51
+ class TC_ClientSoap < ActiveSupport::TestCase
50
52
  include ClientTest
51
53
  include ClientSoapTest
52
54
 
@@ -18,6 +18,8 @@ module ClientXmlRpcTest
18
18
  rescue Exception => e
19
19
  $stderr.puts e.message
20
20
  $stderr.puts e.backtrace.join("\n")
21
+ ensure
22
+ ActiveRecord::Base.clear_active_connections!
21
23
  end
22
24
  end
23
25
 
@@ -40,7 +42,7 @@ module ClientXmlRpcTest
40
42
  end
41
43
  end
42
44
 
43
- class TC_ClientXmlRpc < Test::Unit::TestCase
45
+ class TC_ClientXmlRpc < ActiveSupport::TestCase
44
46
  include ClientTest
45
47
  include ClientXmlRpcTest
46
48
 
@@ -129,7 +129,8 @@ class TC_DispatcherActionControllerSoap < Test::Unit::TestCase
129
129
  end
130
130
 
131
131
  def ensure_valid_wsdl_action(controller)
132
- test_request = ActionController::TestRequest.new({ 'action' => 'wsdl' })
132
+ test_request = ActionController::TestRequest.new
133
+ test_request.action = 'wsdl'
133
134
  test_response = ActionController::TestResponse.new
134
135
  wsdl = controller.process(test_request, test_response).body
135
136
  ensure_valid_wsdl(controller, wsdl, DispatcherTest::WsdlNamespace)
@@ -64,12 +64,12 @@ class ScaffoldedController < ActionController::Base
64
64
  end
65
65
  end
66
66
 
67
- class ScaffoldedControllerTest < Test::Unit::TestCase
68
- def setup
69
- @controller = ScaffoldedController.new
70
- @request = ActionController::TestRequest.new
71
- @response = ActionController::TestResponse.new
72
- end
67
+ class ScaffoldedControllerTest < ActionController::TestCase
68
+ # def setup
69
+ # @controller = ScaffoldedController.new
70
+ # @request = ActionController::TestRequest.new
71
+ # @response = ActionController::TestResponse.new
72
+ # end
73
73
 
74
74
  def test_scaffold_invoke
75
75
  get :scaffold_invoke
@@ -49,7 +49,7 @@ class TestInvokeLayeredController < TestController
49
49
  web_service(:two) { @service_two ||= TestInvokeService.new }
50
50
  end
51
51
 
52
- class TestInvokeTest < Test::Unit::TestCase
52
+ class TestInvokeTest < ActiveSupport::TestCase
53
53
  def setup
54
54
  @request = ActionController::TestRequest.new
55
55
  @response = ActionController::TestResponse.new
metadata CHANGED
@@ -1,34 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dougbarth-actionwebservice
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Breedt, Kent Sibilev
8
- autorequire: actionwebservice
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-13 00:00:00 -07:00
12
+ date: 2009-05-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
20
- - - ">="
21
+ - - "="
21
22
  - !ruby/object:Gem::Version
22
- version: 2.1.0
23
+ version: 2.3.3
23
24
  version:
24
25
  - !ruby/object:Gem::Dependency
25
26
  name: activerecord
27
+ type: :runtime
26
28
  version_requirement:
27
29
  version_requirements: !ruby/object:Gem::Requirement
28
30
  requirements:
29
- - - ">="
31
+ - - "="
30
32
  - !ruby/object:Gem::Version
31
- version: 2.1.0
33
+ version: 2.3.3
32
34
  version:
33
35
  description: Adds WSDL/SOAP and XML-RPC web service support to Action Pack
34
36
  email: bitserf@gmail.com, ksibilev@yahoo.com
@@ -140,6 +142,7 @@ files:
140
142
  - generators/web_service/web_service_generator.rb
141
143
  has_rdoc: true
142
144
  homepage: http://www.rubyonrails.org
145
+ licenses:
143
146
  post_install_message:
144
147
  rdoc_options: []
145
148
 
@@ -160,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
163
  requirements:
161
164
  - none
162
165
  rubyforge_project: aws
163
- rubygems_version: 1.2.0
166
+ rubygems_version: 1.3.5
164
167
  signing_key:
165
168
  specification_version: 2
166
169
  summary: Web service support for Action Pack.