wasabi 3.3.0 → 3.3.1

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -1
  3. data/CHANGELOG.md +4 -0
  4. data/lib/wasabi/parser.rb +67 -18
  5. data/lib/wasabi/version.rb +1 -1
  6. data/spec/fixtures/savon562.wsdl +13882 -0
  7. data/spec/wasabi/core_ext/string_spec.rb +9 -9
  8. data/spec/wasabi/document/authentication_spec.rb +19 -5
  9. data/spec/wasabi/document/encoded_endpoint_spec.rb +4 -1
  10. data/spec/wasabi/document/geotrust_spec.rb +19 -5
  11. data/spec/wasabi/document/inherited_spec.rb +10 -7
  12. data/spec/wasabi/document/multiple_namespaces_spec.rb +27 -7
  13. data/spec/wasabi/document/namespaced_actions_spec.rb +19 -5
  14. data/spec/wasabi/document/no_namespace_spec.rb +19 -5
  15. data/spec/wasabi/document/savon295_spec.rb +4 -1
  16. data/spec/wasabi/document/soap12_spec.rb +4 -1
  17. data/spec/wasabi/document/two_bindings_spec.rb +11 -3
  18. data/spec/wasabi/document_spec.rb +6 -6
  19. data/spec/wasabi/parser/get_servicename_spec.rb +1 -1
  20. data/spec/wasabi/parser/import_port_types_spec.rb +2 -2
  21. data/spec/wasabi/parser/juniper_spec.rb +3 -3
  22. data/spec/wasabi/parser/marketo_spec.rb +1 -1
  23. data/spec/wasabi/parser/message_element_spec.rb +17 -0
  24. data/spec/wasabi/parser/multiple_namespaces_spec.rb +7 -7
  25. data/spec/wasabi/parser/multiple_parts_in_message_spec.rb +8 -4
  26. data/spec/wasabi/parser/no_message_parts_spec.rb +6 -6
  27. data/spec/wasabi/parser/no_namespace_spec.rb +4 -4
  28. data/spec/wasabi/parser/no_target_namespace_spec.rb +1 -1
  29. data/spec/wasabi/parser/symbolic_endpoint_spec.rb +2 -2
  30. data/spec/wasabi/parser/tradetracker_spec.rb +1 -1
  31. data/spec/wasabi/resolver_spec.rb +10 -10
  32. data/spec/wasabi/wasabi_spec.rb +1 -1
  33. data/wasabi.gemspec +1 -2
  34. metadata +22 -32
@@ -4,33 +4,33 @@ describe String do
4
4
 
5
5
  describe "#snakecase" do
6
6
  it "lowercases one word CamelCase" do
7
- "Merb".snakecase.should == "merb"
7
+ expect("Merb".snakecase).to eq("merb")
8
8
  end
9
9
 
10
10
  it "makes one underscore snakecase two word CamelCase" do
11
- "MerbCore".snakecase.should == "merb_core"
11
+ expect("MerbCore".snakecase).to eq("merb_core")
12
12
  end
13
13
 
14
14
  it "handles CamelCase with more than 2 words" do
15
- "SoYouWantContributeToMerbCore".snakecase.should == "so_you_want_contribute_to_merb_core"
15
+ expect("SoYouWantContributeToMerbCore".snakecase).to eq("so_you_want_contribute_to_merb_core")
16
16
  end
17
17
 
18
18
  it "handles CamelCase with more than 2 capital letter in a row" do
19
- "CNN".snakecase.should == "cnn"
20
- "CNNNews".snakecase.should == "cnn_news"
21
- "HeadlineCNNNews".snakecase.should == "headline_cnn_news"
19
+ expect("CNN".snakecase).to eq("cnn")
20
+ expect("CNNNews".snakecase).to eq("cnn_news")
21
+ expect("HeadlineCNNNews".snakecase).to eq("headline_cnn_news")
22
22
  end
23
23
 
24
24
  it "does NOT change one word lowercase" do
25
- "merb".snakecase.should == "merb"
25
+ expect("merb".snakecase).to eq("merb")
26
26
  end
27
27
 
28
28
  it "leaves snake_case as is" do
