SOAPUI, autentikointi ja Groovy

Testasin taannoin SOAPUI:lla REST rajapintoja suorituskykytestimielessä. Kun rajapinnat olivat julkisia, homma on hyvin helppoa. Mutta kun rajapinta onkin autentikoinnin takana, edessä on perinteinen testityökalujen haaste: Miten kirjautua sisään siten että seuraavat kutsut menevät samaan sessioon?

No sehän riippuu autentikoinnin tavasta. SOAP UI:sta on kirjoiteltu artikkeleita joissa käydään läpi miten siihen voi tehdä mm. BASIC/DIGEST autentikoinnilla säädöt paikalleen, ja samoin on OAUTH-standardille palikoita. Mutta yleinen ratkaisu miten siirtää tavaraa pyynnöstä toiseen oli tässä yksinkertaisin. Tempun salaisuus on tehdä test caseen erillinen askel, jossa varastoidaan autentikoinnin tieto kontekstiin, josta sen voi myöhemmin pukata haluamaansa paikkaan, esim. http headeriin tms.

Eli sanotaan että askel 1 on määritetty olemaan REST kutsu nimellä ’login’, joka lähettää tunnusta ja salasanaa, ja vastaanottaa tokenin, esimerkissä nimellä ’identityToken’. Seuraava askel on avata SOAP UI:ssa test case, ja lisätä sinne uusi askel.(Add Step – Groovy Script).

Tänne kirjoitellaan koodi joka imaisee tokenin vastauksesta, esim. tähän tapaan:

// This script will grab authentication token and store it in testcase properties so it can be used later

xmlResponse = new XmlSlurper().parseText(context.expand( ’${login#ResponseAsXml}’ ))

assert xmlResponse.sessionId != null
assert xmlResponse.sessionId.toString().length() > 0
log.info(’Got ’ + xmlResponse.sessionId)
testRunner.testCase.setPropertyValue( ”authToken”, xmlResponse.sessionId.toString())

Eli pari huomiota tästä esimerkistä:

  • Tässä hyödynnetään SOAPUI:n ominaisuutta auto-konvertoida json xml muotoon – eli vastaus voi olla xml tai jsonia, kaikki käy
  • context.expand viittaa login-stepin sisältöön xml:ksi rutistettuna
  • Pseudo-xml kenttiin viitataan xmlResponse.xxx tapaan kuten yllä
  • log.info on tässä vain esimerkin vuoksi, sillä saa tulostusta
  • testcasen propertyyn lisätään authToken niminen arvo jossa on sessionid varastoituna

Tätä voi sitten vuorostaan käyttää missä haluaakin, esim. header kentässä tai asserteissa, tähän tapaan:

${#TestCase#authToken}

SOAPUI ja LOADUI ovat ihan metkoja kapistuksia joilla aika helposti pyöräyttää vähän integraatio/api/suorituskykytestejä.

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s