class Soaspec::TestServer::GetBank

Representing a GetBank SOAP service

Public Class Methods

bank_not_found() click to toggle source

@return [String] XML of failure SOAP Response simulating bank not found

# File lib/soaspec/test_server/get_bank.rb, line 39
        def bank_not_found
          <<-EOF
        <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
        <soapenv:Body>
        <soapenv:Fault>
        <soapenv:Code>
        <soapenv:Value>soapenv:Receiver</soapenv:Value>
          </soapenv:Code>
        <soapenv:Reason>
        <soapenv:Text xml:lang="en-US">Keine Bank zur BLZ <%= @bank_name %> gefunden!</soapenv:Text>
          </soapenv:Reason>
        <soapenv:Detail>
        <Exception>org.apache.axis2.AxisFault: Keine Bank zur BLZ test string gefunden!
        at com.thomas_bayer.blz.BLZService.getBank(BLZService.java:41)
        at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:49)
        at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
        at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
        at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
        at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
        </Exception>
          </soapenv:Detail>
        </soapenv:Fault>
      </soapenv:Body>
        </soapenv:Envelope>
          EOF
        end
error_response_template() click to toggle source
# File lib/soaspec/test_server/get_bank.rb, line 86
        def error_response_template
          <<-EOF
    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
      <soapenv:Body>
        <soapenv:Fault>
          <soapenv:Code>
            <soapenv:Value>soapenv:Receiver</soapenv:Value>
          </soapenv:Code>
          <soapenv:Reason>
            <soapenv:Text xml:lang="en-US">org.apache.axis2.databinding.ADBException: Unexpected subelement getBank</soapenv:Text>
          </soapenv:Reason>
          <soapenv:Detail>
            <Exception>org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
      at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
      at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:124)
      at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.invokeBusinessLogic(BLZServiceMessageReceiverInOut.java:43)
      at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLogic(AbstractInOutSyncMessageReceiver.java:42)
      at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
      at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
      at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
      at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
      at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
      at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:423)
      at com.thomas_bayer.adb.GetBank$Factory.parse(GetBank.java:304)
      at com.thomas_bayer.blz.BLZServiceMessageReceiverInOut.fromOM(BLZServiceMessageReceiverInOut.java:117)
      ... 25 more
    Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement getBank
      at com.thomas_bayer.adb.GetBankType$Factory.parse(GetBankType.java:410)
      ... 27 more
    </Exception>
          </soapenv:Detail>
        </soapenv:Fault>
      </soapenv:Body>
    </soapenv:Envelope>
          EOF
        end
response_for(request) click to toggle source

Return a response based upon the SOAP request @param [String] request XML in request

# File lib/soaspec/test_server/get_bank.rb, line 144
def response_for(request)
  @title = 'Deutsche Bank'
  soap_action = request.env['HTTP_SOAPACTION']
  return 500, 'Not valid SOAP' unless soap_action

  request_body = request.body
  doc = Nokogiri::XML(request_body)
  soap_action = soap_action.strip # Used in ERB
  blz_element = doc.at_xpath('//tns:blz')
  return 500, error_response_template unless blz_element

  @bank_name = blz_element.inner_text
  @bank_id = @bank_name.to_i
  return 500, ERB.new(bank_not_found).result(binding) if @bank_id.zero?

  @title = 'DAB Bank' if @bank_id == 500
  @multiple_ort = (@bank_id == 20)
  ERB.new(success_response_template).result(binding)
end
success_response_template() click to toggle source

@return [String] XML of success SOAP Response

# File lib/soaspec/test_server/get_bank.rb, line 17
        def success_response_template
          <<-EOF
    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
      <soapenv:Body>
        <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/">
          <ns1:details unique_id="50">
            <ns1:bezeichnung lang="German"><%= @title %></ns1:bezeichnung>
            <ns1:bic>DEUTDEMMXXX <%= soap_action %></ns1:bic>
            <ns1:ort>München</ns1:ort>
            <% if @multiple_ort %>
            <ns1:ort>Wellington</ns1:ort>
            <ns1:ort>Tokyo</ns1:ort>
            <% end %>
            <ns1:plz><%= @bank_name %></ns1:plz>
          </ns1:details>
        </ns1:getBankResponse>
      </soapenv:Body>
    </soapenv:Envelope>
          EOF
        end
test_wsdl() click to toggle source

This is retrieved by Savon @return [String] WSDL of mock web service

# File lib/soaspec/test_server/get_bank.rb, line 12
def test_wsdl
  ERB.new(File.read(File.join(File.dirname(__FILE__), 'bank.wsdl'))).result(binding)
end