assert Action

Used in FLAT tests to assert expected results.

Syntax

<assert>
[
[ "$status", 200, "status is 200" ]
]
</assert>

The body is a JSON array of assertions. An assertion is an array itself, with up to three values:

  • Expression: as string (see eval); (required)

  • Expected result: a literal value (string, number, boolean, or null) or an object with compare flags (see below); (optional, default: true)

  • Message: String literal to be included in output of failed tests; (optional)

Note that the expression must be a string. You can use template syntax, but the resulting array of assertions must still contain a string as the expression parameter.

Examples

<assert>
[
[ "$foo", "bar", "…" ],
[ "$request/headers/authorization", null, "No Authorization header is set" ],
[ "$response", "OK" ],
[ "json-parse($response)/user", "alice" ],
[ "$status", 201, "got 201 - created" ],
[ "true()", true, "for sure!" ]
]
</assert>

Compare Flags

The expected value (second value) can be an object that defines one or more compare flags:

  • file: read wanted text from a golden file

  • mode: either text or json. json mode validates JSON syntax in both expected and actual result; compares JSON in compact (un-pretty) formatting.

  • contains: a string that must be contained in the expression result

  • pattern: a regular expression pattern (with delimiters and optional modifiers) that the expression result must match.

<assert>
[
[ "$response", {"file": "login.golden", "mode": "json"} ]
]
</assert>
<assert>
[
[ "$s1", {"contains": "foo bar"} ],
[ "$s2", {"pattern": "#^[a-z ]+$#i"} ]
]
</assert>

The Testing Templates recipe provides a full example.

See also