Dejme tomu, že se vaše platforma skládá z několika komponent komunikují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řebovali zkoušet integrovat. Co teď? Vytvořte si mock v Soap UI a případě potřeby naskriptujte v Groovy.

Chtěl bych ukázat případovou studii certifikační autority, které přes SOAP pošlete Certificate signing request (CSR) a ona vrátí podepsaný certifikát, což se bude dít voláním Open SSL z příkazové řádky. (Soap UI samozřejmě podporuje i mock REST webových služeb).

Statický response

Nebudu popisovat úplné základy Soap UI, předpokládám, že už jste ho někdy viděli, případně že se rychle zorientujete 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říkazové řádku nebo zabalit do WARu a nasadit na servlet container.

Dynamický response

Se statickým response si asi vždy nevystačíme. Můžete ho ovšem použít jako template a propsat ho požadovaný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 rozparsovat díky následujícímu kódu.

Skriptování v Groovy

Soap UI má solidní dokumentaci UI i Groovy API, ale chybí jakýsi mezistupeň. Jak se v tom vyznat? V Soap UI je několik implicitních proměnných se zřejmým jménem.

  • log
  • context
  • requestContext
  • mockRequest
  • mockResponse

Vezměme si proměnou mockRequest, ta reprezentuje třídu WsdlMockRequest, která má metodu #getRequestContent(). V Groovy pak píšeme <pre>def content = mockRequest.requestContent</pre> Nejsme pochopitelně 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říkazové řádky (díky String#execute()).

Výsledný Groovy skript

Následuje výsledný skript, který z requestu rozparsuje CSR, pomocí Open SSL vytvoří certifikát a ten vrátí v response.

Kompletní Soap UI projekt je k dispozici na bitbucket.