wash_out 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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