dougbarth-actionwebservice 2.1.1 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.