srayner
srayner

Reputation: 1837

How do I test JSON schema in postman using tv4?

This is what i am trying, but it always passes the test even for bad results.

pm.test("Schema is valid", function () {
    var data = pm.response.json();
    var schema = {
        ...
        my schema
        ...
    };
    tv4.validate(data, schema);
});

Upvotes: 6

Views: 10469

Answers (1)

Justin Finkelstein
Justin Finkelstein

Reputation: 472

The reason this doesn't work is (in short) that the underlying library used by Postman (tv4) is no longer maintained. Having come across the problem earlier today, I found a solution:

tv4.validate(data, schema, false, true)

The latter two parameters are checkRecursive and banUnknownProperties. Setting these two flags as shown above make the validation work as expected.

You may also find this code snippet useful, which reports any validation errors via the console:

pm.test("Response body is valid", function() {
  var data = JSON.parse(responseBody);
  var valid = tv4.validate(data, schema, false, true);
  if (valid !== true) {
      console.log(tv4.error);
  }
  pm.expect(valid).to.be.true;
});

Upvotes: 12

Related Questions