| OLD | NEW | 
| (Empty) |  | 
 |    1 /* | 
 |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
 |    3  * Copyright (C) 2006-present eyeo GmbH | 
 |    4  * | 
 |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
 |    6  * it under the terms of the GNU General Public License version 3 as | 
 |    7  * published by the Free Software Foundation. | 
 |    8  * | 
 |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
 |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 |   12  * GNU General Public License for more details. | 
 |   13  * | 
 |   14  * You should have received a copy of the GNU General Public License | 
 |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
 |   16  */ | 
 |   17  | 
 |   18 "use strict"; | 
 |   19  | 
 |   20 const {createSandbox} = require("./_common"); | 
 |   21  | 
 |   22 let Snippets = null; | 
 |   23 let Filter = null; | 
 |   24  | 
 |   25 exports.setUp = function(callback) | 
 |   26 { | 
 |   27   let sandboxedRequire = createSandbox(); | 
 |   28   ( | 
 |   29     {Filter} = sandboxedRequire("../lib/filterClasses"), | 
 |   30     {Snippets} = sandboxedRequire("../lib/snippets") | 
 |   31   ); | 
 |   32  | 
 |   33   callback(); | 
 |   34 }; | 
 |   35  | 
 |   36 exports.testDomainRestrictions = function(test) | 
 |   37 { | 
 |   38   function testScriptMatches(description, filters, domain, expectedMatches) | 
 |   39   { | 
 |   40     for (let filter of filters) | 
 |   41       Snippets.add(Filter.fromText(filter)); | 
 |   42  | 
 |   43     let matches = Snippets.getScriptsForDomain(domain); | 
 |   44     test.deepEqual(matches.sort(), expectedMatches.sort(), description); | 
 |   45  | 
 |   46     Snippets.clear(); | 
 |   47   } | 
 |   48  | 
 |   49   testScriptMatches( | 
 |   50     "Ignore filters that include parent domain but exclude subdomain", | 
 |   51     [ | 
 |   52       "~www.example.com,example.com#$#foo" | 
 |   53     ], | 
 |   54     "www.example.com", | 
 |   55     [] | 
 |   56   ); | 
 |   57   testScriptMatches( | 
 |   58     "Ignore filters for other subdomain", | 
 |   59     [ | 
 |   60       "www.example.com#$#foo", | 
 |   61       "other.example.com#$#foo" | 
 |   62     ], | 
 |   63     "other.example.com", | 
 |   64     ["foo"] | 
 |   65   ); | 
 |   66  | 
 |   67   test.done(); | 
 |   68 }; | 
 |   69  | 
 |   70 exports.testSnippetFiltersContainer = function(test) | 
 |   71 { | 
 |   72   function compareRules(description, domain, expectedMatches) | 
 |   73   { | 
 |   74     let result = Snippets.getScriptsForDomain(domain); | 
 |   75     expectedMatches = expectedMatches.map(filter => filter.script); | 
 |   76     test.deepEqual(result.sort(), expectedMatches.sort(), description); | 
 |   77   } | 
 |   78  | 
 |   79   let domainFilter = Filter.fromText("example.com#$#filter1"); | 
 |   80   let subdomainFilter = Filter.fromText("www.example.com#$#filter2"); | 
 |   81   let otherDomainFilter = Filter.fromText("other.example.com#$#filter3"); | 
 |   82  | 
 |   83   Snippets.add(domainFilter); | 
 |   84   Snippets.add(subdomainFilter); | 
 |   85   Snippets.add(otherDomainFilter); | 
 |   86   compareRules( | 
 |   87     "Return all matching filters", | 
 |   88     "www.example.com", | 
 |   89     [domainFilter, subdomainFilter] | 
 |   90   ); | 
 |   91  | 
 |   92   Snippets.remove(domainFilter); | 
 |   93   compareRules( | 
 |   94     "Return all matching filters after removing one", | 
 |   95     "www.example.com", | 
 |   96     [subdomainFilter] | 
 |   97   ); | 
 |   98  | 
 |   99   Snippets.clear(); | 
 |  100   compareRules( | 
 |  101     "Return no filters after clearing", | 
 |  102     "www.example.com", | 
 |  103     [] | 
 |  104   ); | 
 |  105  | 
 |  106   test.done(); | 
 |  107 }; | 
| OLD | NEW |