Files
mongo/jstests/core/ddl/drop_database.js
ppolato 99051bcbef SERVER-99870 Minor refactoring of jstests/core/ddl/drop_database.js (#31617)
GitOrigin-RevId: 79ec3e96e8996860b17962e4ee2ee07acbc03c50
2025-01-28 17:16:21 +00:00

51 lines
1.5 KiB
JavaScript

/**
* Test that a db does not exist after it is dropped.
*
* @tags: [
* # listDatabases with explicit filter on db names doesn't work with the simulate_atlas_proxy
* # override.
* simulate_atlas_proxy_incompatible,
* ]
*/
let testDB = db.getSiblingDB('jstests_dropdb');
const dbName = testDB.getName();
const collNames = ['coll1', 'coll2', 'coll3'];
function listDatabases(options) {
return assert
.commandWorked(db.adminCommand(Object.assign({listDatabases: 1, nameOnly: true}, options)))
.databases;
}
function assertNamespacesDoNotExist() {
assert.eq(0, listDatabases({filter: {name: dbName}}).length);
assert.eq(0, testDB.getCollectionNames());
}
function assertNamespacesExist() {
assert.eq(1,
listDatabases({filter: {name: dbName}}).length,
'database ' + dbName + ' not found in ' + tojson(listDatabases()));
const dbCollections = testDB.getCollectionNames();
assert.sameMembers(dbCollections, collNames);
}
jsTest.log('dropDatabase cleans data and metadata about itself and its child collections');
for (let i = 0; i < collNames.length; i++) {
for (let j = 0; j < collNames.length; j++) {
const collName = collNames[(i + j) % collNames.length];
assert.commandWorked(testDB[collName].insert({x: 1}));
}
assertNamespacesExist();
assert.commandWorked(testDB.dropDatabase());
assertNamespacesDoNotExist();
}
jsTest.log('dropDatabase is idempotent');
{
assert.commandWorked(testDB.dropDatabase());
assertNamespacesDoNotExist();
}