ref.json 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. [
  2. {
  3. "description": "root pointer ref",
  4. "schema": {
  5. "properties": {
  6. "foo": {"$ref": "#"}
  7. },
  8. "additionalProperties": false
  9. },
  10. "tests": [
  11. {
  12. "description": "match",
  13. "data": {"foo": false},
  14. "valid": true
  15. },
  16. {
  17. "description": "recursive match",
  18. "data": {"foo": {"foo": false}},
  19. "valid": true
  20. },
  21. {
  22. "description": "mismatch",
  23. "data": {"bar": false},
  24. "valid": false
  25. },
  26. {
  27. "description": "recursive mismatch",
  28. "data": {"foo": {"bar": false}},
  29. "valid": false
  30. }
  31. ]
  32. },
  33. {
  34. "description": "relative pointer ref to object",
  35. "schema": {
  36. "properties": {
  37. "foo": {"type": "integer"},
  38. "bar": {"$ref": "#/properties/foo"}
  39. }
  40. },
  41. "tests": [
  42. {
  43. "description": "match",
  44. "data": {"bar": 3},
  45. "valid": true
  46. },
  47. {
  48. "description": "mismatch",
  49. "data": {"bar": true},
  50. "valid": false
  51. }
  52. ]
  53. },
  54. {
  55. "description": "relative pointer ref to array",
  56. "schema": {
  57. "items": [
  58. {"type": "integer"},
  59. {"$ref": "#/items/0"}
  60. ]
  61. },
  62. "tests": [
  63. {
  64. "description": "match array",
  65. "data": [1, 2],
  66. "valid": true
  67. },
  68. {
  69. "description": "mismatch array",
  70. "data": [1, "foo"],
  71. "valid": false
  72. }
  73. ]
  74. },
  75. {
  76. "description": "escaped pointer ref",
  77. "schema": {
  78. "tilda~field": {"type": "integer"},
  79. "slash/field": {"type": "integer"},
  80. "percent%field": {"type": "integer"},
  81. "properties": {
  82. "tilda": {"$ref": "#/tilda~0field"},
  83. "slash": {"$ref": "#/slash~1field"},
  84. "percent": {"$ref": "#/percent%25field"}
  85. }
  86. },
  87. "tests": [
  88. {
  89. "description": "slash invalid",
  90. "data": {"slash": "aoeu"},
  91. "valid": false
  92. },
  93. {
  94. "description": "tilda invalid",
  95. "data": {"tilda": "aoeu"},
  96. "valid": false
  97. },
  98. {
  99. "description": "percent invalid",
  100. "data": {"percent": "aoeu"},
  101. "valid": false
  102. },
  103. {
  104. "description": "slash valid",
  105. "data": {"slash": 123},
  106. "valid": true
  107. },
  108. {
  109. "description": "tilda valid",
  110. "data": {"tilda": 123},
  111. "valid": true
  112. },
  113. {
  114. "description": "percent valid",
  115. "data": {"percent": 123},
  116. "valid": true
  117. }
  118. ]
  119. },
  120. {
  121. "description": "nested refs",
  122. "schema": {
  123. "definitions": {
  124. "a": {"type": "integer"},
  125. "b": {"$ref": "#/definitions/a"},
  126. "c": {"$ref": "#/definitions/b"}
  127. },
  128. "$ref": "#/definitions/c"
  129. },
  130. "tests": [
  131. {
  132. "description": "nested ref valid",
  133. "data": 5,
  134. "valid": true
  135. },
  136. {
  137. "description": "nested ref invalid",
  138. "data": "a",
  139. "valid": false
  140. }
  141. ]
  142. },
  143. {
  144. "description": "remote ref, containing refs itself",
  145. "schema": {"$ref": "http://json-schema.org/draft-03/schema#"},
  146. "tests": [
  147. {
  148. "description": "remote ref valid",
  149. "data": {"items": {"type": "integer"}},
  150. "valid": true
  151. },
  152. {
  153. "description": "remote ref invalid",
  154. "data": {"items": {"type": 1}},
  155. "valid": false
  156. }
  157. ]
  158. }
  159. ]