# found in the LICENSE file.
import logging
-import os
-import unittest
from telemetry import test
-from telemetry.core import browser_finder
from telemetry.core import exceptions
-from telemetry.core import extension_to_load
from telemetry.core import util
-from telemetry.core.backends.chrome import cros_interface
-from telemetry.unittest import options_for_unittests
-
-class CrOSTest(unittest.TestCase):
- def setUp(self):
- options = options_for_unittests.GetCopy()
- self._cri = cros_interface.CrOSInterface(options.cros_remote,
- options.cros_ssh_identity)
- self._is_guest = options.browser_type == 'cros-chrome-guest'
- self._username = options.browser_options.username
- self._password = options.browser_options.password
- self._load_extension = None
-
- def _CreateBrowser(self, autotest_ext=False, auto_login=True):
- """Finds and creates a browser for tests. if autotest_ext is True,
- also loads the autotest extension"""
- options = options_for_unittests.GetCopy()
-
- if autotest_ext:
- extension_path = os.path.join(util.GetUnittestDataDir(), 'autotest_ext')
- assert os.path.isdir(extension_path)
- self._load_extension = extension_to_load.ExtensionToLoad(
- path=extension_path,
- browser_type=options.browser_type,
- is_component=True)
- options.extensions_to_load = [self._load_extension]
-
- browser_to_create = browser_finder.FindBrowser(options)
- self.assertTrue(browser_to_create)
- options.browser_options.create_browser_with_oobe = True
- options.browser_options.auto_login = auto_login
- return browser_to_create.Create()
-
- def _GetAutotestExtension(self, browser):
- """Returns the autotest extension instance"""
- extension = browser.extensions[self._load_extension]
- self.assertTrue(extension)
- return extension
-
- def _IsCryptohomeMounted(self):
- """Returns True if cryptohome is mounted. as determined by the cmd
- cryptohome --action=is_mounted"""
- return self._cri.RunCmdOnDevice(
- ['/usr/sbin/cryptohome', '--action=is_mounted'])[0].strip() == 'true'
+from telemetry.core.backends.chrome import cros_test_case
+
+class CrOSCryptohomeTest(cros_test_case.CrOSTestCase):
@test.Enabled('chromeos')
def testCryptohome(self):
"""Verifies cryptohome mount status for regular and guest user and when
self.assertEquals(self._cri.FilesystemMountedAt('/home/chronos/user'),
'/dev/mapper/encstateful')
- def _GetLoginStatus(self, browser):
- extension = self._GetAutotestExtension(browser)
- self.assertTrue(extension.EvaluateJavaScript(
- "typeof('chrome.autotestPrivate') != 'undefined'"))
- extension.ExecuteJavaScript('''
- window.__login_status = null;
- chrome.autotestPrivate.loginStatus(function(s) {
- window.__login_status = s;
- });
- ''')
- return util.WaitFor(
- lambda: extension.EvaluateJavaScript('window.__login_status'), 10)
+class CrOSLoginTest(cros_test_case.CrOSTestCase):
@test.Enabled('chromeos')
def testLoginStatus(self):
"""Tests autotestPrivate.loginStatus"""
self.assertEquals(login_status['email'], self._username)
self.assertFalse(login_status['isScreenLocked'])
+ @test.Enabled('chromeos')
+ def testLogout(self):
+ """Tests autotestPrivate.logout"""
+ if self._is_guest:
+ return
+ with self._CreateBrowser(autotest_ext=True) as b:
+ extension = self._GetAutotestExtension(b)
+ try:
+ extension.ExecuteJavaScript('chrome.autotestPrivate.logout();')
+ except (exceptions.BrowserConnectionGoneException,
+ exceptions.BrowserGoneException):
+ pass
+ util.WaitFor(lambda: not self._IsCryptohomeMounted(), 20)
+
+ @test.Enabled('chromeos')
+ def testGaiaLogin(self):
+ """Tests gaia login. Credentials are expected to be found in a
+ credentials.txt file, with a single line of format username:password."""
+ if self._is_guest:
+ return
+ (username, password) = self._Credentials('credentials.txt')
+ if username and password:
+ with self._CreateBrowser(gaia_login=True,
+ username=username,
+ password=password):
+ self.assertTrue(util.WaitFor(self._IsCryptohomeMounted, 10))
+
+
+class CrOSScreenLockerTest(cros_test_case.CrOSTestCase):
def _IsScreenLocked(self, browser):
return self._GetLoginStatus(browser)['isScreenLocked']
self._LockScreen(browser)
self._AttemptUnlockBadPassword(browser)
self._UnlockScreen(browser)
-
- @test.Enabled('chromeos')
- def testLogout(self):
- """Tests autotestPrivate.logout"""
- if self._is_guest:
- return
- with self._CreateBrowser(autotest_ext=True) as b:
- extension = self._GetAutotestExtension(b)
- try:
- extension.ExecuteJavaScript('chrome.autotestPrivate.logout();')
- except (exceptions.BrowserConnectionGoneException,
- exceptions.BrowserGoneException):
- pass
- util.WaitFor(lambda: not self._IsCryptohomeMounted(), 20)