Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/filterListener.js

Issue 29354864: Issue 4223 - Migrate some more of adblockplustests (Closed)
Patch Set: Addressed final nit Created Oct. 4, 2016, 12:16 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/filterClasses.js ('k') | test/filterNotifier.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 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 let {createSandbox} = require("./_common");
21 let sandboxedRequire = null;
22
23 let FilterStorage = null;
24 let Subscription = null;
25 let Filter = null;
26 let defaultMatcher = null;
27 let SpecialSubscription = null;
28
29 exports.setUp = function(callback)
30 {
31 sandboxedRequire = createSandbox({
32 elemHide: ["filterByKey", "exceptions"],
33 cssRules: ["filters"]
34 });
35
36 // We need to require the filterListener module so that filter changes will be
37 // noticed, even though we don't directly use the module here.
38 sandboxedRequire("../lib/filterListener");
39
40 (
41 {FilterStorage} = sandboxedRequire("../lib/filterStorage"),
42 {Subscription, SpecialSubscription} = sandboxedRequire("../lib/subscriptionC lasses"),
43 {Filter} = sandboxedRequire("../lib/filterClasses"),
44 {defaultMatcher} = sandboxedRequire("../lib/matcher")
45 );
46
47 FilterStorage.addSubscription(Subscription.fromURL("~fl~"));
48 FilterStorage.addSubscription(Subscription.fromURL("~wl~"));
49 FilterStorage.addSubscription(Subscription.fromURL("~eh~"));
50
51 Subscription.fromURL("~fl~").defaults = ["blocking"];
52 Subscription.fromURL("~wl~").defaults = ["whitelist"];
53 Subscription.fromURL("~eh~").defaults = ["elemhide"];
54
55 callback();
56 };
57
58 function checkKnownFilters(test, text, expected)
59 {
60 let result = {};
61 for (let type of ["blacklist", "whitelist"])
62 {
63 let matcher = defaultMatcher[type];
64 let filters = [];
65 for (let keyword in matcher.filterByKeyword)
66 {
67 let list = matcher.filterByKeyword[keyword];
68 for (let i = 0; i < list.length; i++)
69 {
70 let filter = list[i];
71 test.equal(matcher.getKeywordForFilter(filter), keyword,
72 "Keyword of filter " + filter.text);
73 filters.push(filter.text);
74 }
75 }
76 result[type] = filters;
77 }
78
79 let elemHide = sandboxedRequire("../lib/elemHide");
80 result.elemhide = [];
81 for (let key in elemHide.filterByKey)
82 result.elemhide.push(elemHide.filterByKey[key].text);
83
84 result.elemhideexception = [];
85 for (let selector in elemHide.exceptions)
86 {
87 let list = elemHide.exceptions[selector];
88 for (let exception of list)
89 result.elemhideexception.push(exception.text);
90 }
91
92 let cssRules = sandboxedRequire("../lib/cssRules");
93 result.cssrule = [];
94 for (let filterText in cssRules.filters)
95 result.cssrule.push(filterText);
96
97 let types = ["blacklist", "whitelist", "elemhide", "elemhideexception",
98 "cssrule"];
99 for (let type of types)
100 {
101 if (!(type in expected))
102 expected[type] = [];
103 else
104 expected[type].sort();
105 result[type].sort();
106 }
107
108 test.deepEqual(result, expected, text);
109 }
110
111 exports.testAddingAndRemovingFilters = function(test)
112 {
113 let filter1 = Filter.fromText("filter1");
114 let filter2 = Filter.fromText("@@filter2");
115 let filter3 = Filter.fromText("#filter3");
116 let filter4 = Filter.fromText("!filter4");
117 let filter5 = Filter.fromText("#@#filter5");
118 let filter6 = Filter.fromText("example.com##[-abp-properties='filter6']");
119 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']");
120
121 FilterStorage.addFilter(filter1);
122 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text]});
123 FilterStorage.addFilter(filter2);
124 checkKnownFilters(test, "add @@filter2", {blacklist: [filter1.text], whitelist : [filter2.text]});
125 FilterStorage.addFilter(filter3);
126 checkKnownFilters(test, "add #filter3", {blacklist: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text]});
127 FilterStorage.addFilter(filter4);
128 checkKnownFilters(test, "add !filter4", {blacklist: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text]});
129 FilterStorage.addFilter(filter5);
130 checkKnownFilters(test, "add #@#filter5", {blacklist: [filter1.text], whitelis t: [filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text]}) ;
131 FilterStorage.addFilter(filter6);
132 checkKnownFilters(test, "add example.com##[-abp-properties='filter6']", {black list: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elemh ideexception: [filter5.text], cssrule: [filter6.text]});
133 FilterStorage.addFilter(filter7);
134 checkKnownFilters(test, "add example.com#@#[-abp-properties='filter7']", {blac klist: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elem hideexception: [filter5.text, filter7.text], cssrule: [filter6.text]});
135
136 FilterStorage.removeFilter(filter1);
137 checkKnownFilters(test, "remove filter1", {whitelist: [filter2.text], elemhide : [filter3.text], elemhideexception: [filter5.text, filter7.text], cssrule: [fil ter6.text]});
138 filter2.disabled = true;
139 checkKnownFilters(test, "disable filter2", {elemhide: [filter3.text], elemhide exception: [filter5.text, filter7.text], cssrule: [filter6.text]});
140 FilterStorage.removeFilter(filter2);
141 checkKnownFilters(test, "remove filter2", {elemhide: [filter3.text], elemhidee xception: [filter5.text, filter7.text], cssrule: [filter6.text]});
142 FilterStorage.removeFilter(filter4);
143 checkKnownFilters(test, "remove filter4", {elemhide: [filter3.text], elemhidee xception: [filter5.text, filter7.text], cssrule: [filter6.text]});
144
145 test.done();
146 };
147
148 exports.testDisablingEnablingFiltersNotInTheList = function(test)
149 {
150 let filter1 = Filter.fromText("filter1");
151 let filter2 = Filter.fromText("@@filter2");
152 let filter3 = Filter.fromText("#filter3");
153 let filter4 = Filter.fromText("#@#filter4");
154 let filter5 = Filter.fromText("example.com##[-abp-properties='filter5']");
155 let filter6 = Filter.fromText("example.com#@#[-abp-properties='filter6']");
156
157 filter1.disabled = true;
158 checkKnownFilters(test, "disable filter1 while not in list", {});
159 filter1.disabled = false;
160 checkKnownFilters(test, "enable filter1 while not in list", {});
161
162 filter2.disabled = true;
163 checkKnownFilters(test, "disable @@filter2 while not in list", {});
164 filter2.disabled = false;
165 checkKnownFilters(test, "enable @@filter2 while not in list", {});
166
167 filter3.disabled = true;
168 checkKnownFilters(test, "disable #filter3 while not in list", {});
169 filter3.disabled = false;
170 checkKnownFilters(test, "enable #filter3 while not in list", {});
171
172 filter4.disabled = true;
173 checkKnownFilters(test, "disable #@#filter4 while not in list", {});
174 filter4.disabled = false;
175 checkKnownFilters(test, "enable #@#filter4 while not in list", {});
176
177 filter5.disabled = true;
178 checkKnownFilters(test, "disable example.com##[-abp-properties='filter5'] whil e not in list", {});
179 filter5.disabled = false;
180 checkKnownFilters(test, "enable example.com##[-abp-properties='filter5'] while not in list", {});
181
182 filter6.disabled = true;
183 checkKnownFilters(test, "disable example.com#@#[-abp-properties='filter6'] whi le not in list", {});
184 filter6.disabled = false;
185 checkKnownFilters(test, "enable example.com#@#[-abp-properties='filter6'] whil e not in list", {});
186
187 test.done();
188 };
189
190 exports.testFilterSubscriptionOperations = function(test)
191 {
192 let filter1 = Filter.fromText("filter1");
193 let filter2 = Filter.fromText("@@filter2");
194 filter2.disabled = true;
195 let filter3 = Filter.fromText("#filter3");
196 let filter4 = Filter.fromText("!filter4");
197 let filter5 = Filter.fromText("#@#filter5");
198 let filter6 = Filter.fromText("example.com##[-abp-properties='filter6']");
199 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']");
200
201 let subscription = Subscription.fromURL("http://test1/");
202 subscription.filters = [filter1, filter2, filter3, filter4, filter5, filter6, filter7];
203
204 FilterStorage.addSubscription(subscription);
205 checkKnownFilters(test, "add subscription with filter1, @@filter2, #filter3, ! filter4, #@#filter5, example.com##[-abp-properties='filter6'], example.com#@#[-a bp-properties='filter7']", {blacklist: [filter1.text], elemhide: [filter3.text], elemhideexception: [filter5.text, filter7.text], cssrule: [filter6.text]});
206
207 filter2.disabled = false;
208 checkKnownFilters(test, "enable @@filter2", {blacklist: [filter1.text], whitel ist: [filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text, filter7.text], cssrule: [filter6.text]});
209
210 FilterStorage.addFilter(filter1);
211 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text, filt er7.text], cssrule: [filter6.text]});
212
213 FilterStorage.updateSubscriptionFilters(subscription, [filter4]);
214 checkKnownFilters(test, "change subscription filters to filter4", {blacklist: [filter1.text]});
215
216 FilterStorage.removeFilter(filter1);
217 checkKnownFilters(test, "remove filter1", {});
218
219 FilterStorage.updateSubscriptionFilters(subscription, [filter1, filter2]);
220 checkKnownFilters(test, "change subscription filters to filter1, filter2", {bl acklist: [filter1.text], whitelist: [filter2.text]});
221
222 filter1.disabled = true;
223 checkKnownFilters(test, "disable filter1", {whitelist: [filter2.text]});
224 filter2.disabled = true;
225 checkKnownFilters(test, "disable filter2", {});
226 filter1.disabled = false;
227 filter2.disabled = false;
228 checkKnownFilters(test, "enable filter1, filter2", {blacklist: [filter1.text], whitelist: [filter2.text]});
229
230 FilterStorage.addFilter(filter1);
231 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text], whitelist: [filter2.text]});
232
233 subscription.disabled = true;
234 checkKnownFilters(test, "disable subscription", {blacklist: [filter1.text]});
235
236 FilterStorage.removeSubscription(subscription);
237 checkKnownFilters(test, "remove subscription", {blacklist: [filter1.text]});
238
239 FilterStorage.addSubscription(subscription);
240 checkKnownFilters(test, "add subscription", {blacklist: [filter1.text]});
241
242 subscription.disabled = false;
243 checkKnownFilters(test, "enable subscription", {blacklist: [filter1.text], whi telist: [filter2.text]});
244
245 subscription.disabled = true;
246 checkKnownFilters(test, "disable subscription", {blacklist: [filter1.text]});
247
248 FilterStorage.addFilter(filter2);
249 checkKnownFilters(test, "add filter2", {blacklist: [filter1.text], whitelist: [filter2.text]});
250
251 FilterStorage.removeFilter(filter2);
252 checkKnownFilters(test, "remove filter2", {blacklist: [filter1.text]});
253
254 subscription.disabled = false;
255 checkKnownFilters(test, "enable subscription", {blacklist: [filter1.text], whi telist: [filter2.text]});
256
257 FilterStorage.removeSubscription(subscription);
258 checkKnownFilters(test, "remove subscription", {blacklist: [filter1.text]});
259
260 test.done();
261 };
262
263 exports.testFilterGroupOperations = function(test)
264 {
265 let filter1 = Filter.fromText("filter1");
266 let filter2 = Filter.fromText("@@filter2");
267 let filter3 = Filter.fromText("filter3");
268 let filter4 = Filter.fromText("@@filter4");
269 let filter5 = Filter.fromText("!filter5");
270
271 let subscription = Subscription.fromURL("http://test1/");
272 subscription.filters = [filter1, filter2];
273
274 FilterStorage.addSubscription(subscription);
275 FilterStorage.addFilter(filter1);
276 checkKnownFilters(test, "initial setup", {blacklist: [filter1.text], whitelist : [filter2.text]});
277
278 let subscription2 = Subscription.fromURL("~fl~");
279 subscription2.disabled = true;
280 checkKnownFilters(test, "disable blocking filters", {blacklist: [filter1.text] , whitelist: [filter2.text]});
281
282 FilterStorage.removeSubscription(subscription);
283 checkKnownFilters(test, "remove subscription", {});
284
285 subscription2.disabled = false;
286 checkKnownFilters(test, "enable blocking filters", {blacklist: [filter1.text]} );
287
288 let subscription3 = Subscription.fromURL("~wl~");
289 subscription3.disabled = true;
290 checkKnownFilters(test, "disable exception rules", {blacklist: [filter1.text]} );
291
292 FilterStorage.addFilter(filter2);
293 checkKnownFilters(test, "add @@filter2", {blacklist: [filter1.text], whitelist : [filter2.text]});
294 test.equal(filter2.subscriptions.length, 1, "@@filter2.subscription.length");
295 test.ok(filter2.subscriptions[0] instanceof SpecialSubscription, "@@filter2 ad ded to a new filter group");
296 test.ok(filter2.subscriptions[0] != subscription3, "@@filter2 filter group is not the disabled exceptions group");
297
298 subscription3.disabled = false;
299 checkKnownFilters(test, "enable exception rules", {blacklist: [filter1.text], whitelist: [filter2.text]});
300
301 FilterStorage.removeFilter(filter2);
302 FilterStorage.addFilter(filter2);
303 checkKnownFilters(test, "re-add @@filter2", {blacklist: [filter1.text], whitel ist: [filter2.text]});
304 test.equal(filter2.subscriptions.length, 1, "@@filter2.subscription.length");
305 test.ok(filter2.subscriptions[0] == subscription3, "@@filter2 added to the def ault exceptions group");
306
307 let subscription4 = Subscription.fromURL("http://test/");
308 FilterStorage.updateSubscriptionFilters(subscription4, [filter3, filter4, filt er5]);
309 checkKnownFilters(test, "update subscription not in the list yet", {blacklist: [filter1.text], whitelist: [filter2.text]});
310
311 FilterStorage.addSubscription(subscription4);
312 checkKnownFilters(test, "add subscription to the list", {blacklist: [filter1.t ext, filter3.text], whitelist: [filter2.text, filter4.text]});
313
314 FilterStorage.updateSubscriptionFilters(subscription4, [filter3, filter2, filt er5]);
315 checkKnownFilters(test, "update subscription while in the list", {blacklist: [ filter1.text, filter3.text], whitelist: [filter2.text]});
316
317 subscription3.disabled = true;
318 checkKnownFilters(test, "disable exception rules", {blacklist: [filter1.text, filter3.text], whitelist: [filter2.text]});
319
320 FilterStorage.removeSubscription(subscription4);
321 checkKnownFilters(test, "remove subscription from the list", {blacklist: [filt er1.text]});
322
323 subscription3.disabled = false;
324 checkKnownFilters(test, "enable exception rules", {blacklist: [filter1.text], whitelist: [filter2.text]});
325
326 test.done();
327 };
OLDNEW
« no previous file with comments | « test/filterClasses.js ('k') | test/filterNotifier.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld