Palveluväylän testipalvelut
Artikkelissa kerrotaan Palveluväylän testipalveluista, joiden avulla voit varmistaa liityntäpalvelimen asennuksen onnistumisen ja testata X-Road -tiedonsiirtoprotokollan mukaisten SOAP-sanomien ja REST-kyselyiden lähettämistä ja vastausten käsittelyä.
Liityntäpalvelimen asiakasrajapinta, jonka kautta Palveluväylän palvelujen kutsuminen tapahtuu, on muotoa https://{host}/. Osoitteen {host}-osa tulee korvata organisaation oman liityntäpalvelimen host-nimellä.
HUOM! IP-osoitteen käyttö kutsuissa ei ole suositeltavaa, sillä se aiheuttaa varmenteisiin liittyviä ongelmia. Ongelmia ilmenee, mikäli liityntäpalvelimen kutsussa käytetty host-nimi ei vastaa liityntäpalvelimen varmenteessa olevaa host-nimeä.
Tutustu myös seuraaviin teknisiin aineistoihin:
- esimerkkipalveluiden lähdekoodiAvautuu uuteen ikkunaan.
- REST- ja SOAP- testipalveluiden WSDL-kuvaus Liityntäkatalogissa.Avautuu uuteen ikkunaan.
Soap-sanomien testaus
Liityntäpalvelimelle lähetettävien pyyntöjen Content-Type-otsikkotiedon arvon tulee olla text/xml ja HTTP-metodin on oltava POST.
Liityntäpalvelimen osoite: https://{host}/
Method: POST
Content-Type: text/xml
getRandom
GetRandom-palvelu ei sisällä kutsuparametreja. Se palauttaa vastauksenaan satunnaisen kokonaisluvun 0:n ja 100:n väliltä.
Testaaminen Curl-komentoriviohjelmalla
Voit käyttää getRandom-palvelua testaamiseen helposti myös Curl-komentoriviohjelman avulla antamalla seuraavan komennon:
curl -k -d @getRandom.xml --header "Content-Type: text/xml" -X POST https://{host}/Curl-komennossa on käytetty k-optiotaAvautuu uuteen ikkunaan.. Tällöin kutsutun palvelun varmennetta ei verifioida.
getRandom-palvelun kutsumiseen käytettävä SOAP-sanoma
Alla on esitetty getRandom-palvelun kutsumiseen käytettävä SOAP-sanoma. Client-lohkon X:illä merkityt sisällöt on korvattava oman organisaatiotunnuksen alle lisätyn alijärjestelmän tiedoilla. Lisäksi -elementtiin on laitettava arvoksi se Palveluväylän ympäristö (FI-DEV, FI-TEST tai FI), jossa SOAP-sanomaa halutaan testata.
Kysely
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xro="http://x-road.eu/xsd/xroad.xsd"
xmlns:iden="http://x-road.eu/xsd/identifiers"
>
<soapenv:Header>
<xro:client iden:objectType="SUBSYSTEM">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>XXXX</iden:memberClass>
<iden:memberCode>XXXX</iden:memberCode>
<iden:subsystemCode>XXXX</iden:subsystemCode>
</xro:client>
<xro:service iden:objectType="SERVICE">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>GOV</iden:memberClass>
<iden:memberCode>0245437-2</iden:memberCode>
<iden:subsystemCode>TestService</iden:subsystemCode>
<iden:serviceCode>getRandom</iden:serviceCode>
<iden:serviceVersion>v1</iden:serviceVersion>
</xro:service>
<xro:id>ID11234</xro:id>
<xro:userId>test</xro:userId>
<xro:protocolVersion>4.0</xro:protocolVersion>
</soapenv:Header>
<soapenv:Body>
<prod:getRandom xmlns:prod="http://test.x-road.global/producer" />
</soapenv:Body>
</soapenv:Envelope>
Esimerkkivastaus:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:iden="http://x-road.eu/xsd/identifiers" xmlns:xro="http://x-road.eu/xsd/xroad.xsd">
<soapenv:Header>
<xro:client iden:objectType="SUBSYSTEM">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>XXXX</iden:memberClass>
<iden:memberCode>XXXX</iden:memberCode>
<iden:subsystemCode>XXXX</iden:subsystemCode>
</xro:client>
<xro:service iden:objectType="SERVICE">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>GOV</iden:memberClass>
<iden:memberCode>0245437-2</iden:memberCode>
<iden:subsystemCode>TestService</iden:subsystemCode>
<iden:serviceCode>getRandom</iden:serviceCode>
<iden:serviceVersion>v1</iden:serviceVersion>
</xro:service>
<xro:id>ID11234</xro:id>
<xro:requestHash algorithmId="http://www.w3.org/2001/04/xmlenc#sha512">
Doc7YT1KNpgupOTaQP+6yN2n+wEJntryCPa6i40zGIRudZf3HSgrwiZuQuB+pKJwRx2V5rsr0L/jOmaV9o9n8Q==
</xro:requestHash>
<xro:userId>test</xro:userId>
<xro:protocolVersion>4.0</xro:protocolVersion>
</soapenv:Header>
<soapenv:Body>
<ts1:getRandomResponse xmlns:ts1="http://test.x-road.global/producer">
<ts1:data>42</ts1:data>
</ts1:getRandomResponse>
</soapenv:Body>
</soapenv:Envelope>
helloService
HelloService-palvelu sisältää name-kutsuparametrin ja palauttaa vastauksenaan name-parametrin arvona annetulle nimelle kohdistetun tervehdyksen.
Testaaminen Curl-komentoriviohjelmalla
Voit käyttää helloService-palvelua testaamiseen helposti myös Curl-komentoriviohjelman avulla antamalla seuraavan komennon:
curl -k -d @helloService.xml --header "Content-Type: text/xml" -X POST https://{host}/Curl-komennossa on käytetty k-optiotaAvautuu uuteen ikkunaan.. Tällöin kutsutun palvelun varmennetta ei verifioida.
helloService-palvelun kutsumiseen käytettävä SOAP-sanoma
Alla on esitetty helloService-palvelun kutsumiseen käytettävä SOAP-sanoma. Client-lohkon X:illä merkityt sisällöt on korvattava oman organisaatiotunnuksen alle lisätyn alijärjestelmän tiedoilla. Lisäksi -elementtiin on laitettava arvoksi se Palveluväylän ympäristö (FI-DEV, FI-TEST tai FI), jossa SOAP-sanomaa halutaan testata.
Kysely:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xro="http://x-road.eu/xsd/xroad.xsd"
xmlns:iden="http://x-road.eu/xsd/identifiers"
>
<soapenv:Header>
<xro:client iden:objectType="SUBSYSTEM">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>XXXX</iden:memberClass>
<iden:memberCode>XXXX</iden:memberCode>
<iden:subsystemCode>XXXX</iden:subsystemCode>
</xro:client>
<xro:service iden:objectType="SERVICE">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>GOV</iden:memberClass>
<iden:memberCode>0245437-2</iden:memberCode>
<iden:subsystemCode>TestService</iden:subsystemCode>
<iden:serviceCode>helloService</iden:serviceCode>
<iden:serviceVersion>v1</iden:serviceVersion>
</xro:service>
<xro:id>ID11234</xro:id>
<xro:userId>test</xro:userId>
<xro:protocolVersion>4.0</xro:protocolVersion>
</soapenv:Header>
<soapenv:Body>
<prod:helloService xmlns:prod="http://test.x-road.global/producer">
<prod:name>Erkki Esimerkki</prod:name>
</prod:helloService>
</soapenv:Body>
</soapenv:Envelope>
Esimerkkivastaus:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:iden="http://x-road.eu/xsd/identifiers" xmlns:xro="http://x-road.eu/xsd/xroad.xsd">
<soapenv:Header>
<xro:client iden:objectType="SUBSYSTEM">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>XXXX</iden:memberClass>
<iden:memberCode>XXXX</iden:memberCode>
<iden:subsystemCode>XXXX</iden:subsystemCode>
</xro:client>
<xro:service iden:objectType="SERVICE">
<iden:xRoadInstance>FI-TEST</iden:xRoadInstance>
<iden:memberClass>GOV</iden:memberClass>
<iden:memberCode>0245437-2</iden:memberCode>
<iden:subsystemCode>TestService</iden:subsystemCode>
<iden:serviceCode>helloService</iden:serviceCode>
<iden:serviceVersion>v1</iden:serviceVersion>
</xro:service>
<xro:id>ID11234</xro:id>
<xro:requestHash algorithmId="http://www.w3.org/2001/04/xmlenc#sha512">
NcckU0J6OXU88GxhsNH/4/CZlunAscUl+Xi65CBQe6dO+yiSubms1RssbLRSarh/LfwaGkJuiIQrm7fARRtoFg==
</xro:requestHash>
<xro:userId>test</xro:userId>
<xro:protocolVersion>4.0</xro:protocolVersion>
</soapenv:Header>
<soapenv:Body>
<ts1:helloServiceResponse xmlns:ts1="http://test.x-road.global/producer">
<ts1:message>Hello Erkki Esimerkki! Greetings from adapter server!</ts1:message>
</ts1:helloServiceResponse>
</soapenv:Body>
</soapenv:Envelope>
REST-palveluiden testaaminen
GET rest-test/random
rest-test/random-palvelu ei sisällä kutsuparametreja. Se palauttaa vastauksenaan satunnaisen kokonaisluvun 0:n ja 100:n väliltä.
Testaaminen Curl-komentoriviohjelmalla
Voit käyttää palvelun testaamiseen helposti curl komentoriviohjelmaa ja alla olevaa esimerkkikyselyä. Esimerkissä clientin X:illä merkityt sisällöt on korvattava oman organisaatiotunnuksen alle lisätyn alijärjestelmän tiedoilla. Esimerkissä on käytetty FI-TEST ympäristöä, tämän tilalla voi käyttää sen palveluväyläympäristön nimeä (FI-DEV, FI-TEST tai FI), jossa REST-sanomaa halutaan testata.
Curl-komennossa on käytetty -k-optiotaAvautuu uuteen ikkunaan.. Tällöin kutsutun palvelun varmennetta ei verifioida.
Kysely:
curl -k -H 'X-Road-Client: FI-TEST/XXXX/XXXX/XXXX' -H 'accept: application/json' -i
https://{host}/r1/FI-TEST/GOV/0245437-2/TestService/rest-test/randomEsimerkkivastaus
Esimerkkivastaus:
HTTP/1.1 200
Date: Wed, 13 Dec 2023 09:53:47 GMT
Content-Type: application/json
x-road-id: FI-TEST-e6821729-a81d-49a8-a807-56a9bec0c022
x-road-client: FI-TEST/XXXX/XXXX/XXXX
x-road-service: FI-TEST/GOV/0245437-2/TestService/rest-test
x-road-request-id: 558e8c41-fbe9-4370-941f-b802f11e5615
x-road-request-hash:
wH7FYkzHW1T/1mBaGgTXAjZV1kBCJkjmxBa58JntVZ2Imc4qmjXOHoY4WHO5uZczGxxuWJqVKsCiBkfEmm9ytg==
Content-Length: 11
{"data":11}
GET rest-test/hello
rest-test/hello-palvelulle voi antaa query-parametrina name-arvon. Palvelu palauttaa vastauksena name-parametrin arvona annetulle nimelle kohdistetun tervehdyksen.
Testaaminen Curl-komentoriviohjelmalla
Voit käyttää palvelun testaamiseen curl-komentoriviohjelmaa ja alla olevaa esimerkkikyselyä. Esimerkeissä clientin X:llä merkityt sisällöt on korvattava oman organisaatiotunnuksen alle lisätyn alijärjestelmän tiedoilla.
Esimerkissä on käytetty FI-TEST ympäristöä ja tämän tilalle voi käyttää se Palveluväylän ympäristön nimeä (FI-DEV, FI-TEST ja FI), jossa REST-sanomaa halutaan testata. Curl-komennossa on käytetty -k-optiotaAvautuu uuteen ikkunaan.. Tällöin kutsutun palvelun varmennetta ei verifioida.
Kysely:
curl -k -H 'X-Road-Client: FI-TEST/XXXX/XXXX/XXXX' -H 'accept: application/json' -i
https://{host}/r1/FI-TEST/GOV/0245437-2/TestService/rest-test/hello?name=Erkki%20Esimerkki
Esimerkkivastaus:
HTTP/1.1 200
Date: Wed, 13 Dec 2023 12:05:34 GMT
Content-Type: application/json
x-road-id: FI-TEST-0cc79ae0-2cce-4593-9345-8297a8585d5f
x-road-client: FI-TEST/GOV/0245437-2/TestClient
x-road-service: FI-TEST/GOV/0245437-2/TestService/rest-test
x-road-request-id: 5a703f7b-2cfc-4e94-8e52-c9b749631a2f
x-road-request-hash:
slYoi7VWZdpPBiPawebuBMbkFRP29cGylqkZb2lxYdOxc5xPb5cKn6MWnLyJ2UaJchJ5PQ83/uX8bfDgdzeGIw==
Content-Length: 67
{"message":"Hello Erkki Esimerkki! Greetings from adapter server!"}