wash_out 0.2.1 → 0.2.2

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/Appraisals CHANGED
@@ -1,7 +1,7 @@
1
- appraise "rails-3.1.0" do
2
- gem "rails", "3.1.0"
1
+ appraise "rails-3.1.3" do
2
+ gem "rails", "3.1.3"
3
3
  end
4
4
 
5
- appraise "rails-3.0.10" do
6
- gem "rails", "3.0.10"
5
+ appraise "rails-3.0.11" do
6
+ gem "rails", "3.0.11"
7
7
  end
data/README.md CHANGED
@@ -15,8 +15,8 @@ Usage
15
15
 
16
16
  A SOAP endpoint in WashOut is simply a Rails controller which includes the module WashOut::SOAP. Each SOAP
17
17
  action corresponds to a certain controller method; this mapping, as well as the argument definition, is defined
18
- by [soap_action][] method. Check the method documentation for complete info; here,
19
- only a few examples will be demonstrated.
18
+ by [soap_action][] method. Check the method documentation for complete info; here, only a few examples will be
19
+ demonstrated.
20
20
 
21
21
  [soap_action]: http://rubydoc.info/gems/wash_out/0.2.1/WashOut/SOAP/ClassMethods#soap_action-instance_method
22
22
 
@@ -54,6 +54,13 @@ class ApiController < ApplicationController
54
54
 
55
55
  render :soap => nil
56
56
  end
57
+
58
+ # You can use all Rails features like filtering, too. A SOAP controller
59
+ # is just like a normal controller with a special routing.
60
+ before_filter :dump_parameters
61
+ def dump_parameters
62
+ Rails.logger.log(params.inspect)
63
+ end
57
64
  end