29
- "merb_core".snakecase.should == "merb_core"
29
+ expect("merb_core".snakecase).to eq("merb_core")
30
30
  end
31
31
 
32
32
  it "converts period characters to underscores" do
33
- "User.GetEmail".snakecase.should == "user_get_email"
33
+ expect("User.GetEmail".snakecase).to eq("user_get_email")
34
34
  end
35
35
  end
36
36
 
@@ -5,19 +5,33 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:authentication).read }
7
7
 
8
- its(:namespace) { should == "http://v1_0.ws.auth.order.example.com/" }
8
+ describe '#namespace' do
9
+ subject { super().namespace }
10
+ it { should == "http://v1_0.ws.auth.order.example.com/" }
11
+ end
9
12
 
10
- its(:endpoint) { should == URI("http://example.com/validation/1.0/AuthenticationService") }
13
+ describe '#endpoint' do
14
+ subject { super().endpoint }
15
+ it { should == URI("http://example.com/validation/1.0/AuthenticationService") }
16
+ end
11
17
 
12
- its(:element_form_default) { should == :unqualified }
18
+ describe '#element_form_default' do
19
+ subject { super().element_form_default }
20
+ it { should == :unqualified }
21
+ end
13
22
 
14
- it { should have(1).operations }
23
+ it 'has 1 operation' do
24
+ expect(subject.operations.size).to eq(1)
25
+ end
15
26
 
16
- its(:operations) do
27
+ describe '#operations' do
28
+ subject { super().operations }
29
+ it do
17
30
  should == {
18
31
  :authenticate => { :input => "authenticate", :output => "authenticateResponse", :action => "authenticate", :namespace_identifier => "tns" }
19
32
  }
20
33
  end
34
+ end
21
35
 
22
36
  end
23
37
  end
@@ -5,7 +5,10 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:encoded_endpoint).read }
7
7
 
8
- its(:endpoint) { should == URI("http://localhost/soapservice/execute?path=/base/includes/Test+Soap/Return+Rows") }
8
+ describe '#endpoint' do
9
+ subject { super().endpoint }
10
+ it { should == URI("http://localhost/soapservice/execute?path=/base/includes/Test+Soap/Return+Rows") }
11
+ end
9
12
 
10
13
  end
11
14
  end
@@ -5,20 +5,34 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:geotrust).read }
7
7
 
8
- its(:namespace) { should == "http://api.geotrust.com/webtrust/query" }
8
+ describe '#namespace' do
9
+ subject { super().namespace }
10
+ it { should == "http://api.geotrust.com/webtrust/query" }
11
+ end
9
12
 
10
- its(:endpoint) { should == URI("https://test-api.geotrust.com:443/webtrust/query.jws") }
13
+ describe '#endpoint' do
14
+ subject { super().endpoint }
15
+ it { should == URI("https://test-api.geotrust.com:443/webtrust/query.jws") }
16
+ end
11
17
 
12
- its(:element_form_default) { should == :qualified }
18
+ describe '#element_form_default' do
19
+ subject { super().element_form_default }
20
+ it { should == :qualified }
21
+ end
13
22
 
14
- it { should have(2).operations }
23
+ it 'has 2 operations' do
24
+ expect(subject.operations.size).to eq(2)
25
+ end
15
26
 
16
- its(:operations) do
27
+ describe '#operations' do
28
+ subject { super().operations }
29
+ it do
17
30
  should include(
18
31
  { :get_quick_approver_list => { :input => "GetQuickApproverList", :action => "GetQuickApproverList", :parameters=>{:Request=>{:name=>"Request", :type=>"GetQuickApproverListInput"}}}},
19
32
  { :hello => { :input => "hello", :action => "hello", :parameters=>{:Input=>{:name=>"Input", :type=>"string"}} } }
20
33
  )
21
34
  end
35
+ end
22
36
 
23
37
  end
24
38
  end
@@ -5,33 +5,36 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:inherited).read }
7
7
 
8
- its(:type_definitions) do
8
+ describe '#type_definitions' do
9
+ subject { super().type_definitions }
10
+ it do
9
11
  should include([["Account", "Id"], "ID"])
10
12
  should include([["Account", "ProcessId"], "ID"])
