mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-19 03:48:18 -07:00
171 lines
5.5 KiB
JavaScript
171 lines
5.5 KiB
JavaScript
|
"use strict";
|
||
|
describe("Fingerprint2", function () {
|
||
|
describe("new", function () {
|
||
|
it("creates a new instance of FP2", function () {
|
||
|
expect(new Fingerprint2()).not.toBeNull();
|
||
|
});
|
||
|
|
||
|
it("accepts an empty options object", function () {
|
||
|
expect(new Fingerprint2({})).not.toBeNull();
|
||
|
});
|
||
|
|
||
|
it("uses default options", function () {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
expect(fp2.options.swfContainerId).toEqual("fingerprintjs2");
|
||
|
expect(fp2.options.swfPath).toEqual("flash/compiled/FontList.swf");
|
||
|
});
|
||
|
|
||
|
it("allows to override default options", function () {
|
||
|
var fp2 = new Fingerprint2({swfPath: "newpath"});
|
||
|
expect(fp2.options.swfContainerId).toEqual("fingerprintjs2");
|
||
|
expect(fp2.options.swfPath).toEqual("newpath");
|
||
|
});
|
||
|
|
||
|
it("allows to add new options", function () {
|
||
|
var fp2 = new Fingerprint2({excludeUserAgent: true});
|
||
|
expect(fp2.options.swfContainerId).toEqual("fingerprintjs2");
|
||
|
expect(fp2.options.swfPath).toEqual("flash/compiled/FontList.swf");
|
||
|
expect(fp2.options.excludeUserAgent).toBe(true);
|
||
|
});
|
||
|
|
||
|
describe("sortPluginsFor", function () {
|
||
|
it("has default value", function (){
|
||
|
var fp2 = new Fingerprint2();
|
||
|
expect(fp2.options.sortPluginsFor).toEqual([/palemoon/i]);
|
||
|
});
|
||
|
|
||
|
it("allows to set new array of regexes", function () {
|
||
|
var fp2 = new Fingerprint2({sortPluginsFor: [/firefox/i, /chrome/i]});
|
||
|
expect(fp2.options.sortPluginsFor).toEqual([/firefox/i, /chrome/i]);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("get", function () {
|
||
|
describe("default options", function () {
|
||
|
it("calculates fingerprint", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
fp2.get(function(result){
|
||
|
expect(result).toMatch(/^[0-9a-f]{32}$/i);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("does not try calling flash font detection", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
spyOn(fp2, "flashFontsKey");
|
||
|
fp2.get(function(result) {
|
||
|
expect(fp2.flashFontsKey).not.toHaveBeenCalled();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("non-default options", function () {
|
||
|
it("does not use userAgent when excluded", function (done) {
|
||
|
var fp2 = new Fingerprint2({excludeUserAgent: true});
|
||
|
spyOn(fp2, "getUserAgent");
|
||
|
fp2.get(function(result) {
|
||
|
expect(fp2.getUserAgent).not.toHaveBeenCalled();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("does not use screen resolution when excluded", function (done) {
|
||
|
var fp2 = new Fingerprint2({excludeScreenResolution: true});
|
||
|
spyOn(fp2, "getScreenResolution");
|
||
|
fp2.get(function(result) {
|
||
|
expect(fp2.getScreenResolution).not.toHaveBeenCalled();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("does not use available screen resolution when excluded", function (done) {
|
||
|
var fp2 = new Fingerprint2({excludeAvailableScreenResolution: true});
|
||
|
spyOn(fp2, "getAvailableScreenResolution");
|
||
|
fp2.get(function(result) {
|
||
|
expect(fp2.getAvailableScreenResolution).not.toHaveBeenCalled();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("does not use plugins info when excluded", function (done) {
|
||
|
var fp2 = new Fingerprint2({excludePlugins: true});
|
||
|
spyOn(fp2, "getRegularPlugins");
|
||
|
fp2.get(function(result) {
|
||
|
expect(fp2.getRegularPlugins).not.toHaveBeenCalled();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("returns components", function () {
|
||
|
it("does it return components as a second argument to callback", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
fp2.get(function(result, components) {
|
||
|
expect(components).not.toBeNull();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("checks if returned components is array", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
fp2.get(function(result, components) {
|
||
|
expect(components).toBeArrayOfObjects();
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("checks if js_fonts component is array", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
fp2.get(function(result, components) {
|
||
|
for(var x = 0; x < components.length; x++) {
|
||
|
if(components[x].key == "js_fonts") {
|
||
|
expect(components[x].value).toBeArray();
|
||
|
}
|
||
|
}
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it("returns user_agent as the first element", function (done) {
|
||
|
var fp2 = new Fingerprint2();
|
||
|
fp2.get(function(result, components) {
|
||
|
expect(components[0].key).toEqual("user_agent");
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("baseFontArray iteration", function () {
|
||
|
it("only iterates specified items", function (done) {
|
||
|
var baseFonts = ["monospace", "sans-serif", "serif"];
|
||
|
var ctr = 0;
|
||
|
for (var x in baseFonts) {
|
||
|
ctr++;
|
||
|
}
|
||
|
|
||
|
expect(baseFonts.length).toEqual(3);
|
||
|
expect(ctr).toEqual(baseFonts.length);
|
||
|
|
||
|
// Somewhere deep in your JavaScript library...
|
||
|
Array.prototype.foo = 1;
|
||
|
Array.prototype.bar = 2;
|
||
|
ctr = 0;
|
||
|
for (var x in baseFonts) {
|
||
|
console.log(x);
|
||
|
ctr++;
|
||
|
// Now foo & bar is a part of EVERY array and
|
||
|
// will show up here as a value of 'x'.
|
||
|
}
|
||
|
|
||
|
expect(baseFonts.length).toEqual(3);
|
||
|
// sadface
|
||
|
expect(ctr).not.toEqual(baseFonts.length);
|
||
|
expect(ctr).toEqual(5);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|