savon 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ ## 0.8.5 (2011-01-28)
2
+
3
+ * Fix for [issue #146](https://github.com/rubiii/savon/issues/146) ([98655c](https://github.com/rubiii/savon/commit/98655c)).
4
+
5
+ * Fix for [issue #147](https://github.com/rubiii/savon/issues/147) ([252670](https://github.com/rubiii/savon/commit/252670)).
6
+
1
7
  ## 0.8.4 (2011-01-26)
2
8
 
3
9
  * Fix for issues [issue #130](https://github.com/rubiii/savon/issues/130) and [#134](https://github.com/rubiii/savon/issues/134)
@@ -19,7 +19,7 @@ module Savon
19
19
 
20
20
  # Returns whether a SOAP fault is present.
21
21
  def present?
22
- @present ||= http.body[0,1000] =~ /<(.+:)?Body>(\s*)<(.+:)?Fault>/
22
+ @present ||= http.code == 500 && http.body.include?("Fault>") && (soap1_fault? || soap2_fault?)
23
23
  end
24
24
 
25
25
  # Returns the SOAP fault message.
@@ -35,6 +35,17 @@ module Savon
35
35
 
36
36
  private
37
37
 
38
+ # Returns whether the response contains a SOAP 1.1 fault.
39
+ def soap1_fault?
40
+ http.body.include?("faultcode>") && http.body.include?("faultstring>")
41
+ end
42
+
43
+ # Returns whether the response contains a SOAP 1.2 fault.
44
+ def soap2_fault?
45
+ http.body.include?("Code>") && http.body.include?("Reason>")
46
+ end
47
+
48
+ # Returns the SOAP fault message by version.
38
49
  def message_by_version(fault)
39
50
  if fault[:faultcode]
40
51
  "(#{fault[:faultcode]}) #{fault[:faultstring]}"
@@ -135,7 +135,7 @@ module Savon
135
135
  def to_xml
136
136
  @xml ||= tag(builder, :Envelope, complete_namespaces) do |xml|
137
137
  tag(xml, :Header) { xml << header_for_xml } unless header_for_xml.empty?
138
- tag(xml, :Body) { xml.tag!(*input) { xml << body_to_xml } }
138
+ input.nil? ? tag(xml, :Body) : tag(xml, :Body) { xml.tag!(*input) { xml << body_to_xml } }
139
139
  end
140
140
  end
141
141
 
@@ -1,5 +1,5 @@
1
1
  module Savon
2
2
 
3
- Version = "0.8.4"
3
+ Version = "0.8.5"
4
4
 
5
5
  end
@@ -32,6 +32,11 @@ describe Savon::SOAP::Fault do
32
32
  it "should return false unless the HTTP response contains a SOAP fault" do
33
33
  no_fault.should_not be_present
34
34
  end
35
+
36
+ it "should return false if the HTTP response code is not 500" do
37
+ fault = Savon::SOAP::Fault.new new_response(:code => 200, :body => Fixture.response(:soap_fault))
38
+ fault.should_not be_present
39
+ end
35
40
  end
36
41
 
37
42
  [:message, :to_s].each do |method|
@@ -80,7 +85,7 @@ describe Savon::SOAP::Fault do
80
85
  end
81
86
 
82
87
  def new_response(options = {})
83
- defaults = { :code => 200, :headers => {}, :body => Fixture.response(:authentication) }
88
+ defaults = { :code => 500, :headers => {}, :body => Fixture.response(:authentication) }
84
89
  response = defaults.merge options
85
90
 
86
91
  HTTPI::Response.new response[:code], response[:headers], response[:body]
@@ -159,12 +159,12 @@ describe Savon::SOAP::Response do
159
159
  def soap_response(options = {})
160
160
  defaults = { :code => 200, :headers => {}, :body => Fixture.response(:authentication) }
161
161
  response = defaults.merge options
162
-
162
+
163
163
  Savon::SOAP::Response.new HTTPI::Response.new(response[:code], response[:headers], response[:body])
164
164
  end
165
165
 
166
166
  def soap_fault_response
167
- soap_response :body => Fixture.response(:soap_fault)
167
+ soap_response :code => 500, :body => Fixture.response(:soap_fault)
168
168
  end
169
169
 
170
170
  def http_error_response
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: savon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 53
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 4
10
- version: 0.8.4
9
+ - 5
10
+ version: 0.8.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Harrington
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-26 00:00:00 +01:00
18
+ date: 2011-01-28 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency