summaryrefslogtreecommitdiff
path: root/jstests/core/json_schema/dependencies.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/json_schema/dependencies.js')
-rw-r--r--jstests/core/json_schema/dependencies.js203
1 files changed, 94 insertions, 109 deletions
diff --git a/jstests/core/json_schema/dependencies.js b/jstests/core/json_schema/dependencies.js
index 442976aa5fc..ffcd917889b 100644
--- a/jstests/core/json_schema/dependencies.js
+++ b/jstests/core/json_schema/dependencies.js
@@ -4,122 +4,107 @@
* Tests for the JSON Schema 'dependencies' keyword.
*/
(function() {
- "use strict";
+"use strict";
- load("jstests/libs/assert_schema_match.js");
+load("jstests/libs/assert_schema_match.js");
- const coll = db.jstests_schema_dependencies;
+const coll = db.jstests_schema_dependencies;
- // Top-level schema dependency.
- assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {}, true);
- assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {foo: 1, bar: 1}, true);
- assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {bar: 1}, true);
- assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {foo: 1}, false);
+// Top-level schema dependency.
+assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {}, true);
+assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {foo: 1, bar: 1}, true);
+assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {bar: 1}, true);
+assertSchemaMatch(coll, {dependencies: {foo: {required: ["bar"]}}}, {foo: 1}, false);
- assertSchemaMatch(
- coll,
- {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
- {},
- true);
- assertSchemaMatch(
- coll,
- {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
- {bar: 1},
- true);
- assertSchemaMatch(
- coll,
- {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
- {foo: 1, bar: 1},
- true);
- assertSchemaMatch(
- coll,
- {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
- {foo: 1, bar: 1, baz: 1},
- false);
- assertSchemaMatch(
- coll,
- {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
- {foo: 1, bar: 1, baz: "str"},
- true);
+assertSchemaMatch(coll,
+ {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
+ {},
+ true);
+assertSchemaMatch(coll,
+ {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
+ {bar: 1},
+ true);
+assertSchemaMatch(coll,
+ {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
+ {foo: 1, bar: 1},
+ true);
+assertSchemaMatch(coll,
+ {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
+ {foo: 1, bar: 1, baz: 1},
+ false);
+assertSchemaMatch(coll,
+ {dependencies: {foo: {required: ["bar"], properties: {baz: {type: "string"}}}}},
+ {foo: 1, bar: 1, baz: "str"},
+ true);
- // Top-level property dependency.
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {}, true);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {bar: 1}, true);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {baz: 1}, true);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {bar: 1, baz: 1}, true);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1}, false);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, bar: 1}, false);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, baz: 1}, false);
- assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, bar: 1, baz: 1}, true);
+// Top-level property dependency.
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {}, true);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {bar: 1}, true);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {baz: 1}, true);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {bar: 1, baz: 1}, true);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1}, false);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, bar: 1}, false);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, baz: 1}, false);
+assertSchemaMatch(coll, {dependencies: {foo: ["bar", "baz"]}}, {foo: 1, bar: 1, baz: 1}, true);
- // Nested schema dependency.
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {}, true);
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: 1}, true);
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: {}}, true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}},
- {obj: {bar: 1}},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}},
- {obj: {foo: 1}},
- false);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}},
- {obj: {foo: 1, bar: 1}},
- true);
+// Nested schema dependency.
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: 1}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: {}}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: {bar: 1}}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}}, {obj: {foo: 1}}, false);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {foo: {required: ["bar"]}}}}},
+ {obj: {foo: 1, bar: 1}},
+ true);
- // Nested property dependency.
- assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {}, true);
- assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: 1}, true);
- assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {}}, true);
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {bar: 1}}, true);
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {foo: 1}}, false);
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {foo: 1, bar: 1}}, true);
+// Nested property dependency.
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {}, true);
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: 1}, true);
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {}}, true);
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {bar: 1}}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {foo: 1}}, false);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {foo: ["bar"]}}}}, {obj: {foo: 1, bar: 1}}, true);
- // Nested property dependency and nested schema dependency.
- assertSchemaMatch(
- coll, {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}}, {}, true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: 1},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {}},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {b: 1, d: 1}},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {a: 1, b: 1, c: 1}},
- false);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {a: 1, c: 0, d: 1}},
- false);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {b: 1, c: 1, d: 1}},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {a: 1, b: 1, d: 1}},
- true);
- assertSchemaMatch(coll,
- {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
- {obj: {a: 1, b: 1, c: 1, d: 1}},
- true);
+// Nested property dependency and nested schema dependency.
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}}, {}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}}, {obj: 1}, true);
+assertSchemaMatch(
+ coll, {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}}, {obj: {}}, true);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {b: 1, d: 1}},
+ true);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {a: 1, b: 1, c: 1}},
+ false);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {a: 1, c: 0, d: 1}},
+ false);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {b: 1, c: 1, d: 1}},
+ true);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {a: 1, b: 1, d: 1}},
+ true);
+assertSchemaMatch(coll,
+ {properties: {obj: {dependencies: {a: ["b"], c: {required: ["d"]}}}}},
+ {obj: {a: 1, b: 1, c: 1, d: 1}},
+ true);
- // Empty dependencies matches everything.
- assertSchemaMatch(coll, {dependencies: {}}, {}, true);
- assertSchemaMatch(coll, {properties: {obj: {dependencies: {}}}}, {obj: {}}, true);
+// Empty dependencies matches everything.
+assertSchemaMatch(coll, {dependencies: {}}, {}, true);
+assertSchemaMatch(coll, {properties: {obj: {dependencies: {}}}}, {obj: {}}, true);
}());