124 lines
4.4 KiB
JavaScript
124 lines
4.4 KiB
JavaScript
describe("Fingerprint", function(){
|
|
beforeEach(function() {
|
|
this.addMatchers({
|
|
toBeInstanceOf : function(expected) {
|
|
return this.actual instanceof expected && this.actual.length > 0;
|
|
},
|
|
toBeA: function(expected) {
|
|
return typeof this.actual === expected;
|
|
}
|
|
});
|
|
});
|
|
describe("new Fingerprint", function(){
|
|
it("Creates a new instance of Fingerprint", function(){
|
|
expect(new Fingerprint()).not.toBeNull();
|
|
});
|
|
|
|
it("Accepts a custom hashing function as argument", function(){
|
|
var hasher = function(){return 31;};
|
|
expect(new Fingerprint(hasher)).not.toBeNull();
|
|
});
|
|
|
|
it("Accepts a custom hasing function as options argument", function(){
|
|
var hasher = function(){return 31;};
|
|
expect(new Fingerprint({hasher: hasher})).not.toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("#get", function(){
|
|
it("Calculates fingerprint with built-in hashing if no custom hashing is given", function(){
|
|
var fingerprint = new Fingerprint();
|
|
spyOn(fingerprint, 'murmurhash3_32_gc');
|
|
fingerprint.get();
|
|
expect(fingerprint.murmurhash3_32_gc).toHaveBeenCalled();
|
|
});
|
|
|
|
it("Calculates fingerprint with custom hashing if it is given as an argument", function(){
|
|
var hasher = function(){return 'abcdef';};
|
|
var fingerprint = new Fingerprint(hasher);
|
|
expect(fingerprint.get()).toEqual('abcdef');
|
|
});
|
|
|
|
it("Calculates fingerprint with custom hashing if it is given as an options argument", function(){
|
|
var hasher = function(){return 'abcdef';};
|
|
var fingerprint = new Fingerprint({hasher: hasher});
|
|
expect(fingerprint.get()).toEqual('abcdef');
|
|
});
|
|
|
|
it('Calculates fingerprint with canvas fingerprinting if it is said to do so', function(){
|
|
var fp = new Fingerprint({canvas: true});
|
|
spyOn(fp, 'getCanvasFingerprint');
|
|
fp.get();
|
|
expect(fp.getCanvasFingerprint).toHaveBeenCalled();
|
|
});
|
|
|
|
|
|
it('Does not try to use canvas fingerprinting when not told to(version 1)', function(){
|
|
var fp = new Fingerprint({canvas: false});
|
|
spyOn(fp, 'getCanvasFingerprint');
|
|
fp.get();
|
|
expect(fp.getCanvasFingerprint).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('Does not try to use canvas fingerprinting when not told to(version 2)', function(){
|
|
var fp = new Fingerprint();
|
|
spyOn(fp, 'getCanvasFingerprint');
|
|
fp.get();
|
|
expect(fp.getCanvasFingerprint).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('Calculates fingerprint with ActiveX fingerprinting if it is said to do so', function(){
|
|
var fp = new Fingerprint({ie_activex: true});
|
|
spyOn(fp, 'isIE').andReturn(true);
|
|
spyOn(fp, 'getIEPluginsString');
|
|
fp.get();
|
|
expect(fp.getIEPluginsString).toHaveBeenCalled();
|
|
});
|
|
|
|
|
|
it('Does not try to use ActiveX fingerprinting when not told to(version 1)', function(){
|
|
var fp = new Fingerprint({ie_activex: false});
|
|
spyOn(fp, 'getIEPluginsString');
|
|
fp.get();
|
|
expect(fp.getIEPluginsString).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('Does not try to use ActiveX fingerprinting when not told to(version 2)', function(){
|
|
var fp = new Fingerprint();
|
|
spyOn(fp, 'getIEPluginsString');
|
|
fp.get();
|
|
expect(fp.getIEPluginsString).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('Calculates fingerprint accessing screen resolution if it is said to do so', function(){
|
|
var fp = new Fingerprint({screen_resolution: true});
|
|
spyOn(fp, 'getScreenResolution');
|
|
fp.get();
|
|
expect(fp.getScreenResolution).toHaveBeenCalled();
|
|
});
|
|
|
|
it('Does not try to use screen resolution when not told to', function(){
|
|
var fp = new Fingerprint();
|
|
spyOn(fp, 'getScreenResolution');
|
|
fp.get();
|
|
expect(fp.getScreenResolution).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("Returns a number as a fingerprint value when used with a built-in hashing function", function(){
|
|
var fingerprint = new Fingerprint();
|
|
expect(fingerprint.get()).toBeA('number');
|
|
});
|
|
|
|
it('Returns a string from getCanvasFingerprint function', function(){
|
|
var fp = new Fingerprint({canvas: true});
|
|
expect(fp.getCanvasFingerprint()).toBeA('string');
|
|
});
|
|
|
|
it('Does not fail when document.body is null', function(){
|
|
var body = document.body.parentNode.removeChild(document.body);
|
|
var fingerprint = new Fingerprint();
|
|
expect(fingerprint.get()).toBeA('number');
|
|
document.body = body;
|
|
});
|
|
});
|
|
}); |