62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
/**
|
|
* Tests passing API parameters into 'getMore' commands.
|
|
* @tags: [requires_getmore, requires_fcv_50]
|
|
*/
|
|
|
|
(function() {
|
|
"use strict";
|
|
|
|
const testDB = db.getSiblingDB(jsTestName());
|
|
const testColl = testDB.getCollection("test");
|
|
testColl.drop();
|
|
|
|
const nDocs = 2;
|
|
const bulk = testColl.initializeUnorderedBulkOp();
|
|
for (let i = 0; i < nDocs; i++) {
|
|
bulk.insert({_id: i, x: i});
|
|
}
|
|
assert.commandWorked(bulk.execute());
|
|
|
|
const apiParamCombos = [
|
|
{},
|
|
{apiVersion: "1"},
|
|
{apiVersion: "1", apiDeprecationErrors: true},
|
|
{apiVersion: "1", apiDeprecationErrors: false},
|
|
{apiVersion: "1", apiStrict: true},
|
|
{apiVersion: "1", apiStrict: true, apiDeprecationErrors: true},
|
|
{apiVersion: "1", apiStrict: true, apiDeprecationErrors: false},
|
|
{apiVersion: "1", apiStrict: false},
|
|
{apiVersion: "1", apiStrict: false, apiDeprecationErrors: true},
|
|
{apiVersion: "1", apiStrict: false, apiDeprecationErrors: false}
|
|
];
|
|
|
|
function addApiParams(obj, params) {
|
|
return Object.assign(Object.assign({}, obj), params);
|
|
}
|
|
|
|
for (const initParams of apiParamCombos) {
|
|
for (const continueParams of apiParamCombos) {
|
|
const findCmd = addApiParams({find: testColl.getName(), batchSize: 1}, initParams);
|
|
const cursorId = assert.commandWorked(testDB.runCommand(findCmd)).cursor.id;
|
|
// TODO (SERVER-56550): Remove "!continueParams.apiVersion".
|
|
const compatibleParams = !continueParams.apiVersion || continueParams === initParams;
|
|
|
|
const getMoreCmd =
|
|
addApiParams({getMore: cursorId, collection: testColl.getName()}, continueParams);
|
|
|
|
jsTestLog(`Initial params: ${tojson(initParams)}, ` +
|
|
`continuing params: ${tojson(continueParams)}, ` +
|
|
`compatible: ${tojson(compatibleParams)}, ` +
|
|
`command: ${tojson(getMoreCmd)}`);
|
|
const reply = testDB.runCommand(getMoreCmd);
|
|
jsTestLog(`Reply: ${tojson(reply)}`);
|
|
|
|
if (compatibleParams) {
|
|
assert.commandWorked(reply);
|
|
} else {
|
|
assert.commandFailedWithCode(reply, ErrorCodes.APIMismatchError);
|
|
}
|
|
}
|
|
}
|
|
})();
|