Index: third_party/mozprofile/tests/permissions.py |
=================================================================== |
--- third_party/mozprofile/tests/permissions.py (revision 0) |
+++ third_party/mozprofile/tests/permissions.py (revision 0) |
@@ -0,0 +1,114 @@ |
+#!/usr/bin/env python |
+ |
+# 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/. |
+ |
+import os |
+import shutil |
+try: |
+ import sqlite3 |
+except ImportError: |
+ from pysqlite2 import dbapi2 as sqlite3 |
+import tempfile |
+import unittest |
+from mozprofile.permissions import Permissions |
+ |
+class PermissionsTest(unittest.TestCase): |
+ |
+ locations = """http://mochi.test:8888 primary,privileged |
+http://127.0.0.1:80 noxul |
+http://127.0.0.1:8888 privileged |
+""" |
+ |
+ profile_dir = None |
+ locations_file = None |
+ |
+ def setUp(self): |
+ self.profile_dir = tempfile.mkdtemp() |
+ self.locations_file = tempfile.NamedTemporaryFile() |
+ self.locations_file.write(self.locations) |
+ self.locations_file.flush() |
+ |
+ def tearDown(self): |
+ if self.profile_dir: |
+ shutil.rmtree(self.profile_dir) |
+ if self.locations_file: |
+ self.locations_file.close() |
+ |
+ def test_permissions_db(self): |
+ perms = Permissions(self.profile_dir, self.locations_file.name) |
+ perms_db_filename = os.path.join(self.profile_dir, 'permissions.sqlite') |
+ |
+ select_stmt = 'select host, type, permission from moz_hosts' |
+ |
+ con = sqlite3.connect(perms_db_filename) |
+ cur = con.cursor() |
+ cur.execute(select_stmt) |
+ entries = cur.fetchall() |
+ |
+ self.assertEqual(len(entries), 3) |
+ |
+ self.assertEqual(entries[0][0], 'mochi.test') |
+ self.assertEqual(entries[0][1], 'allowXULXBL') |
+ self.assertEqual(entries[0][2], 1) |
+ |
+ self.assertEqual(entries[1][0], '127.0.0.1') |
+ self.assertEqual(entries[1][1], 'allowXULXBL') |
+ self.assertEqual(entries[1][2], 2) |
+ |
+ self.assertEqual(entries[2][0], '127.0.0.1') |
+ self.assertEqual(entries[2][1], 'allowXULXBL') |
+ self.assertEqual(entries[2][2], 1) |
+ |
+ perms._locations.add_host('a.b.c', options='noxul') |
+ |
+ cur.execute(select_stmt) |
+ entries = cur.fetchall() |
+ |
+ self.assertEqual(len(entries), 4) |
+ self.assertEqual(entries[3][0], 'a.b.c') |
+ self.assertEqual(entries[3][1], 'allowXULXBL') |
+ self.assertEqual(entries[3][2], 2) |
+ |
+ perms.clean_db() |
+ # table should be removed |
+ cur.execute("select * from sqlite_master where type='table'") |
+ entries = cur.fetchall() |
+ self.assertEqual(len(entries), 0) |
+ |
+ def test_nw_prefs(self): |
+ perms = Permissions(self.profile_dir, self.locations_file.name) |
+ |
+ prefs, user_prefs = perms.network_prefs(False) |
+ |
+ self.assertEqual(len(user_prefs), 0) |
+ self.assertEqual(len(prefs), 6) |
+ |
+ self.assertEqual(prefs[0], ('capability.principal.codebase.p1.granted', |
+ 'UniversalXPConnect')) |
+ self.assertEqual(prefs[1], ('capability.principal.codebase.p1.id', |
+ 'http://mochi.test:8888')) |
+ self.assertEqual(prefs[2], ('capability.principal.codebase.p1.subjectName', '')) |
+ |
+ self.assertEqual(prefs[3], ('capability.principal.codebase.p2.granted', |
+ 'UniversalXPConnect')) |
+ self.assertEqual(prefs[4], ('capability.principal.codebase.p2.id', |
+ 'http://127.0.0.1:8888')) |
+ self.assertEqual(prefs[5], ('capability.principal.codebase.p2.subjectName', '')) |
+ |
+ |
+ prefs, user_prefs = perms.network_prefs(True) |
+ self.assertEqual(len(user_prefs), 2) |
+ self.assertEqual(user_prefs[0], ('network.proxy.type', 2)) |
+ self.assertEqual(user_prefs[1][0], 'network.proxy.autoconfig_url') |
+ |
+ origins_decl = "var origins = ['http://mochi.test:8888', 'http://127.0.0.1:80', 'http://127.0.0.1:8888'];" |
+ self.assertTrue(origins_decl in user_prefs[1][1]) |
+ |
+ proxy_check = "if (isHttp || isHttps || isWebSocket || isWebSocketSSL) return 'PROXY mochi.test:8888';" |
+ self.assertTrue(proxy_check in user_prefs[1][1]) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |
Property changes on: third_party/mozprofile/tests/permissions.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |