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

Powered by Google App Engine
This is Rietveld