Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / backends / chrome / cros_unittest.py
index 6c0d266..35f3f28 100644 (file)
@@ -3,59 +3,14 @@
 # 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
@@ -79,19 +34,8 @@ class CrOSTest(unittest.TestCase):
     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"""
@@ -106,6 +50,35 @@ class CrOSTest(unittest.TestCase):
       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']
 
@@ -157,17 +130,3 @@ class CrOSTest(unittest.TestCase):
       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)