/**
* GNU LibreJSXUL - A browser add-on to block nonfree nontrivial JavaScript.
* *
* Copyright (C) 2014 Loic J. Duros
* Copyright (C) 2014, 2015 Nik Nyby
*
* This file is part of GNU LibreJSXUL.
*
* GNU LibreJSXUL is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GNU LibreJSXUL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU LibreJSXUL. If not, see .
*/
const {Cc,Ci} = require('chrome');
var parser = Cc["@mozilla.org/xmlextras/domparser;1"]
.createInstance(Ci.nsIDOMParser);
var WebLabelFinder = require('../lib/html_script_finder/web_labels/js_web_labels')
.WebLabelFinder;
exports.testSearchForJsLinkEmpty = function (assert) {
var finder = new WebLabelFinder();
var doc = parser.parseFromString('', 'text/html');
finder.init(doc, 'http://www.rootstrikers.org', function() {});
assert.strictEqual(finder.searchForJsLink(), false);
};
exports.testSearchForJsLinkJsLicense = function (assert) {
var finder = new WebLabelFinder();
var doc = parser.parseFromString(
'
' +
'JavaScript License Info' +
'', 'text/html');
finder.init(doc, 'http://www.rootstrikers.org', function() {});
assert.strictEqual(
finder.searchForJsLink(),
'http://www.rootstrikers.org/lic.html#librejs=true'
);
};
exports.testSearchForJsLinkDataJsLicense = function (assert) {
var finder = new WebLabelFinder();
var doc = parser.parseFromString(
'' +
'JavaScript License' +
'', 'text/html');
finder.init(doc, 'http://www.rootstrikers.org', function() {});
assert.strictEqual(
finder.searchForJsLink(),
'http://www.rootstrikers.org/lic.html#librejs=true'
);
};
exports.testIsLicenseFreeEmpty = function(assert) {
var finder = new WebLabelFinder();
// listCheck is initialized by WebLabelFinder.matchListWithDefs...
// I'm initializing it here to prevent errors when testing.
finder.listCheck = {};
var lic = {
licenses: []
};
var licArray = [];
var jslicenseURL = null;
var callback = function() { };
assert.strictEqual(
finder.isLicenseFree(lic, licArray, jslicenseURL, callback),
false,
'A script with no license info is considered nonfree'
);
};
exports.testIsLicenseFree1 = function(assert) {
var finder = new WebLabelFinder();
finder.listCheck = {};
var lic = {
'fileName': 'filepicker.js',
'fileUrl': 'http://www.rootstrikers.org/vendor/filepicker.js',
'fileHash': null,
'licenses': [{
'licenseName': 'Expat',
'licenseUrl': 'http://www.jclark.com/xml/copying.txt'
}],
'sources':[{
'sourceName': 'filepicker.js',
'sourceUrl': 'http://www.rootstrikers.org/vendor/filepicker.js'
}]
};
var licArray = [];
var jslicenseURL = null;
var callback = function() { };
assert.strictEqual(
finder.isLicenseFree(lic, licArray, jslicenseURL, callback),
true,
'A script with one free license is considered free'
);
};
exports.testIsLicenseFree3 = function(assert) {
var finder = new WebLabelFinder();
finder.listCheck = {};
var lic = {
'fileName': 'all.min.js',
'fileUrl': 'http://example.com/all.min.js',
'fileHash': null,
'licenses': [
{
'licenseName': 'GNU-GPL-3.0',
'licenseUrl': 'http://www.gnu.org/licenses/gpl-3.0.html'
},
{
'licenseName': 'Expat',
'licenseUrl': 'http://www.jclark.com/xml/copying.txt'
},
{
'licenseName': 'MPL-2.0',
'licenseUrl': 'http://www.mozilla.org/MPL/2.0'
}
],
'sources':[
{
'sourceName': 'gpl3.js',
'sourceUrl': 'http://www.example.com/gpl3.js'
},
{
'sourceName': 'expat.js',
'sourceUrl': 'http://www.example.com/expat.js'
},
{
'sourceName': 'mpl.js',
'sourceUrl': 'http://www.example.com/mpl.js'
}
]
};
var licArray = [];
var jslicenseURL = null;
var callback = function() { };
assert.strictEqual(
finder.isLicenseFree(lic, licArray, jslicenseURL, callback),
true,
'A script with three free licenses is considered free'
);
};
exports.testIsLicenseNotFree = function(assert) {
var finder = new WebLabelFinder();
finder.listCheck = {};
var lic = {
'fileName': 'filepicker.js',
'fileUrl': 'http://www.rootstrikers.org/vendor/filepicker.js',
'fileHash': null,
'licenses': [
{
'licenseName': 'Expat',
'licenseUrl': 'http://www.jclark.com/xml/copying.txt'
},
{
'licenseName': 'Some-Unrecognized-License',
'licenseUrl': 'http://www.example.com/nolicense.txt'
}
],
'sources':[
{
'sourceName': 'filepicker.js',
'sourceUrl': 'http://www.rootstrikers.org/vendor/filepicker.js'
},
{
'sourceName': 'nonfree.js',
'sourceUrl': 'http://www.example.com/nonfree.js'
}
]
};
var licArray = [];
var jslicenseURL = null;
var callback = function() { };
assert.strictEqual(
finder.isLicenseFree(lic, licArray, jslicenseURL, callback),
false,
'A script with one free license and one nonfree is considered nonfree'
);
};
require('sdk/test').run(exports);