58
65
  ```
59
66
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
- gem "rails", "3.0.10"
5
+ gem "rails", "3.0.11"
6
6
 
7
7
  gemspec :path=>"../"
@@ -1,18 +1,19 @@
1
1
  PATH
2
2
  remote: /home/whitequark/wash_out
3
3
  specs:
4
- wash_out (0.1)
4
+ wash_out (0.2.1)
5
+ nori
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
8
9
  specs:
9
10
  abstract (1.0.0)
10
- actionmailer (3.0.10)
11
- actionpack (= 3.0.10)
11
+ actionmailer (3.0.11)
12
+ actionpack (= 3.0.11)
12
13
  mail (~> 2.2.19)
13
- actionpack (3.0.10)
14
- activemodel (= 3.0.10)
15
- activesupport (= 3.0.10)
14
+ actionpack (3.0.11)
15
+ activemodel (= 3.0.11)
16
+ activesupport (= 3.0.11)
16
17
  builder (~> 2.1.2)
17
18
  erubis (~> 2.6.6)
18
19
  i18n (~> 0.5.0)
@@ -20,19 +21,19 @@ GEM
20
21
  rack-mount (~> 0.6.14)
21
22
  rack-test (~> 0.5.7)
22
23
  tzinfo (~> 0.3.23)
23
- activemodel (3.0.10)
24
- activesupport (= 3.0.10)
24
+ activemodel (3.0.11)
25
+ activesupport (= 3.0.11)
25
26
  builder (~> 2.1.2)
26
27
  i18n (~> 0.5.0)
27
- activerecord (3.0.10)
28
- activemodel (= 3.0.10)
29
- activesupport (= 3.0.10)
28
+ activerecord (3.0.11)
29
+ activemodel (= 3.0.11)
30
+ activesupport (= 3.0.11)
30
31
  arel (~> 2.0.10)
31
32
  tzinfo (~> 0.3.23)
32
- activeresource (3.0.10)
33
- activemodel (= 3.0.10)
34
- activesupport (= 3.0.10)
35
- activesupport (3.0.10)
33
+ activeresource (3.0.11)
34
+ activemodel (= 3.0.11)
35
+ activesupport (= 3.0.11)
36
+ activesupport (3.0.11)
36
37
  akami (1.0.0)
37
38
  gyoku (>= 0.4.0)
38
39
  appraisal (0.4.0)
@@ -48,7 +49,7 @@ GEM
48
49
  httpi (0.9.5)
49
50
  rack
50
51
  i18n (0.5.0)
51
- json (1.6.1)
52
+ json (1.6.3)
52
53
  mail (2.2.19)
53
54
  activesupport (>= 2.3.6)
54
55
  i18n (>= 0.4.0)
@@ -63,22 +64,22 @@ GEM
63
64
  rack (>= 1.0.0)
64
65
  rack-test (0.5.7)
65
66
  rack (>= 1.0)
66
- rails (3.0.10)
67
- actionmailer (= 3.0.10)
68
- actionpack (= 3.0.10)
69
- activerecord (= 3.0.10)
70
- activeresource (= 3.0.10)
71
- activesupport (= 3.0.10)
67
+ rails (3.0.11)
68
+ actionmailer (= 3.0.11)
69
+ actionpack (= 3.0.11)
70
+ activerecord (= 3.0.11)
71
+ activeresource (= 3.0.11)
72
+ activesupport (= 3.0.11)
72
73
  bundler (~> 1.0)
73
- railties (= 3.0.10)
74
- railties (3.0.10)
75
- actionpack (= 3.0.10)
76
- activesupport (= 3.0.10)
74
+ railties (= 3.0.11)
75
+ railties (3.0.11)
76
+ actionpack (= 3.0.11)
77
+ activesupport (= 3.0.11)
77
78
  rake (>= 0.8.7)
78
79
  rdoc (~> 3.4)
79
80
  thor (~> 0.14.4)
80
81
  rake (0.9.2.2)
81
- rdoc (3.11)
82
+ rdoc (3.12)
82
83
  json (~> 1.4)
83
84
  rspec (2.7.0)
84
85
  rspec-core (~> 2.7.0)
@@ -114,7 +115,7 @@ PLATFORMS
114
115
 
115
116
  DEPENDENCIES
116
117
  appraisal
117
- rails (= 3.0.10)
118
+ rails (= 3.0.11)
118
119
  rspec-rails
119
120
  savon
120
121
  tzinfo
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
- gem "rails", "3.1.0"
5
+ gem "rails", "3.1.3"
6
6
 
7
7
  gemspec :path=>"../"
@@ -1,39 +1,39 @@
1
1
  PATH
2
- remote: /Users/lovchy/Sites/wash_out
2
+ remote: /home/whitequark/wash_out
3
3
  specs:
4
- wash_out (0.1)
4
+ wash_out (0.2.1)
5
+ nori
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
8
9
  specs:
9
- actionmailer (3.1.0)
10
- actionpack (= 3.1.0)
10
+ actionmailer (3.1.3)
11
+ actionpack (= 3.1.3)
11
12
  mail (~> 2.3.0)
12
- actionpack (3.1.0)
13
- activemodel (= 3.1.0)
14
- activesupport (= 3.1.0)
13
+ actionpack (3.1.3)
14
+ activemodel (= 3.1.3)
15
+ activesupport (= 3.1.3)
15
16
  builder (~> 3.0.0)
16
17
  erubis (~> 2.7.0)
17
18
  i18n (~> 0.6)
18
- rack (~> 1.3.2)
19
- rack-cache (~> 1.0.3)
19
+ rack (~> 1.3.5)
20
+ rack-cache (~> 1.1)
20
21
  rack-mount (~> 0.8.2)
21
22
  rack-test (~> 0.6.1)
22
- sprockets (~> 2.0.0)
23
- activemodel (3.1.0)
24
- activesupport (= 3.1.0)
25
- bcrypt-ruby (~> 3.0.0)
23
+ sprockets (~> 2.0.3)
24
+ activemodel (3.1.3)
25
+ activesupport (= 3.1.3)
26
26
  builder (~> 3.0.0)
27
27
  i18n (~> 0.6)
28
- activerecord (3.1.0)
29
- activemodel (= 3.1.0)
30
- activesupport (= 3.1.0)
28
+ activerecord (3.1.3)
29
+ activemodel (= 3.1.3)
30
+ activesupport (= 3.1.3)
31
31
  arel (~> 2.2.1)
32
32
  tzinfo (~> 0.3.29)
33
- activeresource (3.1.0)
34
- activemodel (= 3.1.0)
35
- activesupport (= 3.1.0)
36
- activesupport (3.1.0)
33
+ activeresource (3.1.3)
34
+ activemodel (= 3.1.3)
35
+ activesupport (= 3.1.3)
36
+ activesupport (3.1.3)
37
37
  multi_json (~> 1.0)
38
38
  akami (1.0.0)
39
39
  gyoku (>= 0.4.0)
@@ -41,7 +41,6 @@ GEM
41
41
  bundler
42
42
  rake
43
43
  arel (2.2.1)
44
- bcrypt-ruby (3.0.1)
45
44
  builder (3.0.0)
46
45
  diff-lcs (1.1.3)
47
46
  erubis (2.7.0)
@@ -51,18 +50,18 @@ GEM
51
50
  httpi (0.9.5)
52
51
  rack
53
52
  i18n (0.6.0)
54
- json (1.6.1)
53
+ json (1.6.3)
55
54
  mail (2.3.0)
56
55
  i18n (>= 0.4.0)
57
56
  mime-types (~> 1.16)
58
57
  treetop (~> 1.4.8)
59
58
  mime-types (1.17.2)
60
- multi_json (1.0.3)
59
+ multi_json (1.0.4)
61
60
  nokogiri (1.5.0)
62
61
  nori (1.0.2)
63
62
  polyglot (0.3.3)
64
63
  rack (1.3.5)
65
- rack-cache (1.0.3)
64
+ rack-cache (1.1)
66
65
  rack (>= 0.4)
67
66
  rack-mount (0.8.3)
68
67
  rack (>= 1.0.0)
@@ -70,23 +69,23 @@ GEM
70
69
  rack
71
70
  rack-test (0.6.1)
72
71
  rack (>= 1.0)
73
- rails (3.1.0)
74
- actionmailer (= 3.1.0)
75
- actionpack (= 3.1.0)
76
- activerecord (= 3.1.0)
77
- activeresource (= 3.1.0)
78
- activesupport (= 3.1.0)
72
+ rails (3.1.3)
73
+ actionmailer (= 3.1.3)
74
+ actionpack (= 3.1.3)
75
+ activerecord (= 3.1.3)
76
+ activeresource (= 3.1.3)
77
+ activesupport (= 3.1.3)
79
78
  bundler (~> 1.0)
80
- railties (= 3.1.0)
81
- railties (3.1.0)
82
- actionpack (= 3.1.0)
83
- activesupport (= 3.1.0)
79
+ railties (= 3.1.3)
80
+ railties (3.1.3)
81
+ actionpack (= 3.1.3)
82
+ activesupport (= 3.1.3)
84
83
  rack-ssl (~> 1.3.2)
85
84
  rake (>= 0.8.7)
86
85
  rdoc (~> 3.4)
87
86
  thor (~> 0.14.6)
88
87
  rake (0.9.2.2)
89
- rdoc (3.11)
88
+ rdoc (3.12)
90
89
  json (~> 1.4)
91
90
  rspec (2.7.0)
92
91
  rspec-core (~> 2.7.0)
@@ -127,7 +126,7 @@ PLATFORMS
127
126
 
128
127
  DEPENDENCIES
129
128
  appraisal
130
- rails (= 3.1.0)
129
+ rails (= 3.1.3)
131
130
  rspec-rails
132
131
  savon
133
132
  tzinfo
data/lib/wash_out.rb CHANGED
@@ -2,13 +2,14 @@ require 'wash_out/engine'
2
2
  require 'wash_out/param'
3
3
  require 'wash_out/dispatcher'
4
4
  require 'wash_out/soap'
5
+ require 'wash_out/router'
5
6
 
6
7
  module ActionDispatch::Routing
7
8
  class Mapper
8
9
  # Adds the routes for a SOAP endpoint at +controller+.
9
- def wash_out(controller)
10
- match "#{controller.to_s}/wsdl" => "#{controller.to_s}#_wsdl"
11
- match "#{controller.to_s}/action" => "#{controller.to_s}#_action", :defaults => { :format => 'soap' }
10
+ def wash_out(controller_name, options={})
11
+ match "#{controller_name}/wsdl" => "#{controller_name}#_generate_wsdl", :via => :get
12
+ match "#{controller_name}/action" => WashOut::Router.new(controller_name), :defaults => { :action => '_action' }
12
13
  end
13
14
  end
14
15
  end
@@ -9,42 +9,40 @@ module WashOut
9
9
  # response.
10
10
  class SOAPError < Exception; end
11
11
 
12
- # This action generates the WSDL for defined SOAP methods.
13
- def _wsdl
14
- @map = self.class.soap_actions
15
- @namespace = 'urn:WashOut'
16
- @name = controller_path.gsub('/', '_')
17
-
18
- render :template => 'wash_with_soap/wsdl'
19
- end
20
-
21
- # This action maps the SOAP action to a controller method defined with
22
- # +soap_action+.
23
- def _action
24
- map = self.class.soap_actions
25
- method = request.env['HTTP_SOAPACTION'].gsub(/^\"(.*)\"$/, '\1')
26
- @_current = map[method.force_encoding('UTF-8')]
27
-
28
- raise SOAPError, "Method #{method} does not exists" unless @_current
12
+ # This filter parses the SOAP request and puts it into +params+ array.
13
+ def _parse_soap_parameters
14
+ soap_action = request.env['wash_out.soap_action']
15
+ action_spec = self.class.soap_actions[soap_action]
29
16
 
30
17
  params = Nori.parse(request.body)
31
- xml_data = params[:envelope][:body][method.downcase.to_sym]
18
+ xml_data = params[:envelope][:body][soap_action.underscore.to_sym]
32
19
 
33
20
  @_params = HashWithIndifferentAccess.new
34
21
  (xml_data || {}).map do |opt, value|
35
- param = @_current[:in].find { |param| param.name.underscore.to_sym == opt }
22
+ param = action_spec[:in].find { |param| param.name.underscore.to_sym == opt }
36
23
  raise SOAPError, "unknown parameter #{opt}" unless param
37
24
 
38
25
  @_params[param.name] = param.load(value)
39
26
  end
27
+ end
40
28
 
41
- send(@_current[:to])
29
+ # This action generates the WSDL for defined SOAP methods.
30
+ def _generate_wsdl
31
+ @map = self.class.soap_actions
32
+ @namespace = 'urn:WashOut'
33
+ @name = controller_path.gsub('/', '_')
34
+
35
+ render :template => 'wash_with_soap/wsdl'
42
36
  end
43
37
 
38
+ # Render a SOAP response.
44
39
  def _render_soap(result, options)
40
+ soap_action = request.env['wash_out.soap_action']
41
+ action_spec = self.class.soap_actions[soap_action]
42
+
45
43
  result = { 'value' => result } unless result.is_a? Hash
46
44
  result = HashWithIndifferentAccess.new(result)
47
- result = Hash[*@_current[:out].map do |param|
45
+ result = Hash[*action_spec[:out].map do |param|
48
46
  [param, param.store(result[param.name])]
49
47
  end.flatten]
50
48
 
@@ -52,6 +50,11 @@ module WashOut
52
50
  :locals => { :result => result }
53
51
  end
54
52
 
53
+ # This action is a fallback for all undefined SOAP actions.
54
+ def _invalid_action
55
+ render_soap_error("Cannot find SOAP action mapping for #{request.env['wash_out.soap_action']}")
56
+ end
57
+
55
58
  # Render a SOAP error response.
56
59
  #
57
60
  # Rails do not support sequental rescue_from handling, that is, rescuing an
@@ -65,6 +68,8 @@ module WashOut
65
68
 
66
69
  def self.included(controller)
67
70
  controller.send :rescue_from, SOAPError, :with => :_render_soap_exception
71
+ controller.send :helper, :wash_out
72
+ controller.send :before_filter, :_parse_soap_parameters, :except => [ :_generate_wsdl, :_invalid_action ]
68
73
  end
69
74
 
70
75
  def _render_soap_exception(error)
@@ -35,7 +35,7 @@ module WashOut
35
35
  when 'string'; data.to_s
36
36
  when 'integer'; data.to_i
37
37
  when 'double'; data.to_f
38
- when 'boolean'; data == 'true' # Is this bad?
38
+ when 'boolean'; data # Nori handles that for us
39
39
  else raise RuntimeError, "Invalid WashOut simple type: #{type}"
40
40
  end
41
41
  end
@@ -0,0 +1,28 @@
1
+ module WashOut
2
+ # This class is a Rack middleware used to route SOAP requests to a proper
3
+ # action of a given SOAP controller.
4
+ class Router
5
+ def initialize(controller_name)
6
+ @controller_name = "#{controller_name.to_s}_controller".camelize
7
+ end
8
+
9
+ def call(env)
10
+ controller = @controller_name.constantize
11
+
12
+ soap_action = env['HTTP_SOAPACTION']
13
+ soap_action.force_encoding('UTF-8')
14
+ soap_action.gsub!(/^\"(.*)\"$/, '\1')
15
+
16
+ env['wash_out.soap_action'] = soap_action
17
+
18
+ action_spec = controller.soap_actions[soap_action]
19
+ if action_spec
20
+ action = action_spec[:to]
21
+ else
22
+ action = '_invalid_action'
23
+ end
24
+
25
+ controller.action(action).call(env)
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module WashOut
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -20,6 +20,8 @@ RSpec.configure do |config|
20
20
  config.mock_with :rspec
21
21
  end
22
22
 
23
+ require 'savon'
24
+
23
25
  Savon.configure do |config|
24
26
  config.log = false # disable logging
25
27
  end
@@ -27,12 +29,23 @@ end
27
29
  HTTPI.logger = Logger.new(open("/dev/null", 'w'))
28
30
  HTTPI.adapter = :rack
29
31
 
32
+ HTTPI::Adapters::Rack.mount 'app', Dummy::Application
33
+
30
34
  Dummy::Application.routes.draw do
31
35
  wash_out :api
32
36
  end
33
37
 
34
38
  def savon_instance
35
39
  Savon::Client.new do
36
- wsdl.document = 'http://dummy/api/wsdl'
40
+ wsdl.document = 'http://app/api/wsdl'
37
41
  end
38
42
  end
43
+
44
+ def mock_controller(&block)
45
+ Object.send :remove_const, :ApiController if defined?(ApiController)
46
+ Object.send :const_set, :ApiController, Class.new(ApplicationController) {
47
+ include WashOut::SOAP
48
+
49
+ class_exec &block if block
50
+ }
51
+ end
@@ -3,7 +3,19 @@ require 'httpi/response'
3
3
 
4
4
  module HTTPI
5
5
  module Adapters
6
+ # This is an adapter for testing the Rack applications with HTTPI-capable
7
+ # clients.
6
8
  class Rack
9
+ class << self
10
+ attr_accessor :mounted_apps
11
+ end
12
+
13
+ self.mounted_apps = {}
14
+
15
+ def self.mount(host, application)
16
+ self.mounted_apps[host] = application
17
+ end
18
+
7
19
  def initialize(request=nil)
8
20
  end
9
21
 
@@ -11,16 +23,16 @@ module HTTPI
11
23
  if %w{get post head put delete}.include?(method.to_s)
12
24
  request, = args
13
25
 
14
- action = ('_' + request.url.path.split('/').last).to_sym
15
- app = $controller.action(action)
16
- app = ActionDispatch::ParamsParser.new(app)
26
+ app = self.class.mounted_apps[request.url.host]
17
27
  mock_req = ::Rack::MockRequest.new(app)
18
28
 
19
29
  env = {}
20
- env['HTTP_X_POST_DATA_FORMAT'] = 'xml'
21
- env['HTTP_SOAPACTION'] = request.headers['SOAPAction'] if request.headers.include? 'SOAPAction'
30
+ request.headers.each do |header, value|
31
+ env["HTTP_#{header.gsub('-', '_').upcase}"] = value
32
+ end
33
+
22
34
  mock_resp = mock_req.request(method.to_s.upcase, request.url.to_s,
23
- { :fatal => true, :lint => true, :input => request.body.to_s }.merge(env))
35
+ { :fatal => true, :input => request.body.to_s }.merge(env))
24
36
 
25
37
  HTTPI::Response.new(mock_resp.status, mock_resp.headers, mock_resp.body)
26
38
  else
@@ -8,36 +8,40 @@ describe WashOut do
8
8
  end
9
9
 
10
10
  it "should allow to include SOAP module" do
11
- mock_controller do
12
- # nothing
13
- end.should_not raise_exception
11
+ lambda {
12
+ mock_controller do
13
+ # nothing
14
+ end
15
+ }.should_not raise_exception
14
16
  end
15
17
 
16
18
  it "should allow definition of a simple action" do
17
- mock_controller do
18
- soap_action "answer", :args => [], :return => :int
19
- end.should_not raise_exception
19
+ lambda {
20
+ mock_controller do
21
+ soap_action "answer", :args => [], :return => :int
22
+ end
23
+ }.should_not raise_exception
20
24
  end
21
25
 
22
26
  it "should answer to request without parameters" do
23
27
  mock_controller do
24
28
  soap_action "answer", :args => [], :return => :int
25
29
  def answer
26
- render :soap => 42
30
+ render :soap => "42"
27
31
  end
28
- end.use!
32
+ end
29
33
 
30
34
  client = savon_instance
31
- client.request(:answer).to_hash[:value].should == 42
35
+ client.request(:answer).to_hash[:value].should == "42"
32
36
  end
33
37
 
34
38
  it "should answer to request with one parameter" do
35
39
  mock_controller do
36
- soap_action "check_answer", :args => :integer, :return => :boolean
40
+ soap_action "checkAnswer", :args => :integer, :return => :boolean, :to => 'check_answer'
37
41
  def check_answer
38
42
  render :soap => (params[:value] == 42)
39
43
  end
40
- end.use!
44
+ end
41
45
 
42
46
  client = savon_instance
43
47
  client.request(:check_answer) do
@@ -54,7 +58,7 @@ describe WashOut do
54
58
  def funky
55
59
  render :soap => ((params[:a] * 10).to_s + params[:b])
56
60
  end
57
- end.use!
61
+ end
58
62
 
59
63
  client = savon_instance
60
64
  client.request(:funky) do
@@ -69,7 +73,7 @@ describe WashOut do
69
73
  def answer
70
74
  render :soap => "forty two"
71
75
  end
72
- end.use!
76
+ end
73
77
 
74
78
  client = savon_instance
75
79
  client.request('AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything').to_hash[:value].should == "forty two"
@@ -83,7 +87,7 @@ describe WashOut do
83
87
 
84
88
  render :soap => nil
85
89
  end
86
- end.use!
90
+ end
87
91
 
88
92
  client = savon_instance
89
93
  lambda {
@@ -99,7 +103,7 @@ describe WashOut do
99
103
  end
100
104
 
101
105
  it "should report a SOAP error if method does not exists" do
102
- mock_controller{}.use!
106
+ mock_controller
103
107
 
104
108
  client = savon_instance
105
109
  lambda {
@@ -113,7 +117,7 @@ describe WashOut do
113
117
  def error
114
118
  render_soap_error "a message"
115
119
  end
116
- end.use!
120
+ end
117
121
 
118
122
  client = savon_instance
119
123
  lambda {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wash_out
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-12-09 00:00:00.000000000 Z
13
+ date: 2011-12-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nori
17
- requirement: &70328753506960 !ruby/object:Gem::Requirement
17
+ requirement: &70120807486540 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70328753506960
25
+ version_requirements: *70120807486540
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec-rails
28
- requirement: &70328753506480 !ruby/object:Gem::Requirement
28
+ requirement: &70120807486020 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70328753506480
36
+ version_requirements: *70120807486020
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: appraisal
39
- requirement: &70328753506040 !ruby/object:Gem::Requirement
39
+ requirement: &70120807485520 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70328753506040
47
+ version_requirements: *70120807485520
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: tzinfo
50
- requirement: &70328753505480 !ruby/object:Gem::Requirement
50
+ requirement: &70120807484900 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70328753505480
58
+ version_requirements: *70120807484900
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: savon
61
- requirement: &70328753504960 !ruby/object:Gem::Requirement
61
+ requirement: &70120807484020 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70328753504960
69
+ version_requirements: *70120807484020
70
70
  description: Dead simple Rails 3 SOAP server library
71
71
  email: boris@roundlake.ru
72
72
  executables: []
@@ -83,15 +83,16 @@ files:
83
83
  - app/views/wash_with_soap/error.builder
84
84
  - app/views/wash_with_soap/response.builder
85
85
  - app/views/wash_with_soap/wsdl.builder
86
- - gemfiles/rails-3.0.10.gemfile
87
- - gemfiles/rails-3.0.10.gemfile.lock
88
- - gemfiles/rails-3.1.0.gemfile
89
- - gemfiles/rails-3.1.0.gemfile.lock
86
+ - gemfiles/rails-3.0.11.gemfile
87
+ - gemfiles/rails-3.0.11.gemfile.lock
88
+ - gemfiles/rails-3.1.3.gemfile
89
+ - gemfiles/rails-3.1.3.gemfile.lock
90
90
  - init.rb
91
91
  - lib/wash_out.rb
92
92
  - lib/wash_out/dispatcher.rb
93
93
  - lib/wash_out/engine.rb
94
94
  - lib/wash_out/param.rb
95
+ - lib/wash_out/router.rb
95
96
  - lib/wash_out/soap.rb
96
97
  - lib/wash_out/version.rb
97
98
  - spec/dummy/Rakefile
@@ -119,7 +120,6 @@ files:
119
120
  - spec/dummy/script/rails
120
121
  - spec/spec_helper.rb
121
122
  - spec/support/httpi-rack.rb
122
- - spec/support/mock_controller.rb
123
123
  - spec/wash_out_spec.rb
124
124
  - wash_out.gemspec
125
125
  homepage: http://github.com/roundlake/wash_out
@@ -1,34 +0,0 @@
1
- require 'savon'
2
-
3
- def mock_controller(&block)
4
- # You are not expected to understand this.
5
- class <<(mock = lambda do
6
- Class.new(ApplicationController) do
7
- include WashOut::SOAP
8
-
9
- class_exec &block
10
-
11
- def self.controller_path
12
- "api"
13
- end
14
-
15
- def default_url_options
16
- { :controller => 'api' }
17
- end
18
- end
19
- end)
20
- def invoke
21
- @self ||= call
22
- end
23
-
24
- def method_missing(method, *args)
25
- invoke.send method, *args
26
- end
27
-
28
- def use!
29
- $controller = invoke
30
- end
31
- end
32
-
33
- mock
34
- end