rittenhop-ghost/versions/5.94.2/node_modules/bson-objectid/test/test.js

143 lines
4.8 KiB
JavaScript
Raw Normal View History

var should = require("should");
var ObjectID = require("../");
describe("ObjectIDs", function() {
it("should construct with no arguments", function() {
var o = new ObjectID();
o.should.be.instanceof(ObjectID);
});
it("should have an `id` property", function() {
var o = new ObjectID();
o.should.have.property("id");
o.id.should.have.length(12);
ObjectID.isValid(o.id).should.be.ok;
});
it("should construct with a `time` argument", function() {
var time = 1414093117;
var o = new ObjectID(time);
o.should.be.instanceof(ObjectID);
o.toHexString().substr(0,8).should.eql("5449593d");
});
it("should construct with a `buffer` argument", function() {
var buffer = Buffer.from([ 84, 73, 90, 217, 76, 147, 71, 33, 237, 231, 109, 144 ]);
var o = new ObjectID(buffer);
o.should.be.instanceof(ObjectID);
o.toHexString().should.eql("54495ad94c934721ede76d90");
});
it("should not be valid with invalid buffer", function() {
var buffer = Buffer.from('hello');
ObjectID.isValid(buffer).should.not.be.ok;
});
it("should construct with a `hexString` argument", function() {
var hexString = "54495ad94c934721ede76d90";
var o = new ObjectID(hexString);
o.should.be.instanceof(ObjectID);
o.toHexString().should.eql(hexString);
});
it("should construct with a `idString` argument", function() {
var idString = "TIZÙL“G!íçm";
var o = new ObjectID(idString);
o.should.be.instanceof(ObjectID);
o.id.should.eql(idString);
});
it("should construct with `ObjectID.createFromTime(time)` and should have 0's at the end", function() {
var time = 1414093117;
var o = ObjectID.createFromTime(time);
o.should.be.instanceof(ObjectID);
o.toHexString().should.eql("5449593d0000000000000000");
});
it("should construct with `ObjectID.createFromHexString(hexString)`", function() {
var hexString = "54495ad94c934721ede76d90";
var o = ObjectID.createFromHexString(hexString);
o.should.be.instanceof(ObjectID);
o.toHexString().should.eql(hexString);
});
it("should correctly retrieve timestamp", function() {
var testDate = new Date();
var object1 = new ObjectID();
var seconds1 = Math.floor(testDate.getTime()/1000);
var seconds2 = Math.floor(object1.getTimestamp().getTime()/1000);
seconds1.should.eql(seconds2);
});
it("should validate valid hex strings", function() {
ObjectID.isValid("54495ad94c934721ede76d90").should.be.ok;
ObjectID.isValid("aaaaaaaaaaaaaaaaaaaaaaaa").should.be.ok;
ObjectID.isValid("AAAAAAAAAAAAAAAAAAAAAAAA").should.be.ok;
ObjectID.isValid("000000000000000000000000").should.be.ok;
});
it("should validate legit ObjectID objects", function() {
var o = new ObjectID();
ObjectID.isValid(o).should.be.ok;
});
it("should invalidate bad strings", function() {
ObjectID.isValid().should.not.be.ok;
ObjectID.isValid(null).should.not.be.ok;
ObjectID.isValid({}).should.not.be.ok;
ObjectID.isValid([]).should.not.be.ok;
ObjectID.isValid(true).should.not.be.ok;
ObjectID.isValid("invalid").should.not.be.ok;
ObjectID.isValid("").should.not.be.ok;
ObjectID.isValid("zzzzzzzzzzzzzzzzzzzzzzzz").should.not.be.ok;
ObjectID.isValid("54495-ad94c934721ede76d9").should.not.be.ok;
});
it("should evaluate equality with .equals()", function() {
var id1 = ObjectID();
var id2 = ObjectID(id1.toHexString());
(id1.equals(id2)).should.be.true;
});
it("should evaluate equality with via deepEqual", function() {
var id1 = ObjectID();
var id2 = ObjectID(id1.toHexString());
id1.should.eql(id2);
var id3 = ObjectID();
id1.should.not.eql(id3, "id1 is not the same as id3");
});
it("should convert to a hex string for JSON.stringify", function() {
var hexString = "54495ad94c934721ede76d90";
var o = {o:new ObjectID(hexString)};
var strngd = JSON.stringify(o);
strngd.should.eql('{"o":"54495ad94c934721ede76d90"}');
});
it("should convert to a hex string for ObjectID.toString()", function() {
var hexString = "54495ad94c934721ede76d90";
var o = new ObjectID(hexString);
o.toString().should.eql("54495ad94c934721ede76d90");
});
it("should throw and error if constructing with an invalid string", function() {
(function(){
var o = new ObjectID("tttttttttttttttttttttttt");
}).should.throw();
});
it("should not throw an error for objects without toString", function() {
var obj = Object.create({}, { toString: { value: false, writeable: false } });
obj.toString.should.not.be.ok;
ObjectID.isValid(obj).should.not.be.ok;
});
it("should use Buffer when _Buffer is undefined", function() {
var obj = { id: Buffer.from("54495ad94c934721ede76d90"), toHexString: () => "" };
ObjectID.isValid(obj).should.be.true;
});
});