savon 0.5.2 → 0.5.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.2
1
+ 0.5.3
data/lib/savon/client.rb CHANGED
@@ -66,6 +66,7 @@ module Savon
66
66
  def method_missing(method, *args, &block) #:doc:
67
67
  soap_action = @wsdl.mapped_soap_actions[method]
68
68
  super unless soap_action
69
+ #soap_action = "User.GetApiKey"
69
70
 
70
71
  soap_body, options = args[0] || {}, args[1] || {}
71
72
  validate_arguments! soap_body, options, block
@@ -14,43 +14,43 @@ module Savon
14
14
  true
15
15
  end
16
16
 
17
+ # Raises an ArgumentError for a given +argument+. Also accepts the invalid
18
+ # +value+ and adds it to the error message.
19
+ def invalid!(argument, value = nil)
20
+ message = "Invalid argument '#{argument}'"
21
+ message << ": #{value}" if value
22
+ raise ArgumentError, message
23
+ end
24
+
17
25
  private
18
26
 
19
27
  # Validates a given +endpoint+.
20
28
  def validate_endpoint(endpoint)
21
- invalid :endpoint, endpoint unless /^(http|https):\/\// === endpoint
29
+ invalid! :endpoint, endpoint unless /^(http|https):\/\// === endpoint
22
30
  end
23
31
 
24
32
  # Validates a given +soap_version+.
25
33
  def validate_soap_version(soap_version)
26
- invalid :soap_version, soap_version unless SOAPVersions.include? soap_version
34
+ invalid! :soap_version, soap_version unless SOAPVersions.include? soap_version
27
35
  end
28
36
 
29
37
  # Validates a given +soap_body+.
30
38
  def validate_soap_body(soap_body)
31
- invalid :soap_body, soap_body unless
39
+ invalid! :soap_body, soap_body unless
32
40
  soap_body.kind_of?(Hash) || soap_body.respond_to?(:to_s)
33
41
  end
34
42
 
35
43
  # Validates a given +response_process+.
36
44
  def validate_response_process(response_process)
37
- invalid :response_process, response_process unless
45
+ invalid! :response_process, response_process unless
38
46
  response_process.respond_to? :call
39
47
  end
40
48
 
41
49
  # Validates a given Hash of +wsse_credentials+.
42
50
  def validate_wsse_credentials(wsse)
43
- invalid :wsse_credentials unless wsse[:username] && wsse[:password]
44
- invalid :wsse_username, wsse[:username] unless wsse[:username].respond_to? :to_s
45
- invalid :wsse_password, wsse[:password] unless wsse[:password].respond_to? :to_s
46
- end
47
-
48
- # Raises an ArgumentError for a given +argument+. Also accepts the invalid
49
- # +value+ and adds it to the error message.
50
- def invalid(argument, value = nil)
51
- message = "Invalid argument '#{argument}'"
52
- message << ": #{value}" if value
53
- raise ArgumentError, message
51
+ invalid! :wsse_credentials unless wsse[:username] && wsse[:password]
52
+ invalid! :wsse_username, wsse[:username] unless wsse[:username].respond_to? :to_s
53
+ invalid! :wsse_password, wsse[:password] unless wsse[:password].respond_to? :to_s
54
54
  end
55
55
 
56
56
  end
data/spec/http_stubs.rb CHANGED
@@ -17,4 +17,9 @@ FakeWeb.register_uri :post, SpecHelper.soap_soapfault_endpoint, :body => UserFix
17
17
  # Register fake WSDL and SOAP request for a Savon::HTTPError.
18
18
  FakeWeb.register_uri :get, SpecHelper.httperror_endpoint, :body => UserFixture.user_wsdl
19
19
  FakeWeb.register_uri :post, SpecHelper.soap_httperror_endpoint, :body => "",
20
- :status => ["404", "Not Found"]
20
+ :status => ["404", "Not Found"]
21
+
22
+ # Register fake WSDL and SOAP request for an invalid endpoint.
23
+ FakeWeb.register_uri :get, SpecHelper.invalid_endpoint, :body => ""
24
+ FakeWeb.register_uri :post, SpecHelper.soap_invalid_endpoint, :body => "",
25
+ :status => ["404", "Not Found"]
@@ -19,6 +19,11 @@ describe Savon::WSDL do
19
19
  it "returns an Array containing all available SOAP actions" do
20
20
  @wsdl.soap_actions.should == UserFixture.soap_actions.keys
21
21
  end
22
+
23
+ it "raises an ArgumentError in case the WSDL seems to be invalid" do
24
+ wsdl = Savon::WSDL.new Savon::Request.new SpecHelper.invalid_endpoint
25
+ lambda { wsdl.soap_actions }.should raise_error ArgumentError
26
+ end
22
27
  end
23
28
 
24
29
  describe "mapped_soap_actions" do
@@ -33,4 +38,4 @@ describe Savon::WSDL do
33
38
  end
34
39
  end
35
40
 
36
- end
41
+ end
@@ -12,6 +12,9 @@ class SpecHelper
12
12
 
13
13
  @soap_httperror_endpoint = "http://httperror.example.com/UserService"
14
14
  @httperror_endpoint = @soap_httperror_endpoint + "?wsdl"
15
+
16
+ @soap_invalid_endpoint = "http://invalid.example.com/UserService"
17
+ @invalid_endpoint = @soap_invalid_endpoint + "?wsdl"
15
18
 
16
19
  @wsse_security_nodes = ["wsse:Security", "wsse:UsernameToken",
17
20
  "wsse:Username", "wsse:Password", "wsse:Nonce", "wsu:Created"]
@@ -22,6 +25,7 @@ class SpecHelper
22
25
  :soap_multiple_endpoint , :multiple_endpoint,
23
26
  :soap_soapfault_endpoint, :soapfault_endpoint,
24
27
  :soap_httperror_endpoint, :httperror_endpoint,
28
+ :soap_invalid_endpoint, :invalid_endpoint,
25
29
  :wsse_security_nodes
26
30
 
27
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: savon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Harrington