11
13
  should include([["Account", "CreatedDate"], "dateTime"])
12
14
  should include([["Account", "Description"], "string"])
13
15
  should include([["Account", "fieldsToNull"], "string"])
14
16
  end
17
+ end
15
18
 
16
19
  it "should position base class attributes before subclass attributes in :order! array" do
17
20
  account = subject.parser.types["Account"]
18
- account[:order!].should == ["fieldsToNull", "Id", "Description", "ProcessId", "CreatedDate"]
21
+ expect(account[:order!]).to eq(["fieldsToNull", "Id", "Description", "ProcessId", "CreatedDate"])
19
22
  end
20
23
 
21
24
  it "should have each type's hash remember it's base type in :base_type element" do
22
25
  account = subject.parser.types["Account"]
23
- account[:base_type].should == "baseObject"
26
+ expect(account[:base_type]).to eq("baseObject")
24
27
 
25
28
  base_object = subject.parser.types["baseObject"]
26
- base_object.should_not have_key(:base_type)
29
+ expect(base_object).not_to have_key(:base_type)
27
30
  end
28
31
 
29
32
  it "should have element's hash contain all these attributes (:nillable, :minOccurs, :maxOccurs) in addition to :type" do
30
33
  base_object = subject.parser.types["baseObject"]
31
34
  fields_to_null = base_object["fieldsToNull"]
32
- fields_to_null[:nillable].should == "true"
33
- fields_to_null[:minOccurs].should == "0"
34
- fields_to_null[:maxOccurs].should == "unbounded"
35
+ expect(fields_to_null[:nillable]).to eq("true")
36
+ expect(fields_to_null[:minOccurs]).to eq("0")
37
+ expect(fields_to_null[:maxOccurs]).to eq("unbounded")
35
38
  end
36
39
  end
37
40
  end
@@ -5,19 +5,35 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:multiple_namespaces).read }
7
7
 
8
- its(:namespace) { should == "http://example.com/actions" }
8
+ describe '#namespace' do
9
+ subject { super().namespace }
10
+ it { should == "http://example.com/actions" }
11
+ end
9
12
 
10
- its(:endpoint) { should == URI("http://example.com:1234/soap") }
13
+ describe '#endpoint' do
14
+ subject { super().endpoint }
15
+ it { should == URI("http://example.com:1234/soap") }
16
+ end
11
17
 
12
- its(:element_form_default) { should == :qualified }
18
+ describe '#element_form_default' do
19
+ subject { super().element_form_default }
20
+ it { should == :qualified }
21
+ end
13
22
 
14
- it { should have(1).operations }
23
+ it 'has 1 operation' do
24
+ expect(subject.operations.size).to eq(1)
25
+ end
15
26
 
16
- its(:operations) do
27
+ describe '#operations' do
28
+ subject { super().operations }
29
+ it do
17
30
  should == { :save => { :input => "Save", :output=>"SaveResponse", :action => "http://example.com/actions.Save", :namespace_identifier => "actions", :parameters => { :article => { :name => "article", :type => "Article" } } } }
18
31
  end
32
+ end
19
33
 
20
- its(:type_namespaces) do
34
+ describe '#type_namespaces' do
35
+ subject { super().type_namespaces }
36
+ it do
21
37
  should =~ [
22
38
  [["Save"], "http://example.com/actions"],
23
39
  [["Save", "article"], "http://example.com/actions"],
@@ -26,10 +42,14 @@ describe Wasabi::Document do
26
42
  [["Article", "Title"], "http://example.com/article"]
27
43
  ]
28
44
  end
45
+ end
29
46
 
30
- its(:type_definitions) do
47
+ describe '#type_definitions' do
48
+ subject { super().type_definitions }
49
+ it do
31
50
  should =~ [ [["Save", "article"], "Article"] ]
32
51
  end
52
+ end
33
53
 
34
54
  end
35
55
  end
@@ -5,21 +5,35 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:namespaced_actions).read }
7
7
 
8
- its(:namespace) { should == "http://api.example.com/api/" }
8
+ describe '#namespace' do
9
+ subject { super().namespace }
10
+ it { should == "http://api.example.com/api/" }
11
+ end
9
12
 
10
- its(:endpoint) { should == URI("https://api.example.com/api/api.asmx") }
13
+ describe '#endpoint' do
14
+ subject { super().endpoint }
15
+ it { should == URI("https://api.example.com/api/api.asmx") }
16
+ end
11
17
 
12
- its(:element_form_default) { should == :qualified }
18
+ describe '#element_form_default' do
19
+ subject { super().element_form_default }
20
+ it { should == :qualified }
21
+ end
13
22
 
14
- it { should have(3).operations }
23
+ it 'has 3 operations' do
24
+ expect(subject.operations.size).to eq(3)
25
+ end
15
26
 
16
- its(:operations) do
27
+ describe '#operations' do
28
+ subject { super().operations }
29
+ it do
17
30
  should include(
18
31
  { :delete_client => { :input => "Client.Delete", :output => "Client.DeleteResponse", :action => "http://api.example.com/api/Client.Delete", :namespace_identifier => "tns" } },
19
32
  { :get_clients => { :input => "User.GetClients", :output => "User.GetClientsResponse", :action => "http://api.example.com/api/User.GetClients", :namespace_identifier => "tns" } },
20
33
  { :get_api_key => { :input => "User.GetApiKey", :output => "User.GetApiKeyResponse", :action => "http://api.example.com/api/User.GetApiKey", :namespace_identifier => "tns" } }
21
34
  )
22
35
  end
36
+ end
23
37
 
24
38
  end
25
39
  end
@@ -5,21 +5,35 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:no_namespace).read }
7
7
 
8
- its(:namespace) { should == "urn:ActionWebService" }
8
+ describe '#namespace' do
9
+ subject { super().namespace }
10
+ it { should == "urn:ActionWebService" }
11
+ end
9
12
 
10
- its(:endpoint) { should == URI("http://example.com/api/api") }
13
+ describe '#endpoint' do
14
+ subject { super().endpoint }
15
+ it { should == URI("http://example.com/api/api") }
16
+ end
11
17
 
12
- its(:element_form_default) { should == :unqualified }
18
+ describe '#element_form_default' do
19
+ subject { super().element_form_default }
20
+ it { should == :unqualified }
21
+ end
13
22
 
14
- it { should have(3).operations }
23
+ it 'has 3 operations' do
24
+ expect(subject.operations.size).to eq(3)
25
+ end
15
26
 
16
- its(:operations) do
27
+ describe '#operations' do
28
+ subject { super().operations }
29
+ it do
17
30
  should include(
18
31
  { :get_user_login_by_id => { :input => "GetUserLoginById", :output => "GetUserLoginById", :action => "/api/api/GetUserLoginById", :namespace_identifier => "typens" } },
19
32
  { :get_all_contacts => { :input => "GetAllContacts", :output =>"GetAllContacts", :action => "/api/api/GetAllContacts", :namespace_identifier => "typens" } },
20
33
  { :search_user => { :input => "SearchUser", :output =>"SearchUser", :action => "/api/api/SearchUser", :namespace_identifier => nil } }
21
34
  )
22
35
  end
36
+ end
23
37
 
24
38
  end
25
39
  end
@@ -5,11 +5,14 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:savon295).read }
7
7
 
8
- its(:operations) do
8
+ describe '#operations' do
9
+ subject { super().operations }
10
+ it do
9
11
  should include(
10
12
  { :sendsms => { :input => "sendsms", :output => "sendsms", :action => "sendsms", :namespace_identifier => "tns" } }
11
13
  )
12
14
  end
15
+ end
13
16
 
14
17
  end
15
18
  end
@@ -5,7 +5,10 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:soap12).read }
7
7
 
8
- its(:endpoint) { should == URI("http://blogsite.example.com/endpoint12") }
8
+ describe '#endpoint' do
9
+ subject { super().endpoint }
10
+ it { should == URI("http://blogsite.example.com/endpoint12") }
11
+ end
9
12
 
10
13
  end
11
14
  end
@@ -5,17 +5,25 @@ describe Wasabi::Document do
5
5
 
6
6
  subject { Wasabi::Document.new fixture(:two_bindings).read }
7
7
 
