summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraocampo@chromium.org <aocampo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-06 03:15:29 +0000
committeraocampo@chromium.org <aocampo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-06 03:15:29 +0000
commita82aa8513ec8f638ab2d68fca5e6a1a1d5fd1e67 (patch)
tree257caef65d6476aa0cb5e4e9afd6847b04f77953
parent54543699023a921731fad3aa6fb5a1702e955ddd (diff)
downloadchromium_src-a82aa8513ec8f638ab2d68fca5e6a1a1d5fd1e67.zip
chromium_src-a82aa8513ec8f638ab2d68fca5e6a1a1d5fd1e67.tar.gz
chromium_src-a82aa8513ec8f638ab2d68fca5e6a1a1d5fd1e67.tar.bz2
- Added another class 'EnterpriseTestSetTwo'to test another set of policy values.
- Modified enterprise_helper_linux script to handle changing file permissions for multiple json files. BUG=NONE Review URL: http://codereview.chromium.org/7453062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95718 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/test/functional/enterprise.py261
-rw-r--r--chrome/test/functional/enterprise_helper_linux.py6
2 files changed, 265 insertions, 2 deletions
diff --git a/chrome/test/functional/enterprise.py b/chrome/test/functional/enterprise.py
index 0e12104..cad9329 100644
--- a/chrome/test/functional/enterprise.py
+++ b/chrome/test/functional/enterprise.py
@@ -325,6 +325,267 @@ class EnterpriseTest(pyauto.PyUITest):
pid = self._GetPluginPID('Java')
self.assertTrue(pid, 'No plugin process for java')
+class EnterpriseTestReverse(pyauto.PyUITest):
+ """Test for the Enterprise features that uses the opposite values of the
+ policies used by above test class 'EnterpriseTest'.
+
+ Browser preferences will be managed using policies. These managed preferences
+ cannot be modified by user. This works only for Google Chrome, not Chromium.
+
+ On Linux, assume that 'suid-python' (a python binary setuid root) is
+ available on the machine under /usr/local/bin directory.
+ """
+ assert pyauto.PyUITest.IsWin() or pyauto.PyUITest.IsLinux(), \
+ 'Only runs on Win or Linux'
+
+ def Debug(self):
+ """Test method for experimentation.
+
+ This method will not run automatically.
+ """
+ import pprint
+ pp = pprint.PrettyPrinter(indent=2)
+ while True:
+ raw_input('Interact with the browser and hit <enter> to dump prefs... ')
+ pp.pprint(self.GetPrefsInfo().Prefs())
+
+ @staticmethod
+ def _Cleanup():
+ """Removes the registry key and its subkeys(if they exist).
+
+ Win: Registry Key being deleted: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google
+ Linux: Removes the chrome directory from /etc/opt
+ """
+ if pyauto.PyUITest.IsWin():
+ if subprocess.call(
+ r'reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google') == 0:
+ logging.debug(r'Removing HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google')
+ subprocess.call(r'reg delete HKLM\Software\Policies\Google /f')
+ elif pyauto.PyUITest.IsLinux():
+ sudo_cmd_file = os.path.join(os.path.dirname(__file__),
+ 'enterprise_helper_linux.py')
+ if os.path.isdir ('/etc/opt/chrome'):
+ logging.debug('Removing directory /etc/opt/chrome/')
+ subprocess.call(['suid-python', sudo_cmd_file,
+ 'remove_dir', '/etc/opt/chrome'])
+
+ @staticmethod
+ def _SetUp():
+ """Win: Add the registry keys from the .reg file.
+
+ Removes the registry key and its subkeys if they exist.
+ Adding HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google.
+
+ Linux: Copy the chrome.json file to the managed directory.
+ Remove /etc/opt/chrome directory if it exists.
+ """
+ EnterpriseTestReverse._Cleanup()
+ if pyauto.PyUITest.IsWin():
+ registry_location = os.path.join(EnterpriseTestReverse.DataDir(),
+ 'enterprise', 'chrome-add-reverse.reg')
+ # Add the registry keys
+ subprocess.call('reg import %s' % registry_location)
+ elif pyauto.PyUITest.IsLinux():
+ chrome_json = os.path.join(EnterpriseTestReverse.DataDir(),
+ 'enterprise', 'chrome-reverse.json')
+ sudo_cmd_file = os.path.join(os.path.dirname(__file__),
+ 'enterprise_helper_linux.py')
+ policies_location = '/etc/opt/chrome/policies/managed'
+ subprocess.call(['suid-python', sudo_cmd_file,
+ 'setup_dir', policies_location])
+ # Copy chrome.json file to the managed directory
+ subprocess.call(['suid-python', sudo_cmd_file,
+ 'copy', chrome_json, policies_location])
+
+ def setUp(self):
+ # Add policies through registry or json file.
+ self._SetUp()
+ # Check if registries are created in Win.
+ if pyauto.PyUITest.IsWin():
+ registry_query_code = subprocess.call(
+ r'reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google')
+ assert registry_query_code == 0, 'Could not create registries.'
+ # Check if json file is copied under correct location in Linux.
+ elif pyauto.PyUITest.IsLinux():
+ policy_file_check = os.path.isfile(
+ '/etc/opt/chrome/policies/managed/chrome-reverse.json')
+ assert policy_file_check, 'Policy file(s) not set up.'
+ pyauto.PyUITest.setUp(self)
+
+ def tearDown(self):
+ pyauto.PyUITest.tearDown(self)
+ EnterpriseTestReverse._Cleanup()
+
+ def _CheckIfPrefCanBeModified(self, key, defaultval, newval):
+ """Check if the managed preferences can be modified.
+
+ Args:
+ key: The preference key that you want to modify
+ defaultval: Default value of the preference that we are trying to modify
+ newval: New value that we are trying to set
+ """
+ # Check if the default value of the preference is set as expected.
+ self.assertEqual(self.GetPrefsInfo().Prefs(key), defaultval,
+ msg='Default value of the preference is wrong.')
+ self.assertRaises(pyauto.JSONInterfaceError,
+ lambda: self.SetPrefs(key, newval))
+
+ def _GetPluginPID(self, plugin_name):
+ """Fetch the pid of the plugin process with name |plugin_name|."""
+ child_processes = self.GetBrowserInfo()['child_processes']
+ plugin_type = 'Plug-in'
+ for x in child_processes:
+ if x['type'] == plugin_type and re.search(plugin_name, x['name']):
+ return x['pid']
+ return None
+
+ # Tests for options in Basics
+ def testStartupPages(self):
+ """Verify that user cannot modify the startup page options."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ # Verify startup option
+ self.assertEquals(0, self.GetPrefsInfo().Prefs(pyauto.kRestoreOnStartup))
+ self.assertRaises(pyauto.JSONInterfaceError,
+ lambda: self.SetPrefs(pyauto.kRestoreOnStartup, 1))
+
+ def testHomePageOptions(self):
+ """Verify that we cannot modify Homepage settings."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ # Try to configure home page URL
+ self.assertEquals('http://chromium.org',
+ self.GetPrefsInfo().Prefs('homepage'))
+ self.assertRaises(pyauto.JSONInterfaceError,
+ lambda: self.SetPrefs('homepage', 'http://www.google.com'))
+
+ # Try to reconfigure NTP as home page
+ self.assertFalse(self.GetPrefsInfo().Prefs(pyauto.kHomePageIsNewTabPage))
+ self.assertRaises(pyauto.JSONInterfaceError,
+ lambda: self.SetPrefs(pyauto.kHomePageIsNewTabPage, True))
+
+ def testShowHomeButton(self):
+ """Verify that home button option cannot be modified when it's managed."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self._CheckIfPrefCanBeModified(pyauto.kShowHomeButton, False, True)
+
+ def testInstant(self):
+ """Verify that Instant option cannot be modified."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self._CheckIfPrefCanBeModified(pyauto.kInstantEnabled, False, True)
+
+ # Tests for options in Personal Stuff
+ def testPasswordManagerEnabled(self):
+ """Verify that password manager preference cannot be modified."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self._CheckIfPrefCanBeModified(pyauto.kPasswordManagerEnabled, False, True)
+
+ # Tests for options in Under the Hood
+ def testPrivacyPrefs(self):
+ """Verify that the managed preferences cannot be modified."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ prefs_list = [
+ # (preference key, default value, new value)
+ (pyauto.kAlternateErrorPagesEnabled, False, True),
+ (pyauto.kNetworkPredictionEnabled, False, True),
+ (pyauto.kSafeBrowsingEnabled, False, True),
+ (pyauto.kSearchSuggestEnabled, False, True),
+ ]
+ # Check if the policies got applied by trying to modify
+ for key, defaultval, newval in prefs_list:
+ logging.info('Checking pref %s', key)
+ self._CheckIfPrefCanBeModified(key, defaultval, newval)
+
+ def testNotClearSiteDataOnExit(self):
+ """Verify that clear data on exit preference cannot be modified."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self._CheckIfPrefCanBeModified(pyauto.kClearSiteDataOnExit, False, True)
+
+ def testUnblockThirdPartyCookies(self):
+ """Verify that block third party cookies preference cannot be modified."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self._CheckIfPrefCanBeModified(pyauto.kBlockThirdPartyCookies, False, True)
+
+ def testEnableDevTools(self):
+ """Verify that devtools window can be launched."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ # DevTools process can be seen by PyAuto only when it's undocked.
+ self.SetPrefs(pyauto.kDevToolsOpenDocked, False)
+ self.ApplyAccelerator(pyauto.IDC_DEV_TOOLS)
+ self.assertEquals(2, len(self.GetBrowserInfo()['windows']),
+ msg='Devtools window not launched.')
+
+ def testEnableSPDY(self):
+ """Verify that SPDY is enabled."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self.NavigateToURL('chrome://net-internals/#spdy')
+ self.assertEquals(0,
+ self.FindInPage('encrypted.google.com')['match_count'])
+ self.AppendTab(pyauto.GURL('https://encrypted.google.com'))
+ self.assertEquals('Google', self.GetActiveTabTitle())
+ self.GetBrowserWindow(0).GetTab(0).Reload()
+ self.assertEquals(1,
+ self.FindInPage('encrypted.google.com', tab_index=0)['match_count'],
+ msg='SPDY is not enabled.')
+
+ def testSetDownloadDirectory(self):
+ """Verify that the downloads directory and prompt for download preferences
+ can be modified.
+ """
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ if self.IsWin():
+ download_default_dir = os.path.join(os.getenv('USERPROFILE'),'Downloads')
+ self.assertEqual(download_default_dir,
+ self.GetPrefsInfo().Prefs()['download']['default_directory'],
+ msg='Downloads directory is not set correctly.')
+ # Check for changing the download directory location
+ self.SetPrefs(pyauto.kDownloadDefaultDirectory,
+ os.getenv('USERPROFILE'))
+ elif self.IsLinux():
+ download_default_dir = os.path.join(os.getenv('HOME'), 'Downloads')
+ self.assertEqual(download_default_dir,
+ self.GetPrefsInfo().Prefs()['download']['default_directory'],
+ msg='Downloads directory is not set correctly.')
+ self.SetPrefs(pyauto.kDownloadDefaultDirectory,
+ os.getenv('HOME'))
+ # Check for changing the option 'Ask for each download'
+ self.SetPrefs(pyauto.kPromptForDownload, False)
+
+ def testIncognitoDisabled(self):
+ """Verify that incognito window can be launched."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ self.RunCommand(pyauto.IDC_NEW_INCOGNITO_WINDOW)
+ self.assertEquals(1, self.GetBrowserWindowCount())
+
+ def testEnableBrowsingHistory(self):
+ """Verify that browsing history is being saved."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ url = self.GetFileURLForPath(os.path.join(self.DataDir(), 'empty.html'))
+ self.NavigateToURL(url)
+ self.assertTrue(self.GetHistoryInfo().History(),
+ msg='History not is being saved.')
+
+ def testAlwaysAuthorizePluginsDisabled(self):
+ """Verify plugins are always not allowed to run when policy is set."""
+ if self.GetBrowserInfo()['properties']['branding'] != 'Google Chrome':
+ return
+ url = self.GetFileURLForDataPath('plugin', 'java_new.html')
+ self.NavigateToURL(url)
+ self.assertTrue(self.WaitForInfobarCount(1))
+ pid = self._GetPluginPID('Java')
+ self.assertFalse(pid, 'There is a plugin process for java')
+
if __name__ == '__main__':
pyauto_functional.Main()
diff --git a/chrome/test/functional/enterprise_helper_linux.py b/chrome/test/functional/enterprise_helper_linux.py
index 1d44eec9..a2e5782 100644
--- a/chrome/test/functional/enterprise_helper_linux.py
+++ b/chrome/test/functional/enterprise_helper_linux.py
@@ -14,8 +14,10 @@ def main():
assert os.geteuid() == 0, 'Need superuser privileges'
if sys.argv[1] == 'copy':
shutil.copy(sys.argv[2], sys.argv[3])
- filename = os.path.join(sys.argv[3], 'chrome.json')
- os.chmod(filename, 0755)
+ dirList = os.listdir(sys.argv[3])
+ for fname in dirList:
+ filename = os.path.join(sys.argv[3], fname)
+ os.chmod(filename, 0755)
elif sys.argv[1] == 'setup_dir':
os.system('mkdir -p %s' % sys.argv[2])
os.system('chmod -R 755 /etc/opt/chrome/')