Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. var options = {
  2. allErrors: true,
  3. verbose: true,
  4. removeAdditional: false,
  5. processCode: require('js-beautify').js_beautify // for debugging, beautify generated source code
  6. };
  7.  
  8. {
  9. "swagger": "2.0",
  10. "info": {
  11. "title": "Test API",
  12. "version": "1.0"
  13. },
  14. "host": "example.com",
  15. "paths": {},
  16. "definitions": {
  17. "container": {
  18. "type": "object",
  19. "properties": {
  20. "name": {
  21. "type": "string"
  22. },
  23. "items": {
  24. "type": "array",
  25. "items": {
  26. "oneOf": [
  27. {
  28. "$ref": "#/definitions/item_ref"
  29. },
  30. {
  31. "$ref": "#/definitions/item_id"
  32. }
  33. ]
  34. }
  35. }
  36. }
  37. },
  38. "item_base": {
  39. "type": "object",
  40. "properties": {
  41. "name": {
  42. "type": "string"
  43. }
  44. }
  45. },
  46. "item_ref": {
  47. "allOf": [
  48. {
  49. "type": "object",
  50. "properties": {
  51. "reference": {
  52. "type": "string"
  53. },
  54. "price": {
  55. "type": "number"
  56. }
  57. }
  58. },
  59. {
  60. "$ref": "#/definitions/item_base"
  61. }
  62. ]
  63. },
  64. "item_id": {
  65. "allOf": [
  66. {
  67. "type": "object",
  68. "properties": {
  69. "id": {
  70. "type": "string"
  71. }
  72. }
  73. },
  74. {
  75. "$ref": "#/definitions/item_base"
  76. }
  77. ]
  78. }
  79. }
  80. }
  81.  
  82. {
  83. name: 'name of the resource',
  84. items: [
  85. {
  86. name: 'name of the item_id',
  87. id: '123'
  88. }
  89. ]
  90. }
  91.  
  92. var validateModel = function(modelName, model)
  93. {
  94. var SwaggerSchema = require('./test.json');
  95.  
  96. var options = {
  97. allErrors: true,
  98. verbose: true,
  99. removeAdditional: false,
  100. processCode: require('js-beautify').js_beautify // for debugging, beautify generated source code
  101. };
  102.  
  103. var ajv = require('ajv')(options);
  104. ajv.addSchema(SwaggerSchema, 'swagger.json');
  105.  
  106. var modelDef = { $ref: 'swagger.json#/definitions/' + modelName };
  107. var result = ajv.validate(modelDef, model);
  108.  
  109. return {
  110. valid: result,
  111. errors: ajv.errors
  112. }
  113. };
  114.  
  115. var itemId = {
  116. name: 'name of the item_id',
  117. id: '123'
  118. };
  119.  
  120. var itemRef = {
  121. name: 'name of the item_reference',
  122. reference: 'ABCD',
  123. price: 12.34
  124. };
  125.  
  126. var container = {
  127. name: 'name of the resource',
  128. items: [
  129. itemId,
  130. // itemRef
  131. ]
  132. };
  133.  
  134. var validationItemId = validateModel("item_id", itemId);
  135. if(!validationItemId.valid)
  136. {
  137. var errorMsg = validationItemId.errors;
  138. var foo = 3;
  139. }
  140. var validationItemRef = validateModel("item_ref", itemRef);
  141. if(!validationItemRef.valid)
  142. {
  143. var errorMsg = validationItemRef.errors;
  144. var foo = 3;
  145. }
  146.  
  147. var validationContainer = validateModel("container", container);
  148. if(!validationContainer.valid)
  149. {
  150. var errorMsg = validationContainer.errors; // should match exactly one schema in oneOf
  151. var foo = 3;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement