• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2014 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging, os, time
6
7from autotest_lib.client.bin import test, utils
8from autotest_lib.client.common_lib import error
9from autotest_lib.client.common_lib.cros import chrome, enrollment
10
11TIMEOUT = 20
12
13class enterprise_RemoraRequisition(test.test):
14    """Enroll as a Remora device."""
15    version = 1
16
17    _HANGOUTS_EXT_ID = 'acdafoiapclbpdkhnighhilgampkglpc'
18
19    def _WaitForHangouts(self, browser):
20        def _HangoutExtContexts():
21            try:
22                ext_contexts = browser.extensions.GetByExtensionId(
23                        self._HANGOUTS_EXT_ID)
24                if len(ext_contexts) > 1:
25                    return ext_contexts
26            except (KeyError, chrome.Error):
27                pass
28            return []
29        return utils.poll_for_condition(
30                _HangoutExtContexts,
31                exception=error.TestFail('Hangouts app failed to launch'),
32                timeout=30,
33                sleep_interval=1)
34
35    def _CheckHangoutsExtensionContexts(self, browser):
36        ext_contexts = self._WaitForHangouts(browser)
37        ext_urls = set([context.EvaluateJavaScript('location.href;')
38                       for context in ext_contexts])
39        expected_urls = set(
40                ['chrome-extension://' + self._HANGOUTS_EXT_ID + '/' + path
41                for path in ['hangoutswindow.html?windowid=0',
42                             '_generated_background_page.html']])
43        if expected_urls != ext_urls:
44            raise error.TestFail(
45                    'Unexpected extension context urls, expected %s, got %s'
46                    % (expected_urls, ext_urls))
47
48
49    def run_once(self):
50        user_id, password = utils.get_signin_credentials(os.path.join(
51                os.path.dirname(os.path.realpath(__file__)), 'credentials.txt'))
52        if not (user_id and password):
53            logging.warn('No credentials found - exiting test.')
54            return
55
56        with chrome.Chrome(auto_login=False) as cr:
57            enrollment.RemoraEnrollment(cr.browser, user_id, password)
58            # Timeout to allow for the device to stablize and go back to the
59            # login screen before proceeding.
60            time.sleep(TIMEOUT)
61
62        # This is a workaround fix for crbug.com/495847. A more permanent fix
63        # should be to get the hotrod app to auto launch after enrollment.
64        with chrome.Chrome(clear_enterprise_policy=False,
65                           dont_override_profile=True,
66                           disable_gaia_services=False,
67                           disable_default_apps=False,
68                           auto_login=False) as cr:
69            self._CheckHangoutsExtensionContexts(cr.browser)
70