test_engine.py (2183B)
1 import adblock 2 import pytest 3 4 SMALL_FILTER_LIST = """ 5 ||wikipedia.org^ 6 ||old.reddit.com^ 7 ||lobste.rs^ 8 """ 9 10 11 def empty_engine(): 12 return adblock.Engine(adblock.FilterSet()) 13 14 15 def test_engine_creation_and_blocking(): 16 filter_set = adblock.FilterSet(debug=True) 17 filter_set.add_filter_list(SMALL_FILTER_LIST) 18 engine = adblock.Engine(filter_set=filter_set) 19 20 blocker_result_wikipedia = engine.check_network_urls( 21 url="https://wikipedia.org/img.png", 22 source_url="https://google.com/", 23 request_type="image", 24 ) 25 assert isinstance(blocker_result_wikipedia, adblock.BlockerResult) 26 assert blocker_result_wikipedia.matched 27 28 blocker_result_facebook = engine.check_network_urls( 29 "https://facebook.com/directory/img.png", 30 "https://old.reddit.com/r/all", 31 "image", 32 ) 33 assert isinstance(blocker_result_facebook, adblock.BlockerResult) 34 assert not blocker_result_facebook.matched 35 36 37 def test_serde_file(tmpdir): 38 path = str(tmpdir / "cache.dat") 39 40 engine0 = empty_engine() 41 with pytest.raises(FileNotFoundError): 42 # We haven't created the cache.dat file, so we should get an exception 43 # when attempting to deserialize. 44 engine0.deserialize_from_file(path) 45 46 engine1 = empty_engine() 47 serialization_result = engine1.serialize_to_file(path) 48 assert serialization_result is None 49 50 engine2 = empty_engine() 51 deserialization_result = engine2.deserialize_from_file(path) 52 assert deserialization_result is None 53 54 55 def test_deserialize_corrupt(tmpdir): 56 path = str(tmpdir / "corrupt_cache.dat") 57 with open(path, "w", encoding="utf-8") as f: 58 f.write("abc") 59 60 engine = empty_engine() 61 with pytest.raises(adblock.DeserializationError): 62 engine.deserialize_from_file(path) 63 with pytest.raises(adblock.DeserializationError): 64 engine.deserialize(b"abc") 65 66 67 def test_serde(): 68 engine = empty_engine() 69 serialization_result = engine.serialize() 70 assert isinstance(serialization_result, bytes) 71 72 engine2 = empty_engine() 73 deserialization_result = engine2.deserialize(serialization_result) 74 assert deserialization_result is None