Files
mongo/jstests/core/query/invalid_db_name.js
Joshua Siegel 169f8dc283 SERVER-111817 Add tag to exclude tests from timeseries CRUD suite (#44113)
GitOrigin-RevId: a3ab3b89275fa89c9824f6af467d56d605096159
2025-11-21 18:08:16 +00:00

64 lines
2.1 KiB
JavaScript

// Ensures that invalid DB names are reported as write errors
//
// Can't create a collection with invalid database name
// @tags: [
// assumes_no_implicit_collection_creation_on_get_collection,
// # The passthrough creates collections implicitly.
// exclude_from_timeseries_crud_passthrough,
// ]
import {FixtureHelpers} from "jstests/libs/fixture_helpers.js";
function testInvalidDBName(invalidName) {
const isMongos = FixtureHelpers.isMongos(db);
const errMsg = `'${invalidName}' database with invalid name was created`;
let invalidDB = db.getSiblingDB("NonExistentDB");
// This is a hack to bypass invalid database name checking by the DB constructor
invalidDB._name = invalidName;
function validateState() {
// Ensure that no database was created
let dbList = db.getSiblingDB("admin").runCommand({listDatabases: 1}).databases;
dbList.forEach(function (dbInfo) {
assert.neq(invalidName, dbInfo.name, errMsg);
});
// On sharding ensure no entry was added to config.databases
if (isMongos) {
assert.eq(db.getSiblingDB("config").databases.countDocuments({_id: invalidName}), 0, errMsg);
}
}
function testCommandFailsAndValidate(command) {
assert.commandFailedWithCode(command(), ErrorCodes.InvalidNamespace, errMsg);
validateState();
}
function testWriteErrorAndValidate(command) {
assert.writeError(command(), errMsg);
validateState();
}
testWriteErrorAndValidate(() => {
return invalidDB.test.insert({x: 1});
});
testCommandFailsAndValidate(() => {
return invalidDB.createCollection("test");
});
testCommandFailsAndValidate(() => {
return invalidDB.createView("a", "b", [{$match: {year: 1}}]);
});
if (isMongos) {
testCommandFailsAndValidate(() => {
return sh.shardCollection(invalidName + ".test", {a: 1});
});
testCommandFailsAndValidate(() => {
return sh.enableSharding(invalidName);
});
}
}
testInvalidDBName("Invalid DB Name");
testInvalidDBName("$invalidDBName");