8
- its(:element_form_default) { should == :unqualified }
8
+ describe '#element_form_default' do
9
+ subject { super().element_form_default }
10
+ it { should == :unqualified }
11
+ end
9
12
 
10
- it { should have(3).operations }
13
+ it 'has 3 operations' do
14
+ expect(subject.operations.size).to eq(3)
15
+ end
11
16
 
12
- its(:operations) do
17
+ describe '#operations' do
18
+ subject { super().operations }
19
+ it do
13
20
  should include(
14
21
  { :post => { :input => "Post", :action => "Post" } },
15
22
  { :post11only => { :input => "Post11only", :action => "Post11only" } },
16
23
  { :post12only => { :input => "Post12only", :action => "Post12only" } }
17
24
  )
18
25
  end
26
+ end
19
27
 
20
28
  end
21
29
  end
@@ -5,20 +5,20 @@ describe Wasabi::Document do
5
5
  subject { Wasabi::Document.new fixture(:authentication).read }
6
6
 
7
7
  it "accepts a URL" do
8
- HTTPI.should_receive(:get) { HTTPI::Response.new(200, {}, "wsdl") }
8
+ expect(HTTPI).to receive(:get) { HTTPI::Response.new(200, {}, "wsdl") }
9
9
 
10
10
  document = Wasabi::Document.new("http://example.com?wsdl")
11
- document.xml.should == "wsdl"
11
+ expect(document.xml).to eq("wsdl")
12
12
  end
13
13
 
14
14
  it "accepts a path" do
15
15
  document = Wasabi::Document.new fixture(:authentication).path
16
- document.xml.should == fixture(:authentication).read
16
+ expect(document.xml).to eq(fixture(:authentication).read)
17
17
  end
18
18
 
19
19
  it "accepts raw XML" do
20
20
  document = Wasabi::Document.new fixture(:authentication).read
21
- document.xml.should == fixture(:authentication).read
21
+ expect(document.xml).to eq(fixture(:authentication).read)
22
22
  end
23
23
 
24
24
  describe ".validate_element_form_default!" do
@@ -39,13 +39,13 @@ describe Wasabi::Document do
39
39
 
40
40
  describe "#element_form_default" do
41
41
  it "defaults to :unqualified" do
42
- subject.element_form_default.should == :unqualified
42
+ expect(subject.element_form_default).to eq(:unqualified)
43
43
  end
44
44
 
45
45
  [:unqualified, :qualified].each do |value|
46
46
  it "accepts :#{value}" do
47
47
  subject.element_form_default = value
48
- subject.element_form_default.should == value
48
+ expect(subject.element_form_default).to eq(value)
49
49
  end
50
50
  end
51
51
 
@@ -12,7 +12,7 @@ describe Wasabi::Parser do
12
12
  let(:xml) { fixture(:geotrust).read }
13
13
 
14
14
  it "returns the #service_name attribute" do
15
- subject.service_name.should == "queryDefinitions"
15
+ expect(subject.service_name).to eq("queryDefinitions")
16
16
  end
17
17
 
18
18
  end
@@ -14,8 +14,8 @@ describe Wasabi::Parser do
14
14
  it "does blow up when portTypes are imported" do
15
15
  get_customer = subject.operations[:get_customer]
16
16
 
17
- get_customer[:input].should == "GetCustomer"
18
- get_customer[:namespace_identifier].should be_nil
17
+ expect(get_customer[:input]).to eq("GetCustomer")
18
+ expect(get_customer[:namespace_identifier]).to be_nil
19
19
  end
20
20
 
21
21
  end
@@ -14,9 +14,9 @@ describe Wasabi::Parser do
14
14
  it 'does not blow up when an extension base element is defined in an import' do
15
15
  request = subject.operations[:get_system_info_request]
16
16
 
17
- request[:input].should == 'GetSystemInfoRequest'
18
- request[:action].should == 'urn:#GetSystemInfoRequest'
19
- request[:namespace_identifier].should == 'impl'
17
+ expect(request[:input]).to eq('GetSystemInfoRequest')
18
+ expect(request[:action]).to eq('urn:#GetSystemInfoRequest')
19
+ expect(request[:namespace_identifier]).to eq('impl')
20
20
  end
21
21
 
22
22
  end