[inkimar] alla anteckningar från 2019 11 24 - Helena61/UdemySoapUI GitHub Wiki

Sample SOAP Services

  1. SoapUI- > https://www.soapui.org/getting-started/10-tips-for-the-soapui-beginner.html
  2. https://www.soapui.org/

This project contains 4 SOAP services for practice purpose. 

How to run the web services on your location machine?

Pre-requisite: You must have java version 1.8 or above.

To Run Sample Services:

  1. Download the file "soap-services-1.0.0.jar" from resources section.
  2. Copy the jar file from your downloads folder into a specific folder on your machine. For e.g  "c:\soapui"
  3. Open Command prompt
  4. Execute following command 
  5. java -jar c:\soapui\soap-services-1.0.0.jar 

By default the services will run on port 8080, If you get any error that "port in use", then run the services on different port (for e.g 8081) using following command java -jar -Dserver.port=8081 c:\soapui\soap-services-1.0.0.jar  The following SOAP Services will be started on your machine. Take the following WSDL URLs and create projects in SOAP UI.

Note:If you change the port (let's say 8081 ), then change the port number to 8081 in above URLs.

Sample Test Data:

  • BLZ Service:  
  • Use following blz codes to get response from web service.
  • 55010111 55010424 55010800 55020100 55020500
  • Airport Service:  
  • getAirportInformationByAirportCode : Use following airport code.
  • LHR
  • Medicare Supplier Service:
  • GetSupplierByZipCode: Use following zip codes
  • 75060 to 75071
  • GetSupplierByCity : Use following cities.
  • IRVINGMC KINNEYLEWISVILLEMCKINNEY
  • Account Service
  • Use following accounts with initial account balances, 
  • Account No=ACC-10010, Balance=1000.0Account No=ACC-10011, Balance=200.0Account No=ACC-10012, Balance=100.0Account No=ACC-10013, Balance=400.0Account No=ACC-10014, Balance=500.0

Section -3

1. Skapa workspace 2. Skapa project → SOAP-project 3. Intitial wsdl 1. http://thomas-bayer.com/axis2/ 2. http://thomas-bayer.com/axis2/services/BLZService?wsdl 4. klistra in URL:n för wsdl-filen, ändra namn på projektet till ‘Banking Project’ 5. 2 interface blir tydliga 1. version 1.1 och 1.2

and press the ‘play’-button, the request will be sent to this soap-endpoint (SEI): → http://thomas-bayer.com/axis2/services/BLZService

ersätt frågetecknet med en blz-code, han hämtar denna kod från siten : https://blz.bankingdb.com/ - han väljer numret → 20010020

Request (förfrågan, frågan) ser ut så här: ‘submit the soap-request’

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:blz="http://thomas-bayer.com/blz/"> <soapenv:Header/> <soapenv:Body> <blz:getBank> <blz:blz>20010020</blz:blz> </blz:getBank> </soapenv:Body> </soapenv:Envelope>

Response (svaret) från servern ser ut så här: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns1:getBankResponse xmlns:ns1="http://thomas-bayer.com/blz/"> <ns1:details> <ns1:bezeichnung>Postbank (Giro)</ns1:bezeichnung> <ns1:bic>PBNKDEFF200</ns1:bic> <ns1:ort>Hamburg</ns1:ort> <ns1:plz>22280</ns1:plz> </ns1:details> </ns1:getBankResponse> </soapenv:Body> </soapenv:Envelope>

Section 4: SOAPUI Basics

ch 11. 1. Create a TestSuite 2. Create a TestCase 3. How to run them

Start → rightclick on the project, choose ‘New TestSuite’ or mark the project an hit ctrl-t namge din TestSuite till ex. ‘TS01_TestSuite-to-test-Bank_Service’ där TS betyder TestSuite. Varje TestSuite innehåller 1 eller flera ‘TestCase’ Skapa ditt första TestCase - > högerklicka på TestSuite, ‘New Testcase‘ eller ctrl-n Namnge ditt Testcase till ex. ‘TC01_to_test-getBank_operation’ Kika närmare på Testcase, det finns 3 ‘områden’ 1. Test Steps 2. Load Tests 3. Security Tests

A) Dra-och-släpp: dra ‘Request 1’ från din SOAP-binding ovan ned till ‘Test Steps’
    ◦ Du får upp ett pop-up-fönster med flera val
    ◦ Ändra namn till ex : ‘getBank - Request_with_BLZ-code 55010111’

eng. Assertion → Påstående eng. Load Test → Belastningstest

Section 4 : ch12 ‘Cloning TestSuite and TestCases’

section 4 : ch13 ‘Exporting and importing project into workspace’ 1. hur man exporterar ett projekt 1. Högerklicka och välj ‘Export Project’ → sparar som en zip-fil 2. hur man importerar ett existerande projekt till ditt workspace

section 4 : ch14 : Running a Mock-service (might come in handy when the real service is down)

1. What is a mock-service
2. How to start a mock-service
3. Host to call a mock-service

Lokalisera filen på kursidan under ‘Resources’ ladda ned filen. En ZIP-fil → file, import packed projects

I projektet så finns en ‘Mockservice’ , högerklicka och välj ‘Start Minimized’

Nu har du 2 projekt I ditt workspace

1. ‘Banking Project’ : Med dina TestSuites och TestCases
2. ‘Mock Services’  : här har du startat upp en mockservice.

Gå till bank-projektet och test ‘55010111’

Din mockservice, öppna upp den så ser du att den ‘kör på 8088’

  • se vänstra nedre hörnet i SoapUI

Den nya adressen blir : http://localhost:8080/BLZLocalService

stoppa och starta

Välj ditt ‘Banking-Project’

Gå sen till test-case: nu har du en drop-down för dina Endpoints.

Du ser den ‘riktiga’ endpointen och mock-tjänsten.

Du kan bara skapa ett SOAP-project om du har en WSDL-fil (tror jag just nu, det kanske kommer mera info senare)

Section 5: Assertions

Ch 17: Introduction to Xpath (XML Path) Expressions. (bra genomgång av xpath) XPath hämtar information från ett XML-dokument, ‘Used to extract content from XML Document’ extra om ‘XPath Syntax’ →

exempel : sen är det JavaScript exempel på w3schools-sidan (JS är aningen hårigt)

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="cooking">   <title lang="en">Everyday Italian</title>   <author>Giada De Laurentiis</author>   <year>2005</year>   <price>30.00</price> </book>

<book category="children">   <title lang="en">Harry Potter</title>   <author>J K. Rowling</author>   <year>2005</year>   <price>29.99</price> </book>

<book category="web">   <title lang="en">XQuery Kick Start</title>   <author>James McGovern</author>   <author>Per Bothner</author>   <author>Kurt Cagle</author>   <author>James Linn</author>   <author>Vaidyanathan Nagarajan</author>   <year>2003</year>   <price>49.99</price> </book>

<book category="web">   <title lang="en">Learning XML</title>   <author>Erik T. Ray</author>   <year>2003</year>   <price>39.95</price> </book>

</bookstore>

Hans exempel utgår ifrån , han vill hämta ut • //Employee/FullName → hämtar ut fullname • //Employee/FullName/Address/HomeAddress/StreetName

Section 5: ch 18. ‘Writing our first assertion’

öppna upp test-caset ‘SOAP-request’ : 55010111 Du ser: 1. request-window 2. response-window 3. assertion-window → klicka 1. här finns redan 1 : SOAP-Response, add respone är av rätt format. 2. Klicka på PLUS-Tecknet, bläddra ned till ‘XPath Match’ → klicka ‘Add’ 1. 2 fönster (XPath Expresson och Excpected Result) 2. testa ‘bic’ värdet i responsen: det ska vara ‘ESSEDE5F550’ 3. xpath expression – klicka på ‘declare’ 1. ns1 blir ett alias för adressen till servern 2. hur ser XPAth ut till ‘bic’-koden 3. //ns1:getBankRepsonse/ns1:details/ns1:bic → klicka på ‘Test’ 1. testar att din XPath finns … (varnar vid stavfel …) 4. möjligt att sen clona dessa ‘assertions’

Section 5: ch 19. ‘Working with advanced assertions’

den endpoint han utgår ifrån fungerar inte:
http://www.webservicex.net/medicareSupplier.asmx?WSDL starta upp soap-service tjänsten på min maskin : /home/ingimar/Documents/UDEMY-SoapUI-Tutorials/test-server-udemy → soap-services-1.0.0.jar ( java -jar soap-services-1.0.0.jar )

Section 5: ch 20. ‘Assertions – Compliance, Status & Standards’

1. öppna 55010111 , gå till Assertions, välj PLUS
    1. ‘Compliance, Status & Standards’
    2. välj: ‘SOAP Response’ - denna ska komma först av alla dina tester
        1. det är denna som finns tillgänglig från början (Envelope/Body)
    3. ‘schema compliance’
        1. vilka element ska finnas I responsen ?
        2. Du kan också högerklicka I ‘response’-fönstret – validerar mot WSDL-filen

Section 5: ch 21. ‘Xquery Assertion’

https://www.w3schools.com/xml/xquery_intro.asp ◦ What is Xquery? ▪ XQuery is to XML what SQL is to databases. ▪ XQuery is designed to query XML data.

Här utgår han ifrån tjänsten som inte inte funkar : webservicex.net starta upp soap-service tjänsten på min maskin : /home/ingimar/Documents/UDEMY-SoapUI-Tutorials/test-server-udemy → soap-services-1.0.0.jar ( java -jar soap-services-1.0.0.jar ) Medicare Supplier Service • Endpoint: http://localhost:8080/services/medicareSupplierService • WSDL: http://localhost:8080/services/medicareSupplierService?wsdl Tryck på projektet : ‘Add WSDL’ Välj sen ‘GetSupplierByZIPCode’ → öppna request → tryck på ‘submit’ web:zip75070</web:zip>

Skapa en testsuite- skapa test:

1. Addar en ‘Assertion’ ; Välj property content ; Xquery-match 2. tryck på ‘Declare’ 1. mata in följande kod (OBS 1st mellanslag före ‘return’ på rad 5!) 2. 3. { 4. for $supplier in //ns1:SupplierData 5. return data($supplier/ns1:ZipPlus4/text()) 6. } 7. 3. select from current → visar alla zipkoderna I response 1. 75070 75070 75070 75070 75070 75070 75070 75070 75070 75070 75070 75070 2. han ändrar sen rad 5 ovan ; { --- } 1. elementet zip, start-och-slut, samt ‘måsvingen’ 2. return {data($supplier/ns1:ZipPlus4/text())}

<zipcodes> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> <zip>75070</zip> </zipcodes>

Section 5: ch 22. ‘Handling CDATA – Using XPath and Groovy’

från w3schools.com “ A CDATA section contains text that will NOT be parsed by a parser “

‘The term CDATA, meaning character data’ från wikipedia

I hans soap-service tjänst : Airport Service

använd WSDL:n

request med → <web:airportCode>LHR</web:airportCode> när du skickar in denna request så får du tillbaka en CDATA-tag

→ här kommer ‘Rå-data’ I det här fallet en HTML-tabell. För att komma åt data inne i CDATA måste man använda Groovy (https://en.wikipedia.org/wiki/Apache_Groovy)

högerklicka på request och välj ‘add to testcase’

    • skapa testsuite och testcase (TC_Cdata_Test-1)
    • pop-up, klicka på OK
    • lägg till en assertion, välj property content, välj Xpath-match, klicka declare
    • vi ska hämta ut allt I CDATA ( finns I taggen → )

Assertion:

declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.webserviceX.NET'; //ns1:getAirportInformationByAirportCodeResponse/ns1:getAirportInformationByAirportCodeResult/text() tryck sen på ‘select from current’


From WIKIPEDIA

https://sv.wikipedia.org/wiki/SOAP

“ SOAP är en dataterm och avser ett protokoll för utbyte av information i decentraliserade och distribuerade miljöer. SOAP är XML-baserat. Det kan användas tillsammans med flera protokoll, men vanligast är att det används tillsammans med HTTP. Tidigare var SOAP en akronym för Simple Object Access Protocol, men sedan version 1.2 är namnet inte längre en akronym. Tillsammans med UDDI och WSDL är SOAP en av de tre grundstenarna för web services. SOAP är standardiserat av W3C[1] och mycket brett använt på alla plattformar. “


https://www.w3schools.com/xml/xml_soap.asp

wsdl-fil

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<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/"> <wsdl:documentation>BLZService</wsdl:documentation> <wsdl:types> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://thomas-bayer.com/blz/"> <xsd:element name="getBank" type="tns:getBankType"/> <xsd:element name="getBankResponse" type="tns:getBankResponseType"/> <xsd:complexType name="getBankType"> <xsd:sequence> <xsd:element name="blz" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="getBankResponseType"> <xsd:sequence> <xsd:element name="details" type="tns:detailsType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="detailsType"> <xsd:sequence> <xsd:element minOccurs="0" name="bezeichnung" type="xsd:string"/> <xsd:element minOccurs="0" name="bic" type="xsd:string"/> <xsd:element minOccurs="0" name="ort" type="xsd:string"/> <xsd:element minOccurs="0" name="plz" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="getBank"> <wsdl:part name="parameters" element="tns:getBank"/> </wsdl:message> <wsdl:message name="getBankResponse"> <wsdl:part name="parameters" element="tns:getBankResponse"/> </wsdl:message> <wsdl:portType name="BLZServicePortType"> <wsdl:operation name="getBank"> <wsdl:input message="tns:getBank"/> <wsdl:output message="tns:getBankResponse" wsaw:Action="http://thomas-bayer.com/blz/BLZService/getBankResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="BLZServiceSOAP11Binding" type="tns:BLZServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getBank"> <soap:operation style="document" soapAction=""/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="BLZServiceSOAP12Binding" type="tns:BLZServicePortType"> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getBank"> <soap12:operation style="document" soapAction=""/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="BLZServiceHttpBinding" type="tns:BLZServicePortType"> <http:binding verb="POST"/> <wsdl:operation name="getBank"> <http:operation location="BLZService/getBank"/> <wsdl:input> <mime:content part="getBank" type="text/xml"/> </wsdl:input> <wsdl:output> <mime:content part="getBank" type="text/xml"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="BLZService"> <wsdl:port name="BLZServiceSOAP11port_http" binding="tns:BLZServiceSOAP11Binding"> <soap:address location="http://thomas-bayer.com/axis2/services/BLZService"/> </wsdl:port> <wsdl:port name="BLZServiceSOAP12port_http" binding="tns:BLZServiceSOAP12Binding"> <soap12:address location="http://thomas-bayer.com/axis2/services/BLZService"/> </wsdl:port> <wsdl:port name="BLZServiceHttpport" binding="tns:BLZServiceHttpBinding"> <http:address location="http://thomas-bayer.com/axis2/services/BLZService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

⚠️ **GitHub.com Fallback** ⚠️