OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import json | 4 import json |
5 import logging | 5 import logging |
6 import os | 6 import os |
7 import unittest | 7 import unittest |
8 | 8 |
9 from telemetry.core import browser_finder | 9 from telemetry.core import browser_finder |
10 from telemetry.core import exceptions | 10 from telemetry.core import exceptions |
(...skipping 11 matching lines...) Expand all Loading... |
22 self._email = '' if self._is_guest else 'test@test.test' | 22 self._email = '' if self._is_guest else 'test@test.test' |
23 | 23 |
24 def _IsCryptohomeMounted(self): | 24 def _IsCryptohomeMounted(self): |
25 """Returns True if cryptohome is mounted""" | 25 """Returns True if cryptohome is mounted""" |
26 cryptohomeJSON, _ = self._cri.RunCmdOnDevice(['/usr/sbin/cryptohome', | 26 cryptohomeJSON, _ = self._cri.RunCmdOnDevice(['/usr/sbin/cryptohome', |
27 '--action=status']) | 27 '--action=status']) |
28 cryptohomeStatus = json.loads(cryptohomeJSON) | 28 cryptohomeStatus = json.loads(cryptohomeJSON) |
29 return (cryptohomeStatus['mounts'] and | 29 return (cryptohomeStatus['mounts'] and |
30 cryptohomeStatus['mounts'][0]['mounted']) | 30 cryptohomeStatus['mounts'][0]['mounted']) |
31 | 31 |
32 def _CreateBrowser(self, with_autotest_ext): | 32 def _CreateBrowser(self, autotest_ext=False, auto_login=True): |
33 """Finds and creates a browser for tests. if with_autotest_ext is True, | 33 """Finds and creates a browser for tests. if autotest_ext is True, |
34 also loads the autotest extension""" | 34 also loads the autotest extension""" |
35 options = options_for_unittests.GetCopy() | 35 options = options_for_unittests.GetCopy() |
36 | 36 |
37 if with_autotest_ext: | 37 if autotest_ext: |
38 extension_path = os.path.join(os.path.dirname(__file__), 'autotest_ext') | 38 extension_path = os.path.join(os.path.dirname(__file__), 'autotest_ext') |
39 self._load_extension = extension_to_load.ExtensionToLoad( | 39 self._load_extension = extension_to_load.ExtensionToLoad( |
40 path=extension_path, | 40 path=extension_path, |
41 browser_type=options.browser_type, | 41 browser_type=options.browser_type, |
42 is_component=True) | 42 is_component=True) |
43 options.extensions_to_load = [self._load_extension] | 43 options.extensions_to_load = [self._load_extension] |
44 options.browser_options.create_browser_with_oobe = True | |
45 | 44 |
46 browser_to_create = browser_finder.FindBrowser(options) | 45 browser_to_create = browser_finder.FindBrowser(options) |
47 self.assertTrue(browser_to_create) | 46 self.assertTrue(browser_to_create) |
| 47 options.browser_options.create_browser_with_oobe = True |
| 48 options.browser_options.auto_login = auto_login |
48 b = browser_to_create.Create() | 49 b = browser_to_create.Create() |
49 b.Start() | 50 b.Start() |
50 return b | 51 return b |
51 | 52 |
52 def _GetAutotestExtension(self, browser): | 53 def _GetAutotestExtension(self, browser): |
53 """Returns the autotest extension instance""" | 54 """Returns the autotest extension instance""" |
54 extension = browser.extensions[self._load_extension] | 55 extension = browser.extensions[self._load_extension] |
55 self.assertTrue(extension) | 56 self.assertTrue(extension) |
56 return extension | 57 return extension |
57 | 58 |
58 def _GetLoginStatus(self, browser): | 59 def _GetLoginStatus(self, browser): |
59 extension = self._GetAutotestExtension(browser) | 60 extension = self._GetAutotestExtension(browser) |
60 self.assertTrue(extension.EvaluateJavaScript( | 61 self.assertTrue(extension.EvaluateJavaScript( |
61 "typeof('chrome.autotestPrivate') != 'undefined'")) | 62 "typeof('chrome.autotestPrivate') != 'undefined'")) |
62 extension.ExecuteJavaScript(''' | 63 extension.ExecuteJavaScript(''' |
63 window.__login_status = null; | 64 window.__login_status = null; |
64 chrome.autotestPrivate.loginStatus(function(s) { | 65 chrome.autotestPrivate.loginStatus(function(s) { |
65 window.__login_status = s; | 66 window.__login_status = s; |
66 }); | 67 }); |
67 ''') | 68 ''') |
68 return util.WaitFor( | 69 return util.WaitFor( |
69 lambda: extension.EvaluateJavaScript('window.__login_status'), 10) | 70 lambda: extension.EvaluateJavaScript('window.__login_status'), 10) |
70 | 71 |
71 def testCryptohomeMounted(self): | 72 def testCryptohomeMounted(self): |
72 """Verifies cryptohome mount status for regular and guest user and when | 73 """Verifies cryptohome mount status for regular and guest user and when |
73 logged out""" | 74 logged out""" |
74 with self._CreateBrowser(False) as b: | 75 with self._CreateBrowser() as b: |
75 self.assertEquals(1, len(b.tabs)) | 76 self.assertEquals(1, len(b.tabs)) |
76 self.assertTrue(b.tabs[0].url) | 77 self.assertTrue(b.tabs[0].url) |
77 self.assertTrue(self._IsCryptohomeMounted()) | 78 self.assertTrue(self._IsCryptohomeMounted()) |
78 | 79 |
79 chronos_fs = self._cri.FilesystemMountedAt('/home/chronos/user') | 80 chronos_fs = self._cri.FilesystemMountedAt('/home/chronos/user') |
80 self.assertTrue(chronos_fs) | 81 self.assertTrue(chronos_fs) |
81 if self._is_guest: | 82 if self._is_guest: |
82 self.assertEquals(chronos_fs, 'guestfs') | 83 self.assertEquals(chronos_fs, 'guestfs') |
83 else: | 84 else: |
84 home, _ = self._cri.RunCmdOnDevice(['/usr/sbin/cryptohome-path', | 85 home, _ = self._cri.RunCmdOnDevice(['/usr/sbin/cryptohome-path', |
85 'user', self._email]) | 86 'user', self._email]) |
86 self.assertEquals(self._cri.FilesystemMountedAt(home.rstrip()), | 87 self.assertEquals(self._cri.FilesystemMountedAt(home.rstrip()), |
87 chronos_fs) | 88 chronos_fs) |
88 | 89 |
89 self.assertFalse(self._IsCryptohomeMounted()) | 90 self.assertFalse(self._IsCryptohomeMounted()) |
90 self.assertEquals(self._cri.FilesystemMountedAt('/home/chronos/user'), | 91 self.assertEquals(self._cri.FilesystemMountedAt('/home/chronos/user'), |
91 '/dev/mapper/encstateful') | 92 '/dev/mapper/encstateful') |
92 | 93 |
93 def testLoginStatus(self): | 94 def testLoginStatus(self): |
94 """Tests autotestPrivate.loginStatus""" | 95 """Tests autotestPrivate.loginStatus""" |
95 with self._CreateBrowser(True) as b: | 96 with self._CreateBrowser(autotest_ext=True) as b: |
96 login_status = self._GetLoginStatus(b) | 97 login_status = self._GetLoginStatus(b) |
97 self.assertEquals(type(login_status), dict) | 98 self.assertEquals(type(login_status), dict) |
98 | 99 |
99 self.assertEquals(not self._is_guest, login_status['isRegularUser']) | 100 self.assertEquals(not self._is_guest, login_status['isRegularUser']) |
100 self.assertEquals(self._is_guest, login_status['isGuest']) | 101 self.assertEquals(self._is_guest, login_status['isGuest']) |
101 self.assertEquals(login_status['email'], self._email) | 102 self.assertEquals(login_status['email'], self._email) |
102 self.assertFalse(login_status['isScreenLocked']) | 103 self.assertFalse(login_status['isScreenLocked']) |
103 | 104 |
104 def _IsScreenLocked(self, browser): | 105 def _IsScreenLocked(self, browser): |
105 return self._GetLoginStatus(browser)['isScreenLocked'] | 106 return self._GetLoginStatus(browser)['isScreenLocked'] |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 def _UnlockScreen(self, browser): | 139 def _UnlockScreen(self, browser): |
139 logging.info('Unlocking') | 140 logging.info('Unlocking') |
140 browser.oobe.ExecuteJavaScript(''' | 141 browser.oobe.ExecuteJavaScript(''' |
141 Oobe.authenticateForTesting('test@test.test', ''); | 142 Oobe.authenticateForTesting('test@test.test', ''); |
142 ''') | 143 ''') |
143 util.WaitFor(lambda: not browser.oobe, 10) | 144 util.WaitFor(lambda: not browser.oobe, 10) |
144 self.assertFalse(self._IsScreenLocked(browser)) | 145 self.assertFalse(self._IsScreenLocked(browser)) |
145 | 146 |
146 def testScreenLock(self): | 147 def testScreenLock(self): |
147 """Tests autotestPrivate.screenLock""" | 148 """Tests autotestPrivate.screenLock""" |
148 with self._CreateBrowser(True) as browser: | 149 with self._CreateBrowser(autotest_ext=True) as browser: |
149 self._LockScreen(browser) | 150 self._LockScreen(browser) |
150 self._AttemptUnlockBadPassword(browser) | 151 self._AttemptUnlockBadPassword(browser) |
151 self._UnlockScreen(browser) | 152 self._UnlockScreen(browser) |
152 | 153 |
153 | 154 |
154 def testLogout(self): | 155 def testLogout(self): |
155 """Tests autotestPrivate.logout""" | 156 """Tests autotestPrivate.logout""" |
156 with self._CreateBrowser(True) as b: | 157 with self._CreateBrowser(autotest_ext=True) as b: |
157 extension = self._GetAutotestExtension(b) | 158 extension = self._GetAutotestExtension(b) |
158 try: | 159 try: |
159 extension.ExecuteJavaScript('chrome.autotestPrivate.logout();') | 160 extension.ExecuteJavaScript('chrome.autotestPrivate.logout();') |
160 except (exceptions.BrowserConnectionGoneException, | 161 except (exceptions.BrowserConnectionGoneException, |
161 exceptions.BrowserGoneException): | 162 exceptions.BrowserGoneException): |
162 pass | 163 pass |
163 util.WaitFor(lambda: not self._IsCryptohomeMounted(), 20) | 164 util.WaitFor(lambda: not self._IsCryptohomeMounted(), 20) |
OLD | NEW |