1# Copyright 2016 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
6import os
7import time
8
9from autotest_lib.client.bin import test, utils
10from autotest_lib.client.common_lib import error
11from autotest_lib.client.common_lib.cros import chrome
12from autotest_lib.client.common_lib.cros import enrollment
13from autotest_lib.client.common_lib.cros import kiosk_utils
14from autotest_lib.client.common_lib import utils as utils2
15
16KIOSK_MODE = 'Starting kiosk mode...'
17
18
19class enterprise_KioskEnrollment(test.test):
20    """Enroll the device in enterprise."""
21    version = 1
22
23    APP_NAME = 'chromesign'
24    EXT_ID = 'odjaaghiehpobimgdjjfofmablbaleem'
25    EXT_PAGE = 'viewer.html'
26
27    def _CheckKioskExtensionContexts(self, browser):
28        ext_contexts = kiosk_utils.wait_for_kiosk_ext(
29                browser, self.EXT_ID)
30        ext_urls = set([context.EvaluateJavaScript('location.href;')
31                       for context in ext_contexts])
32        expected_urls = set(
33                ['chrome-extension://' + self.EXT_ID + '/' + path
34                for path in [self.EXT_PAGE,
35                             '_generated_background_page.html']])
36        if expected_urls != ext_urls:
37            raise error.TestFail(
38                    'Unexpected extension context urls, expected %s, got %s'
39                    % (expected_urls, ext_urls))
40
41
42    def run_once(self, kiosk_app_attributes=None):
43        if kiosk_app_attributes:
44            self.APP_NAME, self.EXT_ID, self.EXT_PAGE = \
45                    kiosk_app_attributes.rstrip().split(':')
46        user_id, password = utils.get_signin_credentials(os.path.join(
47                os.path.dirname(os.path.realpath(__file__)),
48                'credentials.' + self.APP_NAME))
49        if not (user_id and password):
50            logging.warn('No credentials found - exiting test.')
51            return
52
53        with chrome.Chrome(auto_login=False,
54                           disable_gaia_services=False) as cr:
55            enrollment.EnterpriseEnrollment(cr.browser, user_id, password)
56        # This way of checking a kiosk extension doesn't work.
57        #self._CheckKioskExtensionContexts(cr.browser)
58        time.sleep(15)
59        running_apps = utils2.system_output('cat /var/log/messages | grep kiosk')
60        if KIOSK_MODE not in running_apps:
61            raise error.TestFail(
62                'DUT did not enter kiosk mode. and it should have.')
63