diff -r 000000000000 -r 6474c204b198 content/base/test/unit/test_csp_ignores_path.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/base/test/unit/test_csp_ignores_path.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,159 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; + +Cu.import('resource://gre/modules/CSPUtils.jsm'); + +var ioService = Cc["@mozilla.org/network/io-service;1"] + .getService(Ci.nsIIOService); +var self = ioService.newURI("http://test1.example.com:80", null, null); + +function testValidSRCsHostSourceWithSchemeAndPath() { + var csps = [ + "http://test1.example.com", + "http://test1.example.com/", + "http://test1.example.com/path-1", + "http://test1.example.com/path-1/", + "http://test1.example.com/path-1/path_2/", + "http://test1.example.com/path-1/path_2/file.js", + "http://test1.example.com/path-1/path_2/file_1.js", + "http://test1.example.com/path-1/path_2/file-2.js", + "http://test1.example.com/path-1/path_2/f.js", + "http://test1.example.com/path-1/path_2/f.oo.js" + ] + + var obj; + var expected = "http://test1.example.com:80"; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + dump("expected: " + expected + "\n"); + dump("got: " + obj._sources[0] + "\n"); + do_check_eq(1, obj._sources.length); + do_check_eq(obj._sources[0], expected); + } +} + +function testValidSRCsRegularHost() { + var csps = [ + "test1.example.com", + "test1.example.com/", + "test1.example.com/path-1", + "test1.example.com/path-1/", + "test1.example.com/path-1/path_2/", + "test1.example.com/path-1/path_2/file.js", + "test1.example.com/path-1/path_2/file_1.js", + "test1.example.com/path-1/path_2/file-2.js", + "test1.example.com/path-1/path_2/f.js", + "test1.example.com/path-1/path_2/f.oo.js" + ] + + var obj; + var expected = "http://test1.example.com:80"; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + do_check_eq(1, obj._sources.length); + do_check_eq(obj._sources[0], expected); + } +} + +function testValidSRCsWildCardHost() { + var csps = [ + "*.example.com", + "*.example.com/", + "*.example.com/path-1", + "*.example.com/path-1/", + "*.example.com/path-1/path_2/", + "*.example.com/path-1/path_2/file.js", + "*.example.com/path-1/path_2/file_1.js", + "*.example.com/path-1/path_2/file-2.js", + "*.example.com/path-1/path_2/f.js", + "*.example.com/path-1/path_2/f.oo.js" + ] + + var obj; + var expected = "http://*.example.com:80"; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + do_check_eq(1, obj._sources.length); + do_check_eq(obj._sources[0], expected); + } +} + +function testValidSRCsRegularPort() { + var csps = [ + "test1.example.com:80", + "test1.example.com:80/", + "test1.example.com:80/path-1", + "test1.example.com:80/path-1/", + "test1.example.com:80/path-1/path_2", + "test1.example.com:80/path-1/path_2/", + "test1.example.com:80/path-1/path_2/file.js", + "test1.example.com:80/path-1/path_2/f.ile.js" + ] + + var obj; + var expected = "http://test1.example.com:80"; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + do_check_eq(1, obj._sources.length); + do_check_eq(obj._sources[0], expected); + } +} + +function testValidSRCsWildCardPort() { + var csps = [ + "test1.example.com:*", + "test1.example.com:*/", + "test1.example.com:*/path-1", + "test1.example.com:*/path-1/", + "test1.example.com:*/path-1/path_2", + "test1.example.com:*/path-1/path_2/", + "test1.example.com:*/path-1/path_2/file.js", + "test1.example.com:*/path-1/path_2/f.ile.js" + ] + + var obj; + var expected = "http://test1.example.com:*"; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + do_check_eq(1, obj._sources.length); + do_check_eq(obj._sources[0], expected); + } +} + + +function testInvalidSRCs() { + var csps = [ + "test1.example.com:88path-1/", + "test1.example.com:80.js", + "test1.example.com:*.js", + "test1.example.com:*." + ] + + var obj; + var expected = []; + for (let i in csps) { + var src = csps[i]; + obj = CSPSourceList.fromString(src, undefined, self); + do_check_eq(0, obj._sources.length); + } +} + +function run_test() { + testValidSRCsHostSourceWithSchemeAndPath(); + testValidSRCsRegularHost(); + testValidSRCsWildCardHost(); + testValidSRCsRegularPort(); + testValidSRCsWildCardPort(); + testInvalidSRCs(); + do_test_finished(); +}