| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 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 | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
| 13 * | 13 * |
| 14 * You should have received a copy of the GNU General Public License | 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/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| 16 */ | 16 */ |
| 17 | 17 |
| 18 "use strict"; | 18 "use strict"; |
| 19 | 19 |
| 20 let {createSandbox, unexpectedError} = require("./_common"); | 20 const {createSandbox, unexpectedError} = require("./_common"); |
| 21 | 21 |
| 22 let Filter = null; | 22 let Filter = null; |
| 23 let FilterNotifier = null; | 23 let FilterNotifier = null; |
| 24 let FilterStorage = null; | 24 let FilterStorage = null; |
| 25 let IO = null; | 25 let IO = null; |
| 26 let Prefs = null; | 26 let Prefs = null; |
| 27 let Subscription = null; | 27 let Subscription = null; |
| 28 let ExternalSubscription = null; | 28 let ExternalSubscription = null; |
| 29 | 29 |
| 30 exports.setUp = function(callback) | 30 exports.setUp = function(callback) |
| 31 { | 31 { |
| 32 let sandboxedRequire = createSandbox(); | 32 let sandboxedRequire = createSandbox(); |
| 33 ( | 33 ( |
| 34 {Filter} = sandboxedRequire("../lib/filterClasses"), | 34 {Filter} = sandboxedRequire("../lib/filterClasses"), |
| 35 {FilterNotifier} = sandboxedRequire("../lib/filterNotifier"), | 35 {FilterNotifier} = sandboxedRequire("../lib/filterNotifier"), |
| 36 {FilterStorage} = sandboxedRequire("../lib/filterStorage"), | 36 {FilterStorage} = sandboxedRequire("../lib/filterStorage"), |
| 37 {IO} = sandboxedRequire("./stub-modules/io"), | 37 {IO} = sandboxedRequire("./stub-modules/io"), |
| 38 {Prefs} = sandboxedRequire("./stub-modules/prefs"), | 38 {Prefs} = sandboxedRequire("./stub-modules/prefs"), |
| 39 {Subscription, ExternalSubscription} = sandboxedRequire("../lib/subscription
Classes") | 39 {Subscription, ExternalSubscription} = sandboxedRequire("../lib/subscription
Classes") |
| 40 ); | 40 ); |
| 41 | 41 |
| 42 FilterStorage.addSubscription(Subscription.fromURL("~fl~")); | 42 FilterStorage.addSubscription(Subscription.fromURL("~fl~")); |
| 43 callback(); | 43 callback(); |
| 44 } | 44 }; |
| 45 | 45 |
| 46 let testData = new Promise((resolve, reject) => | 46 let testData = new Promise((resolve, reject) => |
| 47 { | 47 { |
| 48 let fs = require("fs"); | 48 const fs = require("fs"); |
| 49 let path = require("path"); | 49 const path = require("path"); |
| 50 let datapath = path.resolve(__dirname, "data", "patterns.ini"); | 50 let datapath = path.resolve(__dirname, "data", "patterns.ini"); |
| 51 | 51 |
| 52 fs.readFile(datapath, "utf-8", (error, data) => | 52 fs.readFile(datapath, "utf-8", (error, data) => |
| 53 { | 53 { |
| 54 if (error) | 54 if (error) |
| 55 reject(error); | 55 reject(error); |
| 56 else | 56 else |
| 57 resolve(data); | 57 resolve(data); |
| 58 }); | 58 }); |
| 59 }); | 59 }); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 89 curSection = {header: line, data: []}; | 89 curSection = {header: line, data: []}; |
| 90 } | 90 } |
| 91 else if (curSection && /\S/.test(line)) | 91 else if (curSection && /\S/.test(line)) |
| 92 curSection.data.push(line); | 92 curSection.data.push(line); |
| 93 } | 93 } |
| 94 for (let section of sections) | 94 for (let section of sections) |
| 95 { | 95 { |
| 96 section.key = section.header + " " + section.data[0]; | 96 section.key = section.header + " " + section.data[0]; |
| 97 section.data.sort(); | 97 section.data.sort(); |
| 98 } | 98 } |
| 99 sections.sort(function(a, b) | 99 sections.sort((a, b) => |
| 100 { | 100 { |
| 101 if (a.key < b.key) | 101 if (a.key < b.key) |
| 102 return -1; | 102 return -1; |
| 103 else if (a.key > b.key) | 103 else if (a.key > b.key) |
| 104 return 1; | 104 return 1; |
| 105 else | 105 return 0; |
| 106 return 0; | |
| 107 }); | 106 }); |
| 108 return sections.map(function(section) { | 107 return sections.map( |
| 109 return [section.header].concat(section.data).join("\n"); | 108 section => [section.header].concat(section.data).join("\n") |
| 110 }).join("\n"); | 109 ).join("\n"); |
| 111 } | 110 } |
| 112 | 111 |
| 113 return testData.then(data => | 112 return testData.then(data => |
| 114 { | 113 { |
| 115 tempFile.contents = data; | 114 tempFile.contents = data; |
| 116 return loadFilters(tempFile); | 115 return loadFilters(tempFile); |
| 117 }).then(() => | 116 }).then(() => |
| 118 { | 117 { |
| 119 test.equal(FilterStorage.fileProperties.version, FilterStorage.formatVersion
, "File format version"); | 118 test.equal(FilterStorage.fileProperties.version, FilterStorage.formatVersion
, "File format version"); |
| 120 | 119 |
| 121 if (withExternal) | 120 if (withExternal) |
| 122 { | 121 { |
| 123 let subscription = new ExternalSubscription("~external~external subscripti
on ID", "External subscription"); | 122 { |
| 124 subscription.filters = [Filter.fromText("foo"), Filter.fromText("bar")]; | 123 let subscription = new ExternalSubscription("~external~external subscrip
tion ID", "External subscription"); |
| 125 FilterStorage.addSubscription(subscription); | 124 subscription.filters = [Filter.fromText("foo"), Filter.fromText("bar")]; |
| 125 FilterStorage.addSubscription(subscription); |
| 126 } |
| 126 | 127 |
| 127 let externalSubscriptions = FilterStorage.subscriptions.filter(subscriptio
n => subscription instanceof ExternalSubscription); | 128 let externalSubscriptions = FilterStorage.subscriptions.filter(subscriptio
n => subscription instanceof ExternalSubscription); |
| 128 test.equal(externalSubscriptions.length, 1, "Number of external subscripti
ons after updateExternalSubscription"); | 129 test.equal(externalSubscriptions.length, 1, "Number of external subscripti
ons after updateExternalSubscription"); |
| 129 | 130 |
| 130 test.equal(externalSubscriptions[0].url, "~external~external subscription
ID", "ID of external subscription"); | 131 test.equal(externalSubscriptions[0].url, "~external~external subscription
ID", "ID of external subscription"); |
| 131 test.equal(externalSubscriptions[0].filters.length, 2, "Number of filters
in external subscription"); | 132 test.equal(externalSubscriptions[0].filters.length, 2, "Number of filters
in external subscription"); |
| 132 } | 133 } |
| 133 | 134 |
| 134 return saveFilters(tempFile2); | 135 return saveFilters(tempFile2); |
| 135 }).then(() => testData).then(expected => | 136 }).then(() => testData).then(expected => |
| (...skipping 15 matching lines...) Expand all Loading... |
| 151 exports.testLegacyGroups = {}; | 152 exports.testLegacyGroups = {}; |
| 152 | 153 |
| 153 for (let url of ["~wl~", "~fl~", "~eh~"]) | 154 for (let url of ["~wl~", "~fl~", "~eh~"]) |
| 154 { | 155 { |
| 155 exports.testLegacyGroups["read empty " + url] = function(test) | 156 exports.testLegacyGroups["read empty " + url] = function(test) |
| 156 { | 157 { |
| 157 let data = "[Subscription]\nurl=" + url; | 158 let data = "[Subscription]\nurl=" + url; |
| 158 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); | 159 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); |
| 159 tempFile.contents = data; | 160 tempFile.contents = data; |
| 160 | 161 |
| 161 loadFilters(tempFile, function() | 162 loadFilters(tempFile, () => |
| 162 { | 163 { |
| 163 test.equal(FilterStorage.subscriptions.length, 0, "Number of filter subscr
iptions"); | 164 test.equal(FilterStorage.subscriptions.length, 0, "Number of filter subscr
iptions"); |
| 164 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 165 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| 165 }; | 166 }; |
| 166 | 167 |
| 167 exports.testLegacyGroups["read non-empty " + url] = function(test) | 168 exports.testLegacyGroups["read non-empty " + url] = function(test) |
| 168 { | 169 { |
| 169 let data = "[Subscription]\nurl=" + url + "\n[Subscription filters]\nfoo"; | 170 let data = "[Subscription]\nurl=" + url + "\n[Subscription filters]\nfoo"; |
| 170 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); | 171 let tempFile = IO.resolveFilePath("temp_patterns1.ini"); |
| 171 tempFile.contents = data; | 172 tempFile.contents = data; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 { | 257 { |
| 257 test.ok(backupFile.exists(), "First backup created"); | 258 test.ok(backupFile.exists(), "First backup created"); |
| 258 | 259 |
| 259 backupFile.lastModifiedTime -= 10000; | 260 backupFile.lastModifiedTime -= 10000; |
| 260 oldModifiedTime = backupFile.lastModifiedTime; | 261 oldModifiedTime = backupFile.lastModifiedTime; |
| 261 return saveFilters(null); | 262 return saveFilters(null); |
| 262 }).then(() => | 263 }).then(() => |
| 263 { | 264 { |
| 264 test.equal(backupFile.lastModifiedTime, oldModifiedTime, "Backup not overwri
tten if it is only 10 seconds old"); | 265 test.equal(backupFile.lastModifiedTime, oldModifiedTime, "Backup not overwri
tten if it is only 10 seconds old"); |
| 265 | 266 |
| 266 backupFile.lastModifiedTime -= 40*60*60*1000; | 267 backupFile.lastModifiedTime -= 40 * 60 * 60 * 1000; |
| 267 oldModifiedTime = backupFile.lastModifiedTime; | 268 oldModifiedTime = backupFile.lastModifiedTime; |
| 268 return saveFilters(null); | 269 return saveFilters(null); |
| 269 }).then(() => | 270 }).then(() => |
| 270 { | 271 { |
| 271 test.notEqual(backupFile.lastModifiedTime, oldModifiedTime, "Backup overwrit
ten if it is 40 hours old"); | 272 test.notEqual(backupFile.lastModifiedTime, oldModifiedTime, "Backup overwrit
ten if it is 40 hours old"); |
| 272 | 273 |
| 273 test.ok(backupFile2.exists(), "Second backup created when first backup is ov
erwritten"); | 274 test.ok(backupFile2.exists(), "Second backup created when first backup is ov
erwritten"); |
| 274 | 275 |
| 275 backupFile.lastModifiedTime -= 20000; | 276 backupFile.lastModifiedTime -= 20000; |
| 276 oldModifiedTime = backupFile2.lastModifiedTime; | 277 oldModifiedTime = backupFile2.lastModifiedTime; |
| 277 return saveFilters(null); | 278 return saveFilters(null); |
| 278 }).then(() => | 279 }).then(() => |
| 279 { | 280 { |
| 280 test.equal(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup not
overwritten if first one is only 20 seconds old"); | 281 test.equal(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup not
overwritten if first one is only 20 seconds old"); |
| 281 | 282 |
| 282 backupFile.lastModifiedTime -= 25*60*60*1000; | 283 backupFile.lastModifiedTime -= 25 * 60 * 60 * 1000; |
| 283 oldModifiedTime = backupFile2.lastModifiedTime; | 284 oldModifiedTime = backupFile2.lastModifiedTime; |
| 284 return saveFilters(null); | 285 return saveFilters(null); |
| 285 }).then(() => | 286 }).then(() => |
| 286 { | 287 { |
| 287 test.notEqual(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup
overwritten if first one is 25 hours old"); | 288 test.notEqual(backupFile2.lastModifiedTime, oldModifiedTime, "Second backup
overwritten if first one is 25 hours old"); |
| 288 | 289 |
| 289 test.ok(!backupFile3.exists(), "Third backup not created with patternsbackup
s = 2"); | 290 test.ok(!backupFile3.exists(), "Third backup not created with patternsbackup
s = 2"); |
| 290 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 291 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| 291 }; | 292 }; |
| OLD | NEW |