json-schema-test-data-generator
v0.1.1
Published
Generate sample test data based on JSON schema
Downloads
988
Maintainers
Readme
json-schema-test-data-generator
Not overly sophisticated utility that generates sample test data based on JSON schema.
Installation
npm install json-schema-test-data-generator
Usage
Module exports a single function that takes a JSON schema and outputs an array of test data objects based on the JSON schema covering various (but not all) combinations to check against. The output objects are in format:
{
valid: // boolean: whether the test data is valid against the schema or not
data: // object: the actual data
message: // string: a descriptive message for the test data
property: // string|undefined: if available, the key / property at test
}
Sample usage:
var generate = require('json-schema-test-data-generator');
var schema = {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength:": 5
},
"active": {
"type": "boolean"
},
"email": {
"type": "string",
"format": "email"
},
"accountNumber": {
"type": "number"
}
},
"required": ["name", "email"]
}
console.dir(generate(schema));
Output:
[ { valid: true,
data: { name: 'Lorem', email: '[email protected]' },
message: 'should work with all required properties' },
{ valid: true,
data:
{ name: 'in Excepteur',
email: '[email protected]',
accountNumber: -45141884.82426107 },
message: 'should work without optional property: active',
property: 'active' },
{ valid: true,
data:
{ name: 'consectetur amet dolor',
email: '[email protected]' },
message: 'should work without optional property: accountNumber',
property: 'accountNumber' },
{ valid: false,
data: { email: '[email protected]' },
message: 'should not work without required property: name',
property: 'name' },
{ valid: false,
data: { name: 'labore', active: true },
message: 'should not work without required property: email',
property: 'email' },
{ valid: false,
data: { name: true, email: '[email protected]' },
message: 'should not work with \'name\' of type \'boolean\'',
property: 'name' },
{ valid: false,
data:
{ name: '4x%u',
email: '[email protected]' },
message: 'should not pass validation for minLength of property: name',
property: 'name' },
{ valid: false,
data:
{ name: 'deserunt nostrud dolore ea',
email: '[email protected]',
active: 5313786068074496 },
message: 'should not work with \'active\' of type \'integer\'',
property: 'active' },
{ valid: false,
data:
{ name: 'cillum ',
email: null,
accountNumber: 67113212.30977774 },
message: 'should not work with \'email\' of type \'null\'',
property: 'email' },
{ valid: false,
data: { name: 'anim laborum quis occaecat', email: '8WruHF' },
message: 'should not pass validation for format of property: email',
property: 'email' },
{ valid: false,
data:
{ name: 'veniam nulla ut',
email: '[email protected]',
accountNumber: 'sn0S2H9j)]' },
message: 'should not work with \'accountNumber\' of type \'string\'',
property: 'accountNumber' } ]
API Reference
generate(schema) ⇒ Array
Generates test data based on JSON schema
Kind: global function
Returns: Array - Array of test data objects
| Param | Type | Description | | --- | --- | --- | | schema | Object | Fully expanded (no $ref) JSON Schema |
CLI
jstdgen schema.json > testdata.json