Co-authored-by: Niels Lohmann <niels.lohmann@mongodb.com> GitOrigin-RevId: 367679c83d10a0ae7c312d545da5130573694d82
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
/**
|
|
* Test edge cases for the schema validation level 'validated'
|
|
*/
|
|
import "jstests/multiVersion/libs/multi_rs.js";
|
|
|
|
import {ReplSetTest} from "jstests/libs/replsettest.js";
|
|
|
|
const rst = new ReplSetTest({
|
|
nodes: 2,
|
|
nodeOptions: {binVersion: "latest", setParameter: {featureFlagValidatedValidationLevel: true}},
|
|
});
|
|
rst.startSet();
|
|
rst.initiate();
|
|
|
|
const db = rst.getPrimary().getDB("test");
|
|
|
|
assert.commandWorked(
|
|
db.createCollection("test", {validator: {a: 1}, validationAction: "error", validationLevel: "validated"}),
|
|
);
|
|
|
|
// Can't downgrade FCV to lastLTS when collection has validated validation level.
|
|
assert.commandFailedWithCode(
|
|
rst.getPrimary().adminCommand({setFeatureCompatibilityVersion: lastLTSFCV, confirm: true}),
|
|
ErrorCodes.CannotDowngrade,
|
|
);
|
|
|
|
assert.commandWorked(db.runCommand({collMod: "test", validationLevel: "strict"}));
|
|
|
|
// After removing validated validation level, we should eventually be able to downgrade
|
|
assert.soon(() => {
|
|
assert.commandWorked(rst.getPrimary().adminCommand({setFeatureCompatibilityVersion: lastLTSFCV, confirm: true}));
|
|
return true;
|
|
});
|
|
|
|
rst.stopSet();
|