Here's a simple mock for a REST service - a basic "status" service which returns a JSON.
The rules below that implement it are defined in the "specs" realm, so we need to point to that project:
val HOST ="http://specs.dieselapps.com"="http://specs.dieselapps.com"
Testing the default binding:
send::
msg snakk.json (url ="${HOST}/diesel/react/service1/"...)
expect:: (payload[="status"] is "ok")
send::
msg snakk.json (url ="${HOST}/diesel/react/service1/"..., snakkHttpOptions :JSON)
expect:: (snakk[="response"][="code"] is 501)
This is a custom binding:
send::
msg snakk.json (url ="${HOST}/diesel/mock/myStatus"...)
expect:: (payload[="status"] is "ok")
send::
msg snakk.json (url ="${HOST}/diesel/mock/getAccount"...)
expect:: (payload[="someStats"] is "456")
send::
msg snakk.json (url ="${HOST}/diesel/mock/getAccount"...)
expect:: (payload[="accountId"] is "67")
send::
msg snakk.text (url ="${HOST}/diesel/mock/account2/7"..., snakkHttpOptions :JSON)
expect:: (snakk[="response"][="code"] is 501)
Match an explicit diesel.flow.return
send::
msg snakk.text (url ="${HOST}/diesel/mock/account2/4"..., snakkHttpOptions :JSON)
expect:: (snakk[="response"][="code"] is 404)
expect:: (snakk[="response"][="headers"][="myheader"] is "mine")
send::
msg ctx.echo (snakk.response.headers)
Not match anything - payload is empty
send::
msg snakk.text (url ="${HOST}/diesel/mock/account2as"..., snakkHttpOptions :JSON)
expect:: (payload is empty)
expect:: (snakk[="response"][="code"] is 501)
send::
msg snakk.text (url ="${HOST}/diesel/react/msg.notex"..., snakkHttpOptions :JSON)
expect:: (payload is empty)
expect:: (snakk[="response"][="code"] is 501)
send::
msg snakk.json (url ="${HOST}/diesel/mock/account2/7"...)
expect:: (payload[="accountId"] is "78")
send::
msg snakk.json (url ="${HOST}/diesel/rest/path2/path"...)
expect:: (payload[="accountId"] is "path1/path2/89")
Testing a POST with a JSON body to a service mock:
send::
msg snakk.json (url ="${HOST}/diesel/react/service1/"..., verb="POST", body :JSON)
send::
msg ctx.echo (payload.status)
expect:: (payload[="status"] is "ok")
Testing these directly - without going through an http request (we simulate the initial message):
send::
msg diesel.rest (path="/getAccount/45")
You need to log in to post a comment!