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.
100 lines
3.1 KiB
JavaScript
100 lines
3.1 KiB
JavaScript
// Test that we support all the same BSON types throughout API Version 1.
|
|
// @tags: [
|
|
// ]
|
|
|
|
const OID = new ObjectId();
|
|
const DATE = new Date();
|
|
|
|
const DOC = {
|
|
x01: .01,
|
|
x02: "string",
|
|
x03: {a: 1},
|
|
x04: ["array"],
|
|
x05: {
|
|
x00: BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
|
|
x01: BinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
|
|
x02: BinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c="),
|
|
x03: BinData(3, "OEJTfmD8twzaj/LPKLIVkA=="),
|
|
x04: BinData(4, "OEJTfmD8twzaj/LPKLIVkA=="),
|
|
x05: BinData(5, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
|
|
x06: BinData(6, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
|
|
},
|
|
x06: undefined,
|
|
x07: OID,
|
|
x08: false,
|
|
x09: DATE,
|
|
x0A: null,
|
|
x0B: /^abc/,
|
|
x0C: new DBPointer("test", OID),
|
|
x0D: Code("function() { return true; }"),
|
|
x0E: "Symbol does not exist in javascript",
|
|
x0F: Code("function() { return true; }", {scope: true}),
|
|
x10: NumberInt(1),
|
|
x11: Timestamp(0, 1234),
|
|
x12: NumberLong(1),
|
|
x13: NumberDecimal(1.0),
|
|
xFF: MinKey(),
|
|
x7F: MaxKey(),
|
|
};
|
|
|
|
(function() {
|
|
"use strict";
|
|
|
|
let test = function(db) {
|
|
// We have to create a collection until _configsvrCreateDatabase is in API Version 1.
|
|
assert.commandWorked(db.createCollection("collection"));
|
|
assert.commandWorked(
|
|
db.runCommand({insert: "collection", documents: [DOC], apiVersion: "1", apiStrict: true}));
|
|
const val = db.collection.findOne();
|
|
|
|
assert.eq(val.x01, .01);
|
|
assert.eq(val.x02, "string");
|
|
assert.eq(val.x03, {a: 1});
|
|
assert.eq(val.x04, ["array"]);
|
|
|
|
assert.eq(val.x05.x00, BinData(0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
|
assert.eq(val.x05.x01, BinData(1, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
|
assert.eq(val.x05.x02,
|
|
BinData(2, "KwAAAFRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2c="));
|
|
assert.eq(val.x05.x03, BinData(3, "OEJTfmD8twzaj/LPKLIVkA=="));
|
|
assert.eq(val.x05.x04, BinData(4, "OEJTfmD8twzaj/LPKLIVkA=="));
|
|
assert.eq(val.x05.x05, BinData(5, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
|
assert.eq(val.x05.x06, BinData(6, "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
|
|
|
|
assert.eq(val.x06, undefined);
|
|
assert.eq(val.x07, OID);
|
|
assert.eq(val.x08, false);
|
|
assert.eq(val.x09, DATE);
|
|
assert.eq(val.x0A, null);
|
|
assert.eq(val.x0B, /^abc/);
|
|
assert.eq(val.x0C, new DBPointer("test", OID));
|
|
assert.eq(val.x0D, Code("function() { return true; }"));
|
|
assert.eq(val.x0E, "Symbol does not exist in javascript");
|
|
assert.eq(val.x0F, Code("function() { return true; }", {scope: true}));
|
|
assert.eq(val.x10, NumberInt(1));
|
|
assert.eq(val.x11, Timestamp(0, 1234));
|
|
assert.eq(val.x12, NumberLong(1));
|
|
assert.eq(val.x13, NumberDecimal(1.0));
|
|
assert.eq(val.xFF, MinKey());
|
|
assert.eq(val.x7F, MaxKey());
|
|
};
|
|
|
|
// Testing against a sharded cluster.
|
|
{
|
|
const st = new ShardingTest({shards: 1});
|
|
const db = st.s.getDB("test");
|
|
test(db);
|
|
st.stop();
|
|
}
|
|
|
|
// Testing against a replica set.
|
|
{
|
|
const rst = new ReplSetTest({nodes: 3});
|
|
rst.startSet();
|
|
rst.initiate();
|
|
const db = rst.getPrimary().getDB("test");
|
|
test(db);
|
|
rst.stopSet();
|
|
}
|
|
})();
|