soaspec 0.2.32 → 0.2.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +15 -15
  3. data/.gitlab-ci.yml +62 -62
  4. data/.rspec +3 -3
  5. data/.rubocop.yml +2 -2
  6. data/CODE_OF_CONDUCT.md +74 -74
  7. data/ChangeLog +632 -625
  8. data/Dockerfile +7 -7
  9. data/Gemfile +8 -8
  10. data/LICENSE.txt +21 -21
  11. data/README.md +231 -231
  12. data/Rakefile +52 -52
  13. data/Todo.md +16 -16
  14. data/exe/soaspec +138 -138
  15. data/exe/xml_to_yaml_file +43 -43
  16. data/lib/soaspec.rb +106 -105
  17. data/lib/soaspec/baseline.rb +23 -0
  18. data/lib/soaspec/core_ext/hash.rb +44 -44
  19. data/lib/soaspec/cucumber/generic_steps.rb +94 -94
  20. data/lib/soaspec/demo.rb +6 -6
  21. data/lib/soaspec/errors.rb +24 -22
  22. data/lib/soaspec/exchange/exchange.rb +129 -129
  23. data/lib/soaspec/exchange/exchange_extractor.rb +90 -90
  24. data/lib/soaspec/exchange/exchange_properties.rb +28 -28
  25. data/lib/soaspec/exchange/exchange_repeater.rb +21 -21
  26. data/lib/soaspec/exchange/request_builder.rb +70 -70
  27. data/lib/soaspec/exchange/variable_storer.rb +24 -24
  28. data/lib/soaspec/exchange_handlers/exchange_handler.rb +98 -98
  29. data/lib/soaspec/exchange_handlers/exchange_handler_defaults.rb +61 -61
  30. data/lib/soaspec/exchange_handlers/handler_accessors.rb +132 -132
  31. data/lib/soaspec/exchange_handlers/request/rest_request.rb +59 -51
  32. data/lib/soaspec/exchange_handlers/request/soap_request.rb +41 -41
  33. data/lib/soaspec/exchange_handlers/response_extractor.rb +84 -84
  34. data/lib/soaspec/exchange_handlers/rest_exchanger_factory.rb +111 -111
  35. data/lib/soaspec/exchange_handlers/rest_handler.rb +307 -298
  36. data/lib/soaspec/exchange_handlers/rest_methods.rb +65 -65
  37. data/lib/soaspec/exchange_handlers/rest_parameters.rb +112 -112
  38. data/lib/soaspec/exchange_handlers/rest_parameters_defaults.rb +42 -42
  39. data/lib/soaspec/exchange_handlers/soap_handler.rb +241 -241
  40. data/lib/soaspec/exe_helpers.rb +94 -94
  41. data/lib/soaspec/generate_server.rb +48 -48
  42. data/lib/soaspec/generator/.rspec.erb +5 -5
  43. data/lib/soaspec/generator/.travis.yml.erb +5 -5
  44. data/lib/soaspec/generator/Gemfile.erb +8 -8
  45. data/lib/soaspec/generator/README.md.erb +29 -29
  46. data/lib/soaspec/generator/Rakefile.erb +19 -19
  47. data/lib/soaspec/generator/config/data/default.yml.erb +2 -2
  48. data/lib/soaspec/generator/css/bootstrap.css +6833 -6833
  49. data/lib/soaspec/generator/features/support/env.rb.erb +3 -3
  50. data/lib/soaspec/generator/generate_exchange.html.erb +47 -47
  51. data/lib/soaspec/generator/lib/blz_service.rb.erb +26 -26
  52. data/lib/soaspec/generator/lib/dynamic_class_content.rb.erb +12 -12
  53. data/lib/soaspec/generator/lib/new_rest_service.rb.erb +56 -56
  54. data/lib/soaspec/generator/lib/new_soap_service.rb.erb +29 -29
  55. data/lib/soaspec/generator/lib/package_service.rb.erb +2 -2
  56. data/lib/soaspec/generator/lib/shared_example.rb.erb +8 -8
  57. data/lib/soaspec/generator/spec/dynamic_soap_spec.rb.erb +12 -12
  58. data/lib/soaspec/generator/spec/rest_spec.rb.erb +9 -9
  59. data/lib/soaspec/generator/spec/soap_spec.rb.erb +51 -51
  60. data/lib/soaspec/generator/spec/spec_helper.rb.erb +23 -23
  61. data/lib/soaspec/generator/template/soap_template.xml +6 -6
  62. data/lib/soaspec/indifferent_hash.rb +9 -9
  63. data/lib/soaspec/interpreter.rb +70 -70
  64. data/lib/soaspec/matchers.rb +140 -118
  65. data/lib/soaspec/o_auth2.rb +142 -142
  66. data/lib/soaspec/soaspec_shared_examples.rb +26 -26
  67. data/lib/soaspec/spec_logger.rb +143 -143
  68. data/lib/soaspec/template_reader.rb +30 -30
  69. data/lib/soaspec/test_server/bank.wsdl +90 -90
  70. data/lib/soaspec/test_server/get_bank.rb +166 -166
  71. data/lib/soaspec/test_server/id_manager.rb +41 -41
  72. data/lib/soaspec/test_server/invoices.rb +29 -29
  73. data/lib/soaspec/test_server/namespace.xml +14 -14
  74. data/lib/soaspec/test_server/note.xml +5 -5
  75. data/lib/soaspec/test_server/puppy_service.rb +21 -21
  76. data/lib/soaspec/test_server/test_attribute.rb +14 -14
  77. data/lib/soaspec/test_server/test_namespace.rb +14 -14
  78. data/lib/soaspec/version.rb +6 -6
  79. data/lib/soaspec/virtual_server.rb +190 -176
  80. data/lib/soaspec/wait.rb +43 -43
  81. data/lib/soaspec/wsdl_generator.rb +215 -215
  82. data/soaspec.gemspec +58 -58
  83. data/test.wsdl +116 -116
  84. data/test.xml +10 -10
  85. data/test_wsdl.rb +43 -43
  86. metadata +4 -3
@@ -1,30 +1,30 @@
1
- # frozen_string_literal: true
2
-
3
- require 'erb'
4
-
5
- module Soaspec
6
- # Handles reading templates for tests
7
- class TemplateReader
8
- # Name of file where template is stored
9
- attr_accessor :template_name
10
-
11
- # @return [String] Path to where template file is stored
12
- def file_location
13
- File.join(*Soaspec.template_folder, template_name)
14
- end
15
-
16
- # @param [String] template_name File where template is stored
17
- # @return [String] Body of template after determining test_values
18
- def render_body(template_name, binding)
19
- self.template_name = template_name
20
- unless File.exist? file_location
21
- raise "Cannot see file at #{file_location}. "\
22
- "Global folder is '#{Soaspec.template_folder}' and filename is '#{template_name}'"
23
- end
24
- request_body = File.read file_location
25
- raise "Template at #{file_location} not parsed correctly" if request_body.strip.empty?
26
-
27
- ERB.new(request_body).result(binding)
28
- end
29
- end
30
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+
5
+ module Soaspec
6
+ # Handles reading templates for tests
7
+ class TemplateReader
8
+ # Name of file where template is stored
9
+ attr_accessor :template_name
10
+
11
+ # @return [String] Path to where template file is stored
12
+ def file_location
13
+ File.join(*Soaspec.template_folder, template_name)
14
+ end
15
+
16
+ # @param [String] template_name File where template is stored
17
+ # @return [String] Body of template after determining test_values
18
+ def render_body(template_name, binding)
19
+ self.template_name = template_name
20
+ unless File.exist? file_location
21
+ raise "Cannot see file at #{file_location}. "\
22
+ "Global folder is '#{Soaspec.template_folder}' and filename is '#{template_name}'"
23
+ end
24
+ request_body = File.read file_location
25
+ raise "Template at #{file_location} not parsed correctly" if request_body.strip.empty?
26
+
27
+ ERB.new(request_body).result(binding)
28
+ end
29
+ end
30
+ end
@@ -1,91 +1,91 @@
1
- <?xml version="1.0"?>
2
- <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tns="http://thomas-bayer.com/blz/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://thomas-bayer.com/blz/">
3
- <wsdl:documentation>BLZService</wsdl:documentation>
4
- <wsdl:types>
5
- <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://thomas-bayer.com/blz/">
6
- <xsd:element name="getBank" type="tns:getBankType"/>
7
- <xsd:element name="getBankResponse" type="tns:getBankResponseType"/>
8
- <xsd:complexType name="getBankType">
9
- <xsd:sequence>
10
- <xsd:element name="blz" type="xsd:string"/>
11
- </xsd:sequence>
12
- </xsd:complexType>
13
- <xsd:complexType name="getBankResponseType">
14
- <xsd:sequence>
15
- <xsd:element name="details" type="tns:detailsType"/>
16
- </xsd:sequence>
17
- </xsd:complexType>
18
- <xsd:complexType name="detailsType">
19
- <xsd:sequence>
20
- <xsd:element minOccurs="0" name="bezeichnung" type="xsd:string"/>
21
- <xsd:element minOccurs="0" name="bic" type="xsd:string"/>
22
- <xsd:element maxOccurs="unbounded" minOccurs="0" name="ort" type="xsd:string"/>
23
- <xsd:element minOccurs="0" name="plz" type="xsd:string"/>
24
- </xsd:sequence>
25
- </xsd:complexType>
26
- </xsd:schema>
27
- </wsdl:types>
28
- <wsdl:message name="getBank">
29
- <wsdl:part name="parameters" element="tns:getBank"/>
30
- </wsdl:message>
31
- <wsdl:message name="getBankResponse">
32
- <wsdl:part name="parameters" element="tns:getBankResponse"/>
33
- </wsdl:message>
34
- <wsdl:portType name="BLZServicePortType">
35
- <wsdl:operation name="getBank">
36
- <wsdl:input message="tns:getBank"/>
37
- <!--<wsdl:output message="tns:getBankResponse" wsaw:Action="http://thomas-bayer.com/blz/BLZService/getBankResponse"/>-->
38
- <wsdl:output message="tns:getBankResponse" wsaw:Action="http://localhost:4567/BLZService/getBankResponse"/>
39
- </wsdl:operation>
40
- </wsdl:portType>
41
- <wsdl:binding name="BLZServiceSOAP11Binding" type="tns:BLZServicePortType">
42
- <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
43
- <wsdl:operation name="getBank">
44
- <soap:operation style="document" soapAction=""/>
45
- <wsdl:input>
46
- <soap:body use="literal"/>
47
- </wsdl:input>
48
- <wsdl:output>
49
- <soap:body use="literal"/>
50
- </wsdl:output>
51
- </wsdl:operation>
52
- </wsdl:binding>
53
- <wsdl:binding name="BLZServiceSOAP12Binding" type="tns:BLZServicePortType">
54
- <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
55
- <wsdl:operation name="getBank">
56
- <soap12:operation style="document" soapAction=""/>
57
- <wsdl:input>
58
- <soap12:body use="literal"/>
59
- </wsdl:input>
60
- <wsdl:output>
61
- <soap12:body use="literal"/>
62
- </wsdl:output>
63
- </wsdl:operation>
64
- </wsdl:binding>
65
- <wsdl:binding name="BLZServiceHttpBinding" type="tns:BLZServicePortType">
66
- <http:binding verb="POST"/>
67
- <wsdl:operation name="getBank">
68
- <http:operation location="BLZService/getBank"/>
69
- <wsdl:input>
70
- <mime:content part="getBank" type="text/xml"/>
71
- </wsdl:input>
72
- <wsdl:output>
73
- <mime:content part="getBank" type="text/xml"/>
74
- </wsdl:output>
75
- </wsdl:operation>
76
- </wsdl:binding>
77
- <wsdl:service name="BLZService">
78
- <wsdl:port name="BLZServiceSOAP11port_http" binding="tns:BLZServiceSOAP11Binding">
79
- <!-- <soap:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/> -->
80
- <soap:address location="http://localhost:4999/BLZService"/>
81
- </wsdl:port>
82
- <wsdl:port name="BLZServiceSOAP12port_http" binding="tns:BLZServiceSOAP12Binding">
83
- <!--<soap12:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/>-->
84
- <soap12:address location="http://localhost:4999/BLZService"/>
85
- </wsdl:port>
86
- <wsdl:port name="BLZServiceHttpport" binding="tns:BLZServiceHttpBinding">
87
- <!--<http:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/>-->
88
- <soap:address location="http://localhost:4999/BLZService"/>
89
- </wsdl:port>
90
- </wsdl:service>
1
+ <?xml version="1.0"?>
2
+ <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tns="http://thomas-bayer.com/blz/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://thomas-bayer.com/blz/">
3
+ <wsdl:documentation>BLZService</wsdl:documentation>
4
+ <wsdl:types>
5
+ <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://thomas-bayer.com/blz/">
6
+ <xsd:element name="getBank" type="tns:getBankType"/>
7
+ <xsd:element name="getBankResponse" type="tns:getBankResponseType"/>
8
+ <xsd:complexType name="getBankType">
9
+ <xsd:sequence>
10
+ <xsd:element name="blz" type="xsd:string"/>
11
+ </xsd:sequence>
12
+ </xsd:complexType>
13
+ <xsd:complexType name="getBankResponseType">
14
+ <xsd:sequence>
15
+ <xsd:element name="details" type="tns:detailsType"/>
16
+ </xsd:sequence>
17
+ </xsd:complexType>
18
+ <xsd:complexType name="detailsType">
19
+ <xsd:sequence>
20
+ <xsd:element minOccurs="0" name="bezeichnung" type="xsd:string"/>
21
+ <xsd:element minOccurs="0" name="bic" type="xsd:string"/>
22
+ <xsd:element maxOccurs="unbounded" minOccurs="0" name="ort" type="xsd:string"/>
23
+ <xsd:element minOccurs="0" name="plz" type="xsd:string"/>
24
+ </xsd:sequence>
25
+ </xsd:complexType>
26
+ </xsd:schema>
27
+ </wsdl:types>
28
+ <wsdl:message name="getBank">
29
+ <wsdl:part name="parameters" element="tns:getBank"/>
30
+ </wsdl:message>
31
+ <wsdl:message name="getBankResponse">
32
+ <wsdl:part name="parameters" element="tns:getBankResponse"/>
33
+ </wsdl:message>
34
+ <wsdl:portType name="BLZServicePortType">
35
+ <wsdl:operation name="getBank">
36
+ <wsdl:input message="tns:getBank"/>
37
+ <!--<wsdl:output message="tns:getBankResponse" wsaw:Action="http://thomas-bayer.com/blz/BLZService/getBankResponse"/>-->
38
+ <wsdl:output message="tns:getBankResponse" wsaw:Action="http://localhost:4567/BLZService/getBankResponse"/>
39
+ </wsdl:operation>
40
+ </wsdl:portType>
41
+ <wsdl:binding name="BLZServiceSOAP11Binding" type="tns:BLZServicePortType">
42
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
43
+ <wsdl:operation name="getBank">
44
+ <soap:operation style="document" soapAction=""/>
45
+ <wsdl:input>
46
+ <soap:body use="literal"/>
47
+ </wsdl:input>
48
+ <wsdl:output>
49
+ <soap:body use="literal"/>
50
+ </wsdl:output>
51
+ </wsdl:operation>
52
+ </wsdl:binding>
53
+ <wsdl:binding name="BLZServiceSOAP12Binding" type="tns:BLZServicePortType">
54
+ <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
55
+ <wsdl:operation name="getBank">
56
+ <soap12:operation style="document" soapAction=""/>
57
+ <wsdl:input>
58
+ <soap12:body use="literal"/>
59
+ </wsdl:input>
60
+ <wsdl:output>
61
+ <soap12:body use="literal"/>
62
+ </wsdl:output>
63
+ </wsdl:operation>
64
+ </wsdl:binding>
65
+ <wsdl:binding name="BLZServiceHttpBinding" type="tns:BLZServicePortType">
66
+ <http:binding verb="POST"/>
67
+ <wsdl:operation name="getBank">
68
+ <http:operation location="BLZService/getBank"/>
69
+ <wsdl:input>
70
+ <mime:content part="getBank" type="text/xml"/>
71
+ </wsdl:input>
72
+ <wsdl:output>
73
+ <mime:content part="getBank" type="text/xml"/>
74
+ </wsdl:output>
75
+ </wsdl:operation>
76
+ </wsdl:binding>
77
+ <wsdl:service name="BLZService">
78
+ <wsdl:port name="BLZServiceSOAP11port_http" binding="tns:BLZServiceSOAP11Binding">
79
+ <!-- <soap:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/> -->
80
+ <soap:address location="http://localhost:4999/BLZService"/>
81
+ </wsdl:port>
82
+ <wsdl:port name="BLZServiceSOAP12port_http" binding="tns:BLZServiceSOAP12Binding">
83
+ <!--<soap12:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/>-->
84
+ <soap12:address location="http://localhost:4999/BLZService"/>
85
+ </wsdl:port>
86
+ <wsdl:port name="BLZServiceHttpport" binding="tns:BLZServiceHttpBinding">
87
+ <!--<http:address location="http://www.thomas-bayer.com/axis2/services/BLZService"/>-->
88
+ <soap:address location="http://localhost:4999/BLZService"/>
89
+ </wsdl:port>
90
+ </wsdl:service>
91
91
  </wsdl:definitions>
@@ -1,166 +1,166 @@
1
- # frozen_string_literal: true
2
-
3
- require 'erb'
4
-
5
- module Soaspec
6
- module TestServer
7
- # Representing a GetBank SOAP service
8
- class GetBank
9
- class << self
10
- # This is retrieved by Savon
11
- # @return [String] WSDL of mock web service
12
- def test_wsdl
13
- ERB.new(File.read(File.join(File.dirname(__FILE__), 'bank.wsdl'))).result(binding)
14
- end
15
-
16
- # @return [String] XML of success SOAP Response
17
- def success_response_template
18
- <<-EOF
19
- <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
20
- <soapenv:Body>
21
- <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/">
22
- <ns1:details unique_id="50">
23
- <ns1:bezeichnung lang="German"><%= @title %></ns1:bezeichnung>
24
- <ns1:bic>DEUTDEMMXXX <%= soap_action %></ns1:bic>
25
- <ns1:ort>München</ns1:ort>
26
- <% if @multiple_ort %>
27
- <ns1:ort>Wellington</ns1:ort>
28
- <ns1:ort>Tokyo</ns1:ort>
29
- <% end %>
30
- <ns1:plz><%= @bank_name %></ns1:plz>
31
- </ns1:details>
32
- </ns1:getBankResponse>
33
- </soapenv:Body>
34
- </soapenv:Envelope>
35
- EOF
36
- end
37
-
38
- # @return [String] XML of failure SOAP Response simulating bank not found
39
- def bank_not_found
40
- <<-EOF
41
- <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
42
- <soapenv:Body>
43
- <soapenv:Fault>
44
- <soapenv:Code>
45
- <soapenv:Value>soapenv:Receiver</soapenv:Value>
46
- </soapenv:Code>
47
- <soapenv:Reason>
48
- <soapenv:Text xml:lang="en-US">Keine Bank zur BLZ <%= @bank_name %> gefunden!</soapenv:Text>
49
- </soapenv:Reason>
50
- <soapenv:Detail>
51
- <Exception>org.apache.axis2.AxisFault: Keine Bank zur BLZ test string gefunden!
52
- at com.thomas_bayer.blz.BLZService.getBank(BLZService.java:41)
53
- at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:49)
54
- at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
55
- at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
56
- at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
57
- at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
58
- at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
59
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
60
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
61
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
62
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
63
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
64
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
65
- at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
66
- at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
67
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
68
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
69
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
70
- at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
71
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
72
- at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
73
- at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
74
- at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
75
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
76
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
77
- at java.lang.Thread.run(Thread.java:745)
78
- </Exception>
79
- </soapenv:Detail>
80
- </soapenv:Fault>
81
- </soapenv:Body>
82
- </soapenv:Envelope>
83
- EOF
84
- end
85
-
86
- def error_response_template
87
- <<-EOF
88
- <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
89
- <soapenv:Body>
90
- <soapenv:Fault>
91
- <soapenv:Code>
92
- <soapenv:Value>soapenv:Receiver</soapenv:Value>
93
- </soapenv:Code>
94
- <soapenv:Reason>
95
- <soapenv:Text xml:lang="en-US">org.apache.axis2.databinding.ADBException: Unexpected subelement getBank</soapenv:Text>
96
- </soapenv:Reason>
97
- <soapenv:Detail>
98
- <Exception>org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
99
- at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
100
- at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:124)
101
- at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:43)
102
- at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
103
- at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
104
- at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
105
- at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
106
- at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
107
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
108
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
109
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
110
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
111
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
112
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
113
- at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
114
- at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
115
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
116
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
117
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
118
- at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
119
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
120
- at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
121
- at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
122
- at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
123
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
124
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
125
- at java.lang.Thread.run(Thread.java:745)
126
- Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
127
- at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:423)
128
- at com.thomas_bayer.adb.GetBank$Factory.parse(GetBank.java:304)
129
- at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:117)
130
- ... 25 more
131
- Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
132
- at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:410)
133
- ... 27 more
134
- </Exception>
135
- </soapenv:Detail>
136
- </soapenv:Fault>
137
- </soapenv:Body>
138
- </soapenv:Envelope>
139
- EOF
140
- end
141
-
142
- # Return a response based upon the SOAP request
143
- # @param [String] request XML in request
144
- def response_for(request)
145
- @title = 'Deutsche Bank'
146
- soap_action = request.env['HTTP_SOAPACTION']
147
- return 500, 'Not valid SOAP' unless soap_action
148
-
149
- request_body = request.body
150
- doc = Nokogiri::XML(request_body)
151
- soap_action = soap_action.strip # Used in ERB
152
- blz_element = doc.at_xpath('//tns:blz')
153
- return 500, error_response_template unless blz_element
154
-
155
- @bank_name = blz_element.inner_text
156
- @bank_id = @bank_name.to_i
157
- return 500, ERB.new(bank_not_found).result(binding) if @bank_id.zero?
158
-
159
- @title = 'DAB Bank' if @bank_id == 500
160
- @multiple_ort = (@bank_id == 20)
161
- ERB.new(success_response_template).result(binding)
162
- end
163
- end
164
- end
165
- end
166
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'erb'
4
+
5
+ module Soaspec
6
+ module TestServer
7
+ # Representing a GetBank SOAP service
8
+ class GetBank
9
+ class << self
10
+ # This is retrieved by Savon
11
+ # @return [String] WSDL of mock web service
12
+ def test_wsdl
13
+ ERB.new(File.read(File.join(File.dirname(__FILE__), 'bank.wsdl'))).result(binding)
14
+ end
15
+
16
+ # @return [String] XML of success SOAP Response
17
+ def success_response_template
18
+ <<-EOF
19
+ <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
20
+ <soapenv:Body>
21
+ <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/">
22
+ <ns1:details unique_id="50">
23
+ <ns1:bezeichnung lang="German"><%= @title %></ns1:bezeichnung>
24
+ <ns1:bic>DEUTDEMMXXX <%= soap_action %></ns1:bic>
25
+ <ns1:ort>München</ns1:ort>
26
+ <% if @multiple_ort %>
27
+ <ns1:ort>Wellington</ns1:ort>
28
+ <ns1:ort>Tokyo</ns1:ort>
29
+ <% end %>
30
+ <ns1:plz><%= @bank_name %></ns1:plz>
31
+ </ns1:details>
32
+ </ns1:getBankResponse>
33
+ </soapenv:Body>
34
+ </soapenv:Envelope>
35
+ EOF
36
+ end
37
+
38
+ # @return [String] XML of failure SOAP Response simulating bank not found
39
+ def bank_not_found
40
+ <<-EOF
41
+ <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
42
+ <soapenv:Body>
43
+ <soapenv:Fault>
44
+ <soapenv:Code>
45
+ <soapenv:Value>soapenv:Receiver</soapenv:Value>
46
+ </soapenv:Code>
47
+ <soapenv:Reason>
48
+ <soapenv:Text xml:lang="en-US">Keine Bank zur BLZ <%= @bank_name %> gefunden!</soapenv:Text>
49
+ </soapenv:Reason>
50
+ <soapenv:Detail>
51
+ <Exception>org.apache.axis2.AxisFault: Keine Bank zur BLZ test string gefunden!
52
+ at com.thomas_bayer.blz.BLZService.getBank(BLZService.java:41)
53
+ at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:49)
54
+ at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
55
+ at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
56
+ at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
57
+ at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
58
+ at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
59
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
60
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
61
+ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
62
+ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
63
+ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
64
+ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
65
+ at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
66
+ at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
67
+ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
68
+ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
69
+ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
70
+ at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
71
+ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
72
+ at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
73
+ at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
74
+ at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
75
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
76
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
77
+ at java.lang.Thread.run(Thread.java:745)
78
+ </Exception>
79
+ </soapenv:Detail>
80
+ </soapenv:Fault>
81
+ </soapenv:Body>
82
+ </soapenv:Envelope>
83
+ EOF
84
+ end
85
+
86
+ def error_response_template
87
+ <<-EOF
88
+ <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
89
+ <soapenv:Body>
90
+ <soapenv:Fault>
91
+ <soapenv:Code>
92
+ <soapenv:Value>soapenv:Receiver</soapenv:Value>
93
+ </soapenv:Code>
94
+ <soapenv:Reason>
95
+ <soapenv:Text xml:lang="en-US">org.apache.axis2.databinding.ADBException: Unexpected subelement getBank</soapenv:Text>
96
+ </soapenv:Reason>
97
+ <soapenv:Detail>
98
+ <Exception>org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
99
+ at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
100
+ at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:124)
101
+ at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:43)
102
+ at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
103
+ at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
104
+ at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
105
+ at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
106
+ at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
107
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
108
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
109
+ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
110
+ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
111
+ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
112
+ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
113
+ at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
114
+ at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
115
+ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
116
+ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
117
+ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
118
+ at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
119
+ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
120
+ at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
121
+ at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
122
+ at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
123
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
124
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
125
+ at java.lang.Thread.run(Thread.java:745)
126
+ Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
127
+ at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:423)
128
+ at com.thomas_bayer.adb.GetBank$Factory.parse(GetBank.java:304)
129
+ at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:117)
130
+ ... 25 more
131
+ Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
132
+ at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:410)
133
+ ... 27 more
134
+ </Exception>
135
+ </soapenv:Detail>
136
+ </soapenv:Fault>
137
+ </soapenv:Body>
138
+ </soapenv:Envelope>
139
+ EOF
140
+ end
141
+
142
+ # Return a response based upon the SOAP request
143
+ # @param [String] request XML in request
144
+ def response_for(request)
145
+ @title = 'Deutsche Bank'
146
+ soap_action = request.env['HTTP_SOAPACTION']
147
+ return 500, 'Not valid SOAP' unless soap_action
148
+
149
+ request_body = request.body
150
+ doc = Nokogiri::XML(request_body)
151
+ soap_action = soap_action.strip # Used in ERB
152
+ blz_element = doc.at_xpath('//tns:blz')
153
+ return 500, error_response_template unless blz_element
154
+
155
+ @bank_name = blz_element.inner_text
156
+ @bank_id = @bank_name.to_i
157
+ return 500, ERB.new(bank_not_found).result(binding) if @bank_id.zero?
158
+
159
+ @title = 'DAB Bank' if @bank_id == 500
160
+ @multiple_ort = (@bank_id == 20)
161
+ ERB.new(success_response_template).result(binding)
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end