Dejme tomu, že se vaše platforma skládá z několika kompo­nent komuni­kujících přes webové služby, ale některá z nich není ještě vyvinutá nebo je třeba kvůli omezení sítě nedostupná. Vy byste přesto potře­bo­vali zkoušet integ­ro­vat. Co teď? Vytvořte si mock v Soap UI a případě potřeby naskrip­tujte v Groovy.

Chtěl bych ukázat přípa­dovou studii certi­fi­kační autority, které přes SOAP pošlete Certi­fi­cate signing request (CSR) a ona vrátí podepsaný certi­fikát, což se bude dít voláním Open SSL z příka­zové řádky. (Soap UI samozřejmě podpo­ruje i mock REST webových služeb).

Statický response

Nebudu popisovat úplné základy Soap UI, předpok­ládám, že už jste ho někdy viděli, případně že se rychle zorien­tu­jete i díky tutoriálu. Z WSDL vytvoříte nový projekt. Tady bych chtěl opět zdůraznit contract first přístup. Pokud máte WSDL, tak vývojáři serveru ani klienta nejsou blokováni, na nic nečekají a můžou rovnou vyvíjet alespoň vůči mocku. V Soap UI projektu tedy vytvoříte mock service.

Mock lze spouštět ručně ze Soap UI, z příka­zové řádku nebo zabalit do WARu a nasadit na servlet container.

Dynamický response

Se statickým response si asi vždy nevys­tač­íme. Můžete ho ovšem použít jako template a propsat ho požado­vanými hodnotami.

Ovšem takhle vracíte stejnou response pro všechny requesty. Ale my máme pokaždé jiné CSR, které chceme podepsat.

Nicméně dokážeme ho rozpar­sovat díky násle­dujícímu kódu.

Skriptování v Groovy

Soap UI má solidní dokumen­taci UI i Groovy API, ale chybí jakýsi mezis­tu­peň. Jak se v tom vyznat? V Soap UI je několik impli­cit­ních proměn­ných se zřejmým jménem.

  • log
  • context
  • requestContext
  • mockRequest
  • mockResponse

Vezměme si proměnou mockRequest, ta repre­zen­tuje třídu WsdlMockRequest, která má metodu #getRequestContent(). V Groovy pak píšeme <p­re>def content = mockReques­t.reques­t­Con­ten­t&l­t;/p­re> Nejsme pocho­pi­telně omezeni Soap UI API, lze použít veškeré možnosti Groovy a volat tak i programy (jako v našem případě Open SSL) z příka­zové řádky (díky String#execute()).

Výsledný Groovy skript

Násle­duje výsledný skript, který z requestu rozpar­suje CSR, pomocí Open SSL vytvoří certi­fikát a ten vrátí v response.

Kompletní Soap UI projekt je k dispo­zici na bitbucket.