Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import pytest
2from ContentFilter import ContentFilterPlugin
3from Site import SiteManager
4
5
6@pytest.fixture
7def filter_storage():
8 ContentFilterPlugin.filter_storage = ContentFilterPlugin.ContentFilterStorage(SiteManager.site_manager)
9 return ContentFilterPlugin.filter_storage
10
11
12@pytest.mark.usefixtures("resetSettings")
13@pytest.mark.usefixtures("resetTempSettings")
14class TestContentFilter:
15 def createInclude(self, site):
16 site.storage.writeJson("filters.json", {
17 "mutes": {"1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C": {}},
18 "siteblocks": {site.address: {}}
19 })
20
21 def testIncludeLoad(self, site, filter_storage):
22 self.createInclude(site)
23 filter_storage.file_content["includes"]["%s/%s" % (site.address, "filters.json")] = {
24 "date_added": 1528295893,
25 }
26
27 assert not filter_storage.include_filters["mutes"]
28 assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
29 assert not filter_storage.isSiteblocked(site.address)
30 filter_storage.includeUpdateAll(update_site_dbs=False)
31 assert len(filter_storage.include_filters["mutes"]) == 1
32 assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
33 assert filter_storage.isSiteblocked(site.address)
34
35 def testIncludeAdd(self, site, filter_storage):
36 self.createInclude(site)
37 query_num_json = "SELECT COUNT(*) AS num FROM json WHERE directory = 'users/1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C'"
38 assert not filter_storage.isSiteblocked(site.address)
39 assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
40 assert site.storage.query(query_num_json).fetchone()["num"] == 2
41
42 # Add include
43 filter_storage.includeAdd(site.address, "filters.json")
44
45 assert filter_storage.isSiteblocked(site.address)
46 assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
47 assert site.storage.query(query_num_json).fetchone()["num"] == 0
48
49 # Remove include
50 filter_storage.includeRemove(site.address, "filters.json")
51
52 assert not filter_storage.isSiteblocked(site.address)
53 assert not filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
54 assert site.storage.query(query_num_json).fetchone()["num"] == 2
55
56 def testIncludeChange(self, site, filter_storage):
57 self.createInclude(site)
58 filter_storage.includeAdd(site.address, "filters.json")
59 assert filter_storage.isSiteblocked(site.address)
60 assert filter_storage.isMuted("1J6UrZMkarjVg5ax9W4qThir3BFUikbW6C")
61
62 # Add new blocked site
63 assert not filter_storage.isSiteblocked("1Hello")
64
65 filter_content = site.storage.loadJson("filters.json")
66 filter_content["siteblocks"]["1Hello"] = {}
67 site.storage.writeJson("filters.json", filter_content)
68
69 assert filter_storage.isSiteblocked("1Hello")
70
71 # Add new muted user
72 query_num_json = "SELECT COUNT(*) AS num FROM json WHERE directory = 'users/1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q'"
73 assert not filter_storage.isMuted("1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q")
74 assert site.storage.query(query_num_json).fetchone()["num"] == 2
75
76 filter_content["mutes"]["1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q"] = {}
77 site.storage.writeJson("filters.json", filter_content)
78
79 assert filter_storage.isMuted("1C5sgvWaSgfaTpV5kjBCnCiKtENNMYo69q")
80 assert site.storage.query(query_num_json).fetchone()["num"] == 0
81
82