def test_04_bookmarks_parse(self): # Setup test directory TMPDIR = self.setup_test_directory() mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Check bookmarks tree parsing to policy format result = chromium_logger.parse_bookmarks(DEFAULT_BOOKMARKS_DATA) self.assertEqual(json.dumps(PARSED_BOOKMARKS_DATA, sort_keys=True), json.dumps(result, sort_keys=True))
def test_01_local_state_startup(self): # Setup test directory TMPDIR = self.setup_test_directory(["Profile 1"]) mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) self.assertTrue( os.path.join(TMPDIR, 'Profile 1/Preferences') in \ chromium_logger.monitored_preferences)
def test_06_deploy_bookmarks(self): # Setup test directory TMPDIR = self.setup_test_directory() mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Parse bookmarks data bmarks = chromium_logger.parse_bookmarks(DEFAULT_BOOKMARKS_DATA) # Generate bookmarks for deployment returned = chromium_logger.deploy_bookmarks(bmarks) self.assertEqual(json.dumps(DEPLOY_BOOKMARKS_DATA, sort_keys=True), json.dumps(returned, sort_keys=True))
def test_03_get_preference_value(self): # Setup test directory TMPDIR = self.setup_test_directory() mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Existent key self.assertEqual( True, chromium_logger.get_preference_value(DEFAULT_PREFERENCES_1_DATA, 'browser.show_home_button')) # Non existent key self.assertEqual( None, chromium_logger.get_preference_value(DEFAULT_PREFERENCES_1_DATA, 'nonexistent.key.name'))
def test_05_get_modified_bookmarks(self): # Setup test directory TMPDIR = self.setup_test_directory() mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Parse bookmarks data bmarks1 = chromium_logger.parse_bookmarks(DEFAULT_BOOKMARKS_DATA) bmarks2 = chromium_logger.parse_bookmarks(MODIFIED_BOOKMARKS_DATA) # Check difference with same bookmarks is an empty list returned = chromium_logger.get_modified_bookmarks(bmarks1, bmarks1) self.assertEqual(json.dumps([], sort_keys=True), json.dumps(returned, sort_keys=True)) # Check difference with different bookmarks data is ok returned = chromium_logger.get_modified_bookmarks(bmarks1, bmarks2) self.assertEqual(json.dumps(DIFFERENCE_BOOKMARKS_DATA, sort_keys=True), json.dumps(returned, sort_keys=True))
def test_02_local_state_monitoring(self): # Helper function to simulate file modified notification def simulate_filenotification(clogger): clogger._local_state_file_updated( clogger.file_monitors[clogger.local_state_path], Gio.File.new_for_path(clogger.local_state_path), None, Gio.FileMonitorEvent.CHANGES_DONE_HINT) # Setup test directory TMPDIR = self.setup_test_directory() mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Add a new session to the Local State file local_state_data = DEFAULT_LOCAL_STATE_DATA local_state_data['profile']['last_active_profiles'] = ['Profile 1'] with open(os.path.join(TMPDIR, 'Local State'), 'w') as fd: fd.write(json.dumps(local_state_data, sort_keys=True)) fd.close() # Simulate a local state file modification simulate_filenotification(chromium_logger) self.assertTrue( os.path.join(TMPDIR, 'Profile 1/Preferences') in \ chromium_logger.monitored_preferences) # Add a new session to the Local State file local_state_data['profile']['last_active_profiles'] = [ 'Profile 1', 'Profile 2' ] with open(os.path.join(TMPDIR, 'Local State'), 'w') as fd: fd.write(json.dumps(local_state_data, sort_keys=True)) fd.close() # Simulate a local state file modification simulate_filenotification(chromium_logger) self.assertTrue( os.path.join(TMPDIR, 'Profile 2/Preferences') in \ chromium_logger.monitored_preferences)
def test_08_bookmarks_monitoring(self): logging.info("Start test_08_bookmarks_monitoring") # Helper method to write bookmarks and simulate a file modified notification def write_bmarks(clogger, bmarks, path): # Write a new supported setting to the preferences file 1 with open(path, 'w') as fd: fd.write(json.dumps(bmarks, sort_keys=True)) fd.close() # Simulate a change in preferences file 1 clogger._bookmarks_file_updated( clogger.file_monitors[path], Gio.File.new_for_path(path), None, Gio.FileMonitorEvent.CHANGES_DONE_HINT) # Setup test directory TMPDIR = self.setup_test_directory(['Profile 1', 'Profile 2']) bmarks1_path = os.path.join(TMPDIR, 'Profile 1/Bookmarks') bmarks2_path = os.path.join(TMPDIR, 'Profile 2/Bookmarks') mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) # Check bookmarks modification for only one session write_bmarks(chromium_logger, MODIFIED_BOOKMARKS_DATA, bmarks1_path) data = mgr.pop() received = json.dumps([data[0], json.loads(data[1])], sort_keys=True) print("EXPECTED: %s" % json.dumps([ chromium_logger.namespace, { "key": "ManagedBookmarks", "value": DEPLOY_DIFF_BOOKMARKS_DATA } ], sort_keys=True)) print("RECEIVED: %s" % received) self.assertEqual( json.dumps([ chromium_logger.namespace, { "key": "ManagedBookmarks", "value": DEPLOY_DIFF_BOOKMARKS_DATA } ], sort_keys=True), received) # Test bookmarks modification for a second session write_bmarks(chromium_logger, MODIFIED_BOOKMARKS_DATA, bmarks2_path) data = mgr.pop() received = json.dumps([data[0], json.loads(data[1])], sort_keys=True) multisession = DEPLOY_DIFF_BOOKMARKS_DATA + DEPLOY_DIFF_BOOKMARKS_DATA self.assertEqual( json.dumps([ chromium_logger.namespace, { "key": 'ManagedBookmarks', "value": multisession } ], sort_keys=True), received) logging.info("Start test_08_bookmarks_monitoring")
def test_07_preferences_monitoring(self): logging.info("Start test_07_preferences_monitoring") # Helper method to write prefs and simulate file modified notification def write_prefs(clogger, prefs, path): # Write a new supported setting to the preferences file 1 with open(path, 'w') as fd: fd.write(json.dumps(prefs, sort_keys=True)) fd.close() # Simulate a change in preferences file 1 clogger._preferences_file_updated( clogger.file_monitors[path], Gio.File.new_for_path(path), None, Gio.FileMonitorEvent.CHANGES_DONE_HINT) # Setup test directory TMPDIR = self.setup_test_directory(['Profile 1']) mgr = MockConnectionManager() chromium_logger = FleetCommander.ChromiumLogger(mgr, TMPDIR) prefs1 = DEFAULT_PREFERENCES_1_DATA prefs1_path = os.path.join(TMPDIR, 'Profile 1/Preferences') # Write a new supported setting to the preferences file 1 prefs1['bookmark_bar'] = {'show_on_all_tabs': True} write_prefs(chromium_logger, prefs1, prefs1_path) data = mgr.pop() received = json.dumps([data[0], json.loads(data[1])], sort_keys=True) self.assertEqual( json.dumps([ chromium_logger.namespace, { 'key': 'BookmarkBarEnabled', 'value': True } ], sort_keys=True), received) # Write an unsupported setting to the preferences file 1 prefs1['nonexistent'] = {'unknownkey': True} write_prefs(chromium_logger, prefs1, prefs1_path) self.assertEqual(len(mgr.log), 0) # Modify a supported setting on the preferences file 1 prefs1['browser'] = {'show_home_button': False} write_prefs(chromium_logger, prefs1, prefs1_path) data = mgr.pop() received = json.dumps([data[0], json.loads(data[1])], sort_keys=True) self.assertEqual( json.dumps([ chromium_logger.namespace, { 'key': 'ShowHomeButton', 'value': False } ], sort_keys=True), received) # Modify an unsupported setting on the preferences file 1 prefs1['nonexistent'] = {'unknownkey': False} write_prefs(chromium_logger, prefs1, prefs1_path) self.assertEqual(len(mgr.log), 0) logging.info("End test_07_preferences_monitoring")