Mock Web Service v Soap UI a Groovy
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.