71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: UTF-8 -*-
|
|
|
|
import unittest
|
|
import pbtest
|
|
from time import sleep
|
|
|
|
# time to wait for loading privacy policy from eff.org
|
|
POLICY_DOWNLOAD_TIMEOUT = 20
|
|
PB_POLICY_HASH_LEN = 40 # https://www.eff.org/files/dnt-policies.json
|
|
|
|
|
|
class StorageTest(pbtest.PBSeleniumTest):
|
|
"""Privacy Badger storage initialization tests."""
|
|
|
|
def check_policy_download(self):
|
|
timeout = POLICY_DOWNLOAD_TIMEOUT
|
|
dnt_hashes_not_empty = (
|
|
"return ("
|
|
"chrome.extension.getBackgroundPage()."
|
|
"badger.storage.getStore('dnt_hashes') != {}"
|
|
")"
|
|
)
|
|
# give updatePrivacyPolicyHashes() some time to download the policy hash
|
|
while (timeout > 0 and not self.js(dnt_hashes_not_empty)):
|
|
sleep(1)
|
|
timeout -= 1
|
|
|
|
# make sure we didn't time out
|
|
self.assertGreater(timeout, 0, "Timed out waiting for DNT hashes")
|
|
# now check the downloaded policy hash
|
|
get_dnt_hashes = (
|
|
"return ("
|
|
"chrome.extension.getBackgroundPage()."
|
|
"badger.storage.getStore('dnt_hashes')."
|
|
"getItemClones()"
|
|
")"
|
|
)
|
|
policy_hashes = self.js(get_dnt_hashes)
|
|
for policy_hash in policy_hashes.keys():
|
|
self.assertEqual(PB_POLICY_HASH_LEN, len(policy_hash))
|
|
|
|
def test_should_init_storage_entries(self):
|
|
self.load_url(self.options_url)
|
|
|
|
self.check_policy_download()
|
|
self.assertEqual(
|
|
self.js(
|
|
"return chrome.extension.getBackgroundPage()."
|
|
"constants.YELLOWLIST_URL"
|
|
),
|
|
"https://www.eff.org/files/cookieblocklist_new.txt"
|
|
)
|
|
|
|
disabled_sites = self.js(
|
|
"return chrome.extension.getBackgroundPage()."
|
|
"badger.getSettings().getItem('disabledSites')"
|
|
)
|
|
self.assertFalse(
|
|
len(disabled_sites),
|
|
"Shouldn't have any disabledSites after installation"
|
|
)
|
|
|
|
self.assertTrue(self.js(
|
|
"return chrome.extension.getBackgroundPage()."
|
|
"badger.getSettings().getItem('checkForDNTPolicy')"
|
|
), "Should start with DNT policy enabled")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|