Files
mongo/jstests/core/bindata_eq.js
Adi Zaimi 9c650b1b90 SERVER-54187 Have valid BinData in tests
Some tests had invalid type 2, 3, and 4 BinData which was causing
some python scripts to fail during testing. This checkin replaces
the invalid data with valid ones so there should be no more of
such failures.
2021-08-23 15:54:17 +00:00

80 lines
3.0 KiB
JavaScript

/**
* This test ensures that basic eq predicates work with a BinData value.
*/
(function() {
'use strict';
const coll = db.jstests_bindata_find_eq;
function testEqOnlyBinData(subtype, blob, expectedCount) {
assert.eq(expectedCount, coll.find({"a": {$eq: BinData(subtype, blob)}}).itcount());
}
coll.drop();
const docs = [
{a: BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(0, "AQAAAAEBAAVlbl9VSwAAAAAAAAhv")},
{a: BinData(0, "AQAAAAEBAAVlbl9VSwAAAAAAAAhz")},
{a: BinData(0, "////////////////////////////")},
{a: BinData(0, "ZG9n")},
{a: BinData(0, "JA4A8gAxqTwciCuF5GGzAA==")},
{a: BinData(1, "JA4A8gAxqTwciCuF5GGzAA==")},
{a: BinData(0, "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==")},
{a: BinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c=")}
];
assert.commandWorked(coll.insert(docs));
// Test basic queries.
testEqOnlyBinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 1);
testEqOnlyBinData(0, "AQAAAAEBAAVlbl9VSwAAAAAAAAhv", 1);
testEqOnlyBinData(0, "AQAAAAEBAAVlbl9VSwAAAAAAAAhz", 1);
testEqOnlyBinData(0, "////////////////////////////", 1);
testEqOnlyBinData(0, "ZG9n", 1);
testEqOnlyBinData(0, "JA4A8gAxqTwciCuF5GGzAA==", 1);
testEqOnlyBinData(1, "JA4A8gAxqTwciCuF5GGzAA==", 1);
testEqOnlyBinData(0, "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==", 1);
testEqOnlyBinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c=", 1);
// Test BinData records with different subtypes.
const docs2 = [
{a: BinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c=")},
{a: BinData(3, "OEJTfmD8twzaj/LPKLIVkA==")},
{a: BinData(4, "OEJTfmD8twzaj/LPKLIVkA==")},
{a: BinData(5, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(6, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
];
assert.commandWorked(coll.insert(docs2));
testEqOnlyBinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 1);
testEqOnlyBinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c=", 2);
testEqOnlyBinData(3, "OEJTfmD8twzaj/LPKLIVkA==", 1);
testEqOnlyBinData(4, "OEJTfmD8twzaj/LPKLIVkA==", 1);
testEqOnlyBinData(5, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 1);
testEqOnlyBinData(6, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 1);
// Test queries with subtypes that yield empty results.
testEqOnlyBinData(8, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0);
testEqOnlyBinData(9, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 0);
// Test queries that return nothing.
testEqOnlyBinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAB", 0);
testEqOnlyBinData(0, "", 0);
// Test that we can find multiple docs with the same BinData.
const duplicates = [
{a: BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")},
{a: BinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA")}
];
assert.commandWorked(coll.insert(duplicates));
testEqOnlyBinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 3);
testEqOnlyBinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA", 3);
assert(coll.drop());
})();