swagger-tools
Advanced tools
Comparing version 0.1.4 to 0.1.5
24
index.js
@@ -377,2 +377,26 @@ /* | ||
} | ||
if (model.discriminator && _.isUndefined(model.subTypes)) { | ||
errors.push({ | ||
code: 'INVALID_MODEL_DISCRIMINATOR', | ||
message: 'Model cannot have discriminator without subTypes: ' + model.discriminator, | ||
data: model.discriminator, | ||
path: '$.models[\'' + name + '\'].discriminator' | ||
}); | ||
} | ||
if (model.required && _.isArray(model.required)) { | ||
var props = model.properties || {}; | ||
_.each(model.required, function (propName, index) { | ||
if (_.isUndefined(props[propName])) { | ||
errors.push({ | ||
code: 'MISSING_REQUIRED_MODEL_PROPERTY', | ||
message: 'Model requires property but it is not defined: ' + propName, | ||
data: propName, | ||
path: '$.models[\'' + name + '\'].required[' + index + ']' | ||
}); | ||
} | ||
}); | ||
} | ||
}); | ||
@@ -379,0 +403,0 @@ } |
{ | ||
"name": "swagger-tools", | ||
"version": "0.1.4", | ||
"version": "0.1.5", | ||
"description": "Various tools for using and integrating with Swagger.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -42,4 +42,5 @@ /* global describe, it */ | ||
var allSampleFiles = {}; | ||
var invalidModelMiscJson = require('./v1_2-invalid-model-misc.json'); | ||
var invalidModelRefsJson = require('./v1_2-invalid-model-refs.json'); | ||
var invalidModelsJson = require('./v1_2-invalid-models.json'); | ||
var invalidModelInheritanceJson = require('./v1_2-invalid-model-inheritance.json'); | ||
@@ -225,3 +226,3 @@ // Load the sample files from disk | ||
spec.validate(invalidModelsJson).errors.forEach(function (error) { | ||
spec.validate(invalidModelInheritanceJson).errors.forEach(function (error) { | ||
if (error.code === 'DUPLICATE_MODEL_DEFINITION') { | ||
@@ -245,3 +246,3 @@ errors.push(error); | ||
spec.validate(invalidModelsJson).errors.forEach(function (error) { | ||
spec.validate(invalidModelInheritanceJson).errors.forEach(function (error) { | ||
if (error.code === 'CYCLICAL_MODEL_INHERITANCE') { | ||
@@ -271,3 +272,3 @@ errors.push(error); | ||
spec.validate(invalidModelsJson).errors.forEach(function (error) { | ||
spec.validate(invalidModelInheritanceJson).errors.forEach(function (error) { | ||
if (error.code === 'MULTIPLE_MODEL_INHERITANCE') { | ||
@@ -282,3 +283,3 @@ errors.push(error); | ||
message: 'Child model is sub type of multiple models: A && E', | ||
data: invalidModelsJson.models.B, | ||
data: invalidModelInheritanceJson.models.B, | ||
path: '$.models[\'B\']' | ||
@@ -292,3 +293,3 @@ } | ||
spec.validate(invalidModelsJson).errors.forEach(function (error) { | ||
spec.validate(invalidModelInheritanceJson).errors.forEach(function (error) { | ||
if (error.code === 'CHILD_MODEL_REDECLARES_PROPERTY') { | ||
@@ -303,3 +304,3 @@ errors.push(error); | ||
message: 'Child model declares property already declared by ancestor: fId', | ||
data: invalidModelsJson.models.G.properties.fId, | ||
data: invalidModelInheritanceJson.models.G.properties.fId, | ||
path: '$.models[\'G\'].properties[\'fId\']' | ||
@@ -313,3 +314,3 @@ } | ||
spec.validate(invalidModelsJson).warnings.forEach(function (warning) { | ||
spec.validate(invalidModelInheritanceJson).warnings.forEach(function (warning) { | ||
if (warning.code === 'DUPLICATE_MODEL_SUBTYPE_DEFINITION') { | ||
@@ -329,3 +330,41 @@ warnings.push(warning); | ||
}); | ||
it('should return errors for model with invalid discriminator apiDeclaration files', function () { | ||
var errors = []; | ||
spec.validate(invalidModelMiscJson).errors.forEach(function (error) { | ||
if (error.code === 'INVALID_MODEL_DISCRIMINATOR') { | ||
errors.push(error); | ||
} | ||
}); | ||
assert.deepEqual(errors, [ | ||
{ | ||
'code': 'INVALID_MODEL_DISCRIMINATOR', | ||
'message': 'Model cannot have discriminator without subTypes: aId', | ||
'data': 'aId', | ||
'path': '$.models[\'A\'].discriminator' | ||
} | ||
]); | ||
}); | ||
it('should return errors for model with missing required property apiDeclaration files', function () { | ||
var errors = []; | ||
spec.validate(invalidModelMiscJson).errors.forEach(function (error) { | ||
if (error.code === 'MISSING_REQUIRED_MODEL_PROPERTY') { | ||
errors.push(error); | ||
} | ||
}); | ||
assert.deepEqual(errors, [ | ||
{ | ||
'code': 'MISSING_REQUIRED_MODEL_PROPERTY', | ||
'message': 'Model requires property but it is not defined: bId', | ||
'data': 'bId', | ||
'path': '$.models[\'A\'].required[1]' | ||
} | ||
]); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
94413
27
2632