Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
    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'))
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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")
Exemplo n.º 8
0
    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")