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

Powered by Google App Engine
This is Rietveld