savon 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,47 +0,0 @@
1
- require "wasabi"
2
- require "httpi/request"
3
-
4
- module Savon
5
- module Wasabi
6
-
7
- # = Savon::Wasabi::Document
8
- #
9
- # Extends the document handling of the <tt>Wasabi::Document</tt> by
10
- # adding support for remote and local WSDL documents.
11
- class Document < ::Wasabi::Document
12
-
13
- # Hooks into Wasabi and extends its document handling.
14
- def xml
15
- @xml ||= document.kind_of?(String) ? resolve_document : document
16
- end
17
-
18
- # Sets the <tt>HTTPI::Request</tt> for remote WSDL documents.
19
- attr_writer :request
20
-
21
- private
22
-
23
- # Sets up and returns the <tt>HTTPI::Request</tt>.
24
- def request
25
- @request ||= HTTPI::Request.new
26
- @request.url = document
27
- @request
28
- end
29
-
30
- # Resolves and returns the raw WSDL document.
31
- def resolve_document
32
- case document
33
- when /^http[s]?:/ then
34
- response = HTTPI.get(request)
35
- if response.error?
36
- raise Savon::HTTP::Error.new(response)
37
- else
38
- response.body
39
- end
40
- when /^</ then document
41
- else File.read(document)
42
- end
43
- end
44
-
45
- end
46
- end
47
- end
@@ -1,58 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Savon::Wasabi::Document do
4
-
5
- context "with a remote document" do
6
- before do
7
- response = HTTPI::Response.new 200, {}, Fixture.wsdl(:authentication)
8
- HTTPI.stubs(:get).returns(response)
9
- end
10
-
11
- it "should resolve via HTTP" do
12
- wsdl = Savon::Wasabi::Document.new("http://example.com?wsdl")
13
- wsdl.xml.should == Fixture.wsdl(:authentication)
14
- end
15
-
16
- it "should resolve via HTTPS" do
17
- wsdl = Savon::Wasabi::Document.new("https://example.com?wsdl")
18
- wsdl.xml.should == Fixture.wsdl(:authentication)
19
- end
20
-
21
- end
22
-
23
- context "with an inaccessible remote document" do
24
- before do
25
- response = HTTPI::Response.new 401, {}, Fixture.wsdl(:authentication)
26
- HTTPI.stubs(:get).returns(response)
27
- end
28
-
29
- it "should raise an error when authentication fails" do
30
- wsdl = Savon::Wasabi::Document.new("http://example.com?wsdl")
31
- expect { wsdl.xml }.to raise_error(Savon::HTTP::Error)
32
- end
33
- end
34
-
35
- context "with a local document" do
36
- before do
37
- HTTPI.expects(:get).never
38
- end
39
-
40
- it "should read the file" do
41
- wsdl = Savon::Wasabi::Document.new("spec/fixtures/wsdl/authentication.xml")
42
- wsdl.xml.should == Fixture.wsdl(:authentication)
43
- end
44
- end
45
-
46
- context "with raw XML" do
47
- before do
48
- HTTPI.expects(:get).never
49
- File.expects(:read).never
50
- end
51
-
52
- it "should use the raw XML" do
53
- wsdl = Savon::Wasabi::Document.new Fixture.wsdl(:authentication)
54
- wsdl.xml.should == Fixture.wsdl(:authentication)
55
- end
56
- end
57
-
58
- end