ad-block
Version:
Ad block engine used in the Brave browser for ABP filter syntax based lists like EasyList.
51 lines (47 loc) • 2.61 kB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/* global describe, it */
const assert = require('assert')
const {sanitizeABPInput, extraConcatRules} = require('../../lib/filtering')
const filteredOutRule = '*/test'
const predicate = (rule) => !rule.startsWith('*')
sanitizeABPInputFiltered = (input, filterPredicate) =>
sanitizeABPInput(input, filterPredicate).split('\n').slice(0, extraConcatRules.length * -1).join('\n')
describe('filtering', function () {
describe('filterPredicate', function () {
it('Filters out rules that start with a *, for now', function () {
assert(!predicate('*test/ad'))
})
it('Does not filter out rules with a *', function () {
assert(predicate('test/*/ad'))
})
})
describe('sanitizeABPInput', function () {
it('Rebuilds lists which do not have filtered out rules', function () {
const I = '&ad_channel=\n&ad_classid=\n&ad_height=\n&ad_keyword='
assert.strictEqual(sanitizeABPInputFiltered(I, predicate), I)
})
it('Rebuilds lists which have filtered out rules at the start', function () {
const rules = '&ad_channel=\n&ad_classid=\n&ad_height=\n&ad_keyword='
assert.strictEqual(sanitizeABPInputFiltered(`${filteredOutRule}\n${rules}`, predicate), rules)
})
it('Rebuilds lists which have filtered out rules at the end', function () {
const rules = '&ad_channel=\n&ad_classid=\n&ad_height=\n&ad_keyword='
assert.strictEqual(sanitizeABPInputFiltered(`${rules}\n${filteredOutRule}`, predicate), rules)
})
it('Rebuilds lists which have filtered out rules in the middle', function () {
const rules = '&ad_channel=\n&ad_classid=\n&ad_height=\n&ad_keyword='
assert.strictEqual(sanitizeABPInputFiltered(`&ad_channel=\n${filteredOutRule}\n&ad_classid=\n&ad_height=\n&ad_keyword=`, predicate), rules)
})
it('Rebuilds lists which have multiple filtered out rules', function () {
const rules = '&ad_channel=\n&ad_classid=\n&ad_height=\n&ad_keyword='
assert.strictEqual(sanitizeABPInputFiltered(`${filteredOutRule}\n&ad_channel=\n${filteredOutRule}\n&ad_classid=\n&ad_height=\n&ad_keyword=`, predicate), rules)
})
it('Converts ima list to add forcecancel option', function () {
const rule = '||imasdk.googleapis.com^$third-party'
const mapToRule = '||imasdk.googleapis.com^$third-party,explicitcancel'
assert.strictEqual(sanitizeABPInputFiltered(rule), mapToRule)
})
})
})