Example usage of making HTTP calls to get results in JSON notation and using JsonPath to validate the response's content.
First a simple GET request.
script | json http test | |||
get from | http://echo.jsontest.com/key/value/one/two | |||
show | response | { "one": "two", "key": "value" } | ||
check | json path | $.key | value | |
check | json path | $.one | two |
Then a POST, showing the multiple notations of JsonPath expressions supported (notice that adding the '$.' prefix is not required).
script | json http test | |||
post | json={"key":"value" |
to | http://validate.jsontest.com/ | |
show | response | { "error_info": "This error came from the org.json reference parser.", "error": "Expected a ',' or '}' at 15 [character 16 line 1]", "object_or_array": "object", "validate": false } | ||
check | json path | $.validate | false | |
check | json path | validate | false | |
check | json path | .validate | false | |
check | json path | $['validate'] | false | |
check | json path | ['validate'] | false |
Next another POST, showing that expressions resulting in a boolean or integer value are recognized and can be used accordingly by the script table. Furthermore expressions returning more than a single member are supported.
script | json http test | |||||
post | json={"key":"value"} |
to | http://validate.jsontest.com/ | |||
show | response | { "size": 1, "parse_time_nanoseconds": 20721, "object_or_array": "object", "validate": true, "empty": false } | ||||
check | json path | validate | true | |||
ensure | json path | validate | ||||
check | json path | size | 1>0 | |||
check | json path count | $.* | 5>=5 | |||
show | all json path matches | * |
| |||
check | element | 4 | of json path | $.* | false |
Next another POST, posting of url-enoded values defined in the wiki.
script | json http test | |||
set value | {"key":"value 2"} | for | json | |
post values to | http://validate.jsontest.com/ | |||
show | response | { "size": 1, "parse_time_nanoseconds": 18966, "object_or_array": "object", "validate": true, "empty": false } | ||
check | json path | validate | true |
Next a PUT example
script | json http test | |||
put | json={"id": 1, "title": "foo", "body": "bar", "userId": 1} |
to | http://jsonplaceholder.typicode.com/posts/1/ | |
show | response | <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8"> <title>Application Error</title> <style media="screen"> html,body,iframe { margin: 0; padding: 0; } html,body { height: 100%; overflow: hidden; } iframe { width: 100%; height: 100%; border: 0; } </style> </head> <body> <iframe src="//www.herokucdn.com/error-pages/application-error.html"></iframe> </body> </html> | ||
check | json path | id | [null] expected [>0] | |
check | json path count | $.* | 0>=2 | |
show | all json path matches | * | null |