wasabi 3.6.1 → 3.7.0

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +7 -8
  4. data/lib/wasabi/parser.rb +3 -15
  5. data/lib/wasabi/version.rb +1 -1
  6. metadata +5 -137
  7. data/spec/fixtures/authentication.wsdl +0 -63
  8. data/spec/fixtures/brand.wsdl +0 -624
  9. data/spec/fixtures/economic.wsdl +0 -65660
  10. data/spec/fixtures/encoded_endpoint.wsdl +0 -52
  11. data/spec/fixtures/geotrust.wsdl +0 -156
  12. data/spec/fixtures/import_port_types.wsdl +0 -86
  13. data/spec/fixtures/inherited.wsdl +0 -46
  14. data/spec/fixtures/juniper.wsdl +0 -215
  15. data/spec/fixtures/lower_camel.wsdl +0 -52
  16. data/spec/fixtures/marketo.wsdl +0 -1630
  17. data/spec/fixtures/multiple_namespaces.wsdl +0 -61
  18. data/spec/fixtures/multiple_parts_in_message.wsdl +0 -66
  19. data/spec/fixtures/multiple_types.wsdl +0 -60
  20. data/spec/fixtures/namespaced_actions.wsdl +0 -307
  21. data/spec/fixtures/no_message_parts.wsdl +0 -85
  22. data/spec/fixtures/no_namespace.wsdl +0 -115
  23. data/spec/fixtures/savon295.wsdl +0 -52
  24. data/spec/fixtures/soap12.wsdl +0 -11
  25. data/spec/fixtures/symbolic_endpoint.wsdl +0 -190
  26. data/spec/fixtures/tradetracker.wsdl +0 -1330
  27. data/spec/fixtures/two_bindings.wsdl +0 -24
  28. data/spec/spec_helper.rb +0 -17
  29. data/spec/support/adapter.rb +0 -20
  30. data/spec/support/fixture.rb +0 -42
  31. data/spec/support/profiling.rb +0 -20
  32. data/spec/wasabi/core_ext/string_spec.rb +0 -39
  33. data/spec/wasabi/document/authentication_spec.rb +0 -39
  34. data/spec/wasabi/document/economic_spec.rb +0 -15
  35. data/spec/wasabi/document/encoded_endpoint_spec.rb +0 -16
  36. data/spec/wasabi/document/geotrust_spec.rb +0 -40
  37. data/spec/wasabi/document/inherited_spec.rb +0 -43
  38. data/spec/wasabi/document/multiple_namespaces_spec.rb +0 -57
  39. data/spec/wasabi/document/namespaced_actions_spec.rb +0 -41
  40. data/spec/wasabi/document/no_namespace_spec.rb +0 -41
  41. data/spec/wasabi/document/savon295_spec.rb +0 -20
  42. data/spec/wasabi/document/soap12_spec.rb +0 -16
  43. data/spec/wasabi/document/two_bindings_spec.rb +0 -31
  44. data/spec/wasabi/document_spec.rb +0 -60
  45. data/spec/wasabi/parser/get_servicename_spec.rb +0 -21
  46. data/spec/wasabi/parser/import_port_types_spec.rb +0 -24
  47. data/spec/wasabi/parser/juniper_spec.rb +0 -25
  48. data/spec/wasabi/parser/marketo_spec.rb +0 -19
  49. data/spec/wasabi/parser/multiple_namespaces_spec.rb +0 -42
  50. data/spec/wasabi/parser/multiple_parts_in_message_spec.rb +0 -33
  51. data/spec/wasabi/parser/no_message_parts_spec.rb +0 -34
  52. data/spec/wasabi/parser/no_namespace_spec.rb +0 -28
  53. data/spec/wasabi/parser/no_target_namespace_spec.rb +0 -38
  54. data/spec/wasabi/parser/softlayer_spec.rb +0 -20
  55. data/spec/wasabi/parser/symbolic_endpoint_spec.rb +0 -23
  56. data/spec/wasabi/parser/tradetracker_spec.rb +0 -19
  57. data/spec/wasabi/resolver_spec.rb +0 -57
  58. data/spec/wasabi/wasabi_spec.rb +0 -14
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Wasabi::Parser do
6
- context 'with: marketo.wsdl' do
7
- subject do
8
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
9
- parser.parse
10
- parser
11
- end
12
-
13
- let(:xml) { fixture(:marketo).read }
14
-
15
- it 'parses the operations' do
16
- expect(subject.operations[:get_lead][:input]).to eq('paramsGetLead')
17
- end
18
- end
19
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Parser do
6
- context "with: multiple_namespaces.wsdl" do
7
-
8
- subject do
9
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
10
- parser.parse
11
- parser
12
- end
13
-
14
- let(:xml) { fixture(:multiple_namespaces).read }
15
-
16
- it "lists the types" do
17
- expect(subject.types.keys.sort).to eq(["Article", "Save"])
18
- end
19
-
20
- it "records the namespace for each type" do
21
- expect(subject.types["Save"][:namespace]).to eq("http://example.com/actions")
22
- end
23
-
24
- it "records the fields under a type" do
25
- expect(subject.types["Save"].keys).to match_array(["article", :namespace, :order!])
26
- end
27
-
28
- it "records multiple fields when there are more than one" do
29
- expect(subject.types["Article"].keys).to match_array(["Title", "Author", :namespace, :order!])
30
- end
31
-
32
- it "records the type of a field" do
33
- expect(subject.types["Save"]["article"][:type]).to eq("article:Article")
34
- expect(subject.namespaces["article"]).to eq("http://example.com/article")
35
- end
36
-
37
- it "lists the order of the type elements" do
38
- expect(subject.types["Article"][:order!]).to eq(["Author", "Title"])
39
- end
40
-
41
- end
42
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Parser do
6
- context 'with: multiple_parts_in_message.wsdl' do
7
-
8
- subject do
9
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
10
- parser.parse
11
- parser
12
- end
13
-
14
- let(:xml) { fixture(:multiple_parts_in_message).read }
15
-
16
- context "with a parts attribute in soap:body element" do
17
- it 'uses the part specified in parts attribute' do
18
- request = subject.operations[:some_operation][:input]
19
-
20
- expect(request).to eq("SomeRequestBody")
21
- end
22
- end
23
-
24
- context "with no parts attribute in soap:body element" do
25
- it 'uses the first part element in message' do
26
- request = subject.operations[:other_operation][:input]
27
-
28
- expect(request).to eq("SomeRequest")
29
- end
30
- end
31
-
32
- end
33
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Wasabi::Parser do
6
- context 'with: no_message_parts.wsdl' do
7
-
8
- subject do
9
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
10
- parser.parse
11
- parser
12
- end
13
-
14
- let(:xml) { fixture(:no_message_parts).read }
15
-
16
- it 'falls back to using the message type in the port element' do
17
- # Operation's input has no part element in the message, so using the message type.
18
- expect(subject.operations[:save][:input]).to eq('Save')
19
-
20
- # Operation's output has part element in the message, so using part element's type.
21
- expect(subject.operations[:save][:output]).to eq('SaveResponse')
22
- end
23
-
24
- it 'falls back to using the namespace ID in the port element' do
25
- expect(subject.operations[:save][:namespace_identifier]).to eq('actions')
26
- end
27
-
28
- it 'gracefully handles port messages without a colon' do
29
- expect(subject.operations[:delete][:input]).to eq('Delete')
30
- expect(subject.operations[:delete][:output]).to eq('DeleteResponse')
31
- expect(subject.operations[:delete][:namespace_identifier]).to be_nil
32
- end
33
- end
34
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Parser do
6
- context "with: no_namespace.wsdl" do
7
-
8
- subject do
9
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
10
- parser.parse
11
- parser
12
- end
13
-
14
- let(:xml) { fixture(:no_namespace).read }
15
-
16
- it "lists the types" do
17
- expect(subject.types.keys.sort).to eq(["McContact", "McContactArray", "MpUser", "MpUserArray"])
18
- end
19
-
20
- it "ignores xsd:all" do
21
- keys = subject.types["MpUser"].keys
22
- expect(keys.size).to eq(2)
23
-
24
- expect(keys).to include(:namespace)
25
- expect(keys).to include(:order!)
26
- end
27
- end
28
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Parser do
6
- context "with a WSDL defining xs:schema without targetNamespace" do
7
-
8
- subject do
9
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
10
- parser.parse
11
- parser
12
- end
13
-
14
- let(:xml) do
15
- %Q{
16
- <definitions xmlns='http://schemas.xmlsoap.org/wsdl/'
17
- xmlns:xs='http://www.w3.org/2001/XMLSchema'
18
- targetNamespace='http://def.example.com'>
19
- <types>
20
- <xs:schema elementFormDefault='qualified'>
21
- <xs:element name='Save'>
22
- <xs:complexType></xs:complexType>
23
- </xs:element>
24
- </xs:schema>
25
- </types>
26
- </definitions>
27
- }
28
- end
29
-
30
- # Don't know if real WSDL files omit targetNamespace from xs:schema,
31
- # but I suppose we should do something reasonable if they do.
32
-
33
- it "defaults to the target namespace from xs:definitions" do
34
- expect(subject.types["Save"][:namespace]).to eq("http://def.example.com")
35
- end
36
-
37
- end
38
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Wasabi::Parser do
6
- context 'with: brand.wsdl' do
7
- subject do
8
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
9
- parser.parse
10
- parser
11
- end
12
-
13
- let(:xml) { fixture(:brand).read }
14
-
15
- it 'parses the operations' do
16
- expect(subject.operations[:create_object][:input]).to eq('createObject' => { 'templateObject' => ['tns', 'SoftLayer_Brand'] })
17
- expect(subject.operations[:create_customer_account][:input]).to eq('createCustomerAccount' => {'account' => ['tns', 'SoftLayer_Account'], 'bypassDuplicateAccountCheck' => ['xsd', 'boolean']})
18
- end
19
- end
20
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Parser do
6
- context "with: symbolic_endpoint.wsdl" do
7
- subject(:parser) { described_class.new Nokogiri::XML(xml) }
8
-
9
- let(:xml) { fixture(:symbolic_endpoint).read }
10
-
11
- before { parser.parse }
12
-
13
- it "allows symbolic endpoints" do
14
- expect(parser.endpoint).to be_nil
15
- end
16
-
17
- it "should position base class attributes before subclass attributes in :order! array" do
18
- type = parser.types["ROPtsLiesListe"]
19
- expect(type[:order!]).to eq(["messages", "returncode", "listenteil"])
20
- end
21
-
22
- end
23
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe Wasabi::Parser do
6
- context 'with: tradetracker.wsdl' do
7
- subject do
8
- parser = Wasabi::Parser.new Nokogiri::XML(xml)
9
- parser.parse
10
- parser
11
- end
12
-
13
- let(:xml) { fixture(:tradetracker).read }
14
-
15
- it 'parses the operations' do
16
- expect(subject.operations[:get_feeds][:input]).to eq('getFeeds' => {"affiliateSiteID"=>["xsd", "nonNegativeInteger"], "options"=>["tns", "FeedFilter"]})
17
- end
18
- end
19
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi::Resolver do
6
-
7
- describe "#resolve" do
8
- it "resolves remote documents" do
9
- expect(HTTPI).to receive(:get) { HTTPI::Response.new(200, {}, "wsdl") }
10
- xml = Wasabi::Resolver.new("http://example.com?wsdl").resolve
11
- expect(xml).to eq("wsdl")
12
- end
13
-
14
- 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
23
- end
24
-
25
- it "resolves local documents" do
26
- xml = Wasabi::Resolver.new(fixture(:authentication).path).resolve
27
- expect(xml).to eq(fixture(:authentication).read)
28
- end
29
-
30
- it "simply returns raw XML" do
31
- xml = Wasabi::Resolver.new("<xml/>").resolve
32
- expect(xml).to eq("<xml/>")
33
- end
34
-
35
- it "raises HTTPError when #load_from_remote gets a response error" do
36
- code = 404
37
- headers = {
38
- "content-type" => "text/html"
39
- }
40
- 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
-
45
- url = "http://example.com?wsdl"
46
-
47
- expect do
48
- Wasabi::Resolver.new(url).resolve
49
- end.to raise_error { |ex|
50
- expect(ex).to be_a(Wasabi::Resolver::HTTPError)
51
- expect(ex.message).to eq("Error: #{code} for url #{url}")
52
- expect(ex.response).to eq(failed_response)
53
- }
54
- end
55
- end
56
-
57
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Wasabi do
6
-
7
- describe ".document" do
8
- it "should return a new Wasabi::Document" do
9
- document = Wasabi.document fixture(:authentication).read
10
- expect(document).to be_a(Wasabi::Document)
11
- end
12
- end
13
-
14
- end