Skip to content

Commit 2385072

Browse files
authored
Update to be compatible with Faraday (#116)
1 parent d09b02b commit 2385072

File tree

7 files changed

+37
-44
lines changed

7 files changed

+37
-44
lines changed

lib/wasabi/resolver.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
require "httpi"
3+
require "faraday"
44

55
module Wasabi
66

@@ -22,7 +22,7 @@ def initialize(message, response=nil)
2222

2323
def initialize(document, request = nil, adapter = nil)
2424
@document = document
25-
@request = request || HTTPI::Request.new
25+
@request = request || Faraday.new
2626
@adapter = adapter
2727
end
2828

@@ -41,10 +41,10 @@ def resolve
4141
private
4242

4343
def load_from_remote
44-
request.url = document
45-
response = HTTPI.get(request, adapter)
44+
request.adapter *adapter if adapter
45+
response = request.get(document)
4646

47-
raise HTTPError.new("Error: #{response.code} for url #{request.url}", response) if response.error?
47+
raise HTTPError.new("Error: #{response.status} for url #{document}", response) unless response.success?
4848

4949
response.body
5050
end

lib/wasabi/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Wasabi
4-
VERSION = '4.0.0'
4+
VERSION = '5.0.0'
55
end

spec/support/adapter.rb

Lines changed: 0 additions & 20 deletions
This file was deleted.

spec/support/responses.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Responses
2+
class << self
3+
def mock_faraday(code, headers, body)
4+
env = Faraday::Env.from(status: code, response_headers: headers, response_body: body)
5+
Faraday::Response.new(env)
6+
end
7+
end
8+
end

spec/wasabi/document_spec.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
subject { Wasabi::Document.new fixture(:authentication).read }
88

99
it "accepts a URL" do
10-
expect(HTTPI).to receive(:get) { HTTPI::Response.new(200, {}, "wsdl") }
10+
path = 'http://example.com?wsdl'
11+
stubs = Faraday::Adapter::Test::Stubs.new
12+
stubs.get(path) do
13+
[200, {'Content-Type': 'application/xml'}, 'wsdl']
14+
end
1115

12-
document = Wasabi::Document.new("http://example.com?wsdl")
16+
document = Wasabi::Document.new(path, [:test, stubs])
1317
expect(document.xml).to eq("wsdl")
1418
end
1519

spec/wasabi/resolver_spec.rb

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@
66

77
describe "#resolve" do
88
it "resolves remote documents" do
9-
expect(HTTPI).to receive(:get) { HTTPI::Response.new(200, {}, "wsdl") }
9+
expect(Faraday::Connection).to receive(:new).and_return(
10+
connection = instance_double(Faraday::Connection, get: Responses.mock_faraday(200, {}, "wsdl"))
11+
)
1012
xml = Wasabi::Resolver.new("http://example.com?wsdl").resolve
1113
expect(xml).to eq("wsdl")
1214
end
1315

1416
it "resolves remote documents with custom adapter" do
15-
prev_logging = HTTPI.instance_variable_get(:@log)
16-
HTTPI.log = false # Don't pollute rspec output by request logging
17-
xml = Wasabi::Resolver.new("http://example.com?wsdl", nil, :fake_adapter_for_test).resolve
18-
expect(xml).to eq("wsdl_by_adapter")
19-
expect(FakeAdapterForTest.class_variable_get(:@@requests).size).to eq(1)
20-
expect(FakeAdapterForTest.class_variable_get(:@@requests).first.url).to eq(URI.parse("http://example.com?wsdl"))
21-
expect(FakeAdapterForTest.class_variable_get(:@@methods)).to eq([:get])
22-
HTTPI.log = prev_logging
17+
path = 'http://example.com?wsdl'
18+
stubs = Faraday::Adapter::Test::Stubs.new
19+
stubs.get(path) do
20+
[200, {'Content-Type': 'application/xml'}, 'wsdl']
21+
end
22+
xml = Wasabi::Resolver.new("http://example.com?wsdl", nil, [:test, stubs]).resolve
23+
expect(xml).to eq("wsdl")
2324
end
2425

2526
it "resolves local documents" do
@@ -38,19 +39,19 @@
3839
"content-type" => "text/html"
3940
}
4041
body = "<html><head><title>404 Not Found</title></head><body>Oops!</body></html>"
41-
failed_response = HTTPI::Response.new(code, headers, body)
42-
43-
expect(HTTPI).to receive(:get) { failed_response }
44-
42+
failed_response = Responses.mock_faraday(code, headers, body)
43+
expect(Faraday::Connection).to receive(:new).and_return(
44+
connection = instance_double(Faraday::Connection, get: failed_response)
45+
)
4546
url = "http://example.com?wsdl"
4647

4748
expect do
4849
Wasabi::Resolver.new(url).resolve
49-
end.to raise_error { |ex|
50+
end.to(raise_error{ |ex|
5051
expect(ex).to be_a(Wasabi::Resolver::HTTPError)
5152
expect(ex.message).to eq("Error: #{code} for url #{url}")
5253
expect(ex.response).to eq(failed_response)
53-
}
54+
})
5455
end
5556
end
5657

wasabi.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
1414

1515
s.license = 'MIT'
1616

17-
s.add_dependency "httpi", "~> 3.0"
17+
s.add_dependency "faraday", "~> 2.8"
1818
s.add_dependency "nokogiri", ">= 1.13.9"
1919
s.add_dependency "addressable"
2020

0 commit comments

Comments
 (0)