Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

const base64url =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
function run_test() {
_("Make sure makeGUID makes guids of the right length/characters");
_("Create a bunch of guids to make sure they don't conflict");
let guids = [];
for (let i = 0; i < 1000; i++) {
let newGuid = Utils.makeGUID();
_("Generated " + newGuid);
// Verify that the GUID's length is correct, even when it's URL encoded.
Assert.equal(newGuid.length, 12);
Assert.equal(encodeURIComponent(newGuid).length, 12);
// Verify that the GUID only contains base64url characters
Assert.ok(
Array.prototype.every.call(newGuid, function (chr) {
return base64url.includes(chr);
})
);
// Verify that Utils.checkGUID() correctly identifies them as valid.
Assert.ok(Utils.checkGUID(newGuid));
// Verify uniqueness within our sample of 1000. This could cause random
// failures, but they should be extremely rare. Otherwise we'd have a
// problem with GUID collisions.
Assert.ok(
guids.every(function (g) {
return g != newGuid;
})
);
guids.push(newGuid);
}
_("Make sure checkGUID fails for invalid GUIDs");
Assert.ok(!Utils.checkGUID(undefined));
Assert.ok(!Utils.checkGUID(null));
Assert.ok(!Utils.checkGUID(""));
Assert.ok(!Utils.checkGUID("blergh"));
Assert.ok(!Utils.checkGUID("ThisGUIDisWayTooLong"));
Assert.ok(!Utils.checkGUID("Invalid!!!!!"));
}