New ContentFilter plugin for shared site and user blocklist
This commit is contained in:
parent
a59fb4fd1e
commit
c493f732f9
12 changed files with 660 additions and 0 deletions
82
plugins/ContentFilter/Test/TestContentFilter.py
Normal file
82
plugins/ContentFilter/Test/TestContentFilter.py
Normal file
|
@ -0,0 +1,82 @@
|
|||
import pytest
|
||||
from ContentFilter import ContentFilterPlugin
|
||||
from Site import SiteManager
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def filter_storage():
|
||||
ContentFilterPlugin.filter_storage = ContentFilterPlugin.ContentFilterStorage(SiteManager.site_manager)
|
||||
return ContentFilterPlugin.filter_storage
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("resetSettings")
|
||||
@pytest.mark.usefixtures("resetTempSettings")
|
||||
class TestContentFilter:
|
||||
def createInclude(self, site):
|
||||
site.storage.writeJson("filters.json", {
|
||||
"mutes": {"1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C": {}},
|
||||
"siteblocks": {site.address: {}}
|
||||
})
|
||||
|
||||
def testIncludeLoad(self, site, filter_storage):
|
||||
self.createInclude(site)
|
||||
filter_storage.file_content["includes"]["%s/%s" % (site.address, "filters.json")] = {
|
||||
"date_added": 1528295893,
|
||||
}
|
||||
|
||||
assert not filter_storage.include_filters["mutes"]
|
||||
assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
assert not filter_storage.isSiteblocked(site.address)
|
||||
filter_storage.includeUpdateAll(update_site_dbs=False)
|
||||
assert len(filter_storage.include_filters["mutes"]) == 1
|
||||
assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
assert filter_storage.isSiteblocked(site.address)
|
||||
|
||||
def testIncludeAdd(self, site, filter_storage):
|
||||
self.createInclude(site)
|
||||
query_num_json = "SELECT COUNT(*) AS num FROM json WHERE directory = 'users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C'"
|
||||
assert not filter_storage.isSiteblocked(site.address)
|
||||
assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
assert site.storage.query(query_num_json).fetchone()["num"] == 2
|
||||
|
||||
# Add include
|
||||
filter_storage.includeAdd(site.address, "filters.json")
|
||||
|
||||
assert filter_storage.isSiteblocked(site.address)
|
||||
assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
assert site.storage.query(query_num_json).fetchone()["num"] == 0
|
||||
|
||||
# Remove include
|
||||
filter_storage.includeRemove(site.address, "filters.json")
|
||||
|
||||
assert not filter_storage.isSiteblocked(site.address)
|
||||
assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
assert site.storage.query(query_num_json).fetchone()["num"] == 2
|
||||
|
||||
def testIncludeChange(self, site, filter_storage):
|
||||
self.createInclude(site)
|
||||
filter_storage.includeAdd(site.address, "filters.json")
|
||||
assert filter_storage.isSiteblocked(site.address)
|
||||
assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
|
||||
|
||||
# Add new blocked site
|
||||
assert not filter_storage.isSiteblocked("1Hello")
|
||||
|
||||
filter_content = site.storage.loadJson("filters.json")
|
||||
filter_content["siteblocks"]["1Hello"] = {}
|
||||
site.storage.writeJson("filters.json", filter_content)
|
||||
|
||||
assert filter_storage.isSiteblocked("1Hello")
|
||||
|
||||
# Add new muted user
|
||||
query_num_json = "SELECT COUNT(*) AS num FROM json WHERE directory = 'users/1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q'"
|
||||
assert not filter_storage.isMuted("1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q")
|
||||
assert site.storage.query(query_num_json).fetchone()["num"] == 2
|
||||
|
||||
filter_content["mutes"]["1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q"] = {}
|
||||
site.storage.writeJson("filters.json", filter_content)
|
||||
|
||||
assert filter_storage.isMuted("1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q")
|
||||
assert site.storage.query(query_num_json).fetchone()["num"] == 0
|
||||
|
||||
|
1
plugins/ContentFilter/Test/conftest.py
Normal file
1
plugins/ContentFilter/Test/conftest.py
Normal file
|
@ -0,0 +1 @@
|
|||
from src.Test.conftest import *
|
5
plugins/ContentFilter/Test/pytest.ini
Normal file
5
plugins/ContentFilter/Test/pytest.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[pytest]
|
||||
python_files = Test*.py
|
||||
addopts = -rsxX -v --durations=6
|
||||
markers =
|
||||
webtest: mark a test as a webtest.
|
Loading…
Add table
Add a link
Reference in a new issue