xref: /aosp_15_r20/external/autotest/client/common_lib/cros/enrollment.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2014 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Liimport logging
6*9c5db199SXin Li
7*9c5db199SXin Lifrom autotest_lib.client.bin import utils
8*9c5db199SXin Lifrom autotest_lib.client.common_lib.cros import chrome
9*9c5db199SXin Li
10*9c5db199SXin Li
11*9c5db199SXin Lidef _ExecuteOobeCmd(browser, cmd):
12*9c5db199SXin Li    logging.info('Invoking ' + cmd)
13*9c5db199SXin Li    oobe = browser.oobe
14*9c5db199SXin Li    oobe.WaitForJavaScriptCondition('typeof Oobe !== \'undefined\'',
15*9c5db199SXin Li                                    timeout=10)
16*9c5db199SXin Li    oobe.ExecuteJavaScript(cmd)
17*9c5db199SXin Li
18*9c5db199SXin Li
19*9c5db199SXin Lidef RemoraEnrollment(browser, user_id, password):
20*9c5db199SXin Li    """Enterprise login for a Remora device.
21*9c5db199SXin Li
22*9c5db199SXin Li    @param browser: telemetry browser object.
23*9c5db199SXin Li    @param user_id: login credentials user_id.
24*9c5db199SXin Li    @param password: login credentials password.
25*9c5db199SXin Li    """
26*9c5db199SXin Li    browser.oobe.NavigateGaiaLogin(
27*9c5db199SXin Li            user_id, password, enterprise_enroll=True,
28*9c5db199SXin Li            for_user_triggered_enrollment=False)
29*9c5db199SXin Li
30*9c5db199SXin Li
31*9c5db199SXin Lidef EnterpriseEnrollment(browser, user_id, password, auto_login=False):
32*9c5db199SXin Li    """Enterprise login for a kiosk device.
33*9c5db199SXin Li
34*9c5db199SXin Li    @param browser: telemetry browser object.
35*9c5db199SXin Li    @param user_id: login credentials user_id.
36*9c5db199SXin Li    @param password: login credentials password.
37*9c5db199SXin Li    @param auto_login: also login after enrollment.
38*9c5db199SXin Li    """
39*9c5db199SXin Li    browser.oobe.NavigateGaiaLogin(user_id, password,
40*9c5db199SXin Li                                   enterprise_enroll=True,
41*9c5db199SXin Li                                   for_user_triggered_enrollment=True)
42*9c5db199SXin Li    if auto_login:
43*9c5db199SXin Li        browser.oobe.NavigateGaiaLogin(user_id, password)
44*9c5db199SXin Li        # TODO(achuith): Replace with WaitForLogin.
45*9c5db199SXin Li        utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=30)
46*9c5db199SXin Li
47*9c5db199SXin Li
48*9c5db199SXin Lidef EnterpriseFakeEnrollment(browser, user_id, password, gaia_id,
49*9c5db199SXin Li                             auto_login=False):
50*9c5db199SXin Li    """Enterprise fake login.
51*9c5db199SXin Li
52*9c5db199SXin Li    @param browser: telemetry browser object.
53*9c5db199SXin Li    @param user_id: login credentials user_id.
54*9c5db199SXin Li    @param password: login credentials password.
55*9c5db199SXin Li    @param gaia_id: login credentials gaia_id.
56*9c5db199SXin Li    @param auto_login: also login after enrollment.
57*9c5db199SXin Li    """
58*9c5db199SXin Li    browser.oobe.NavigateFakeLogin(user_id, password, gaia_id,
59*9c5db199SXin Li                                   enterprise_enroll=True)
60*9c5db199SXin Li    # Oobe context recreated after after the enrollment.
61*9c5db199SXin Li    utils.poll_for_condition(
62*9c5db199SXin Li        lambda: browser.oobe_exists and
63*9c5db199SXin Li            browser.oobe.EnterpriseWebviewVisible(user_id), timeout=30)
64*9c5db199SXin Li
65*9c5db199SXin Li    if auto_login:
66*9c5db199SXin Li        browser.oobe.NavigateFakeLogin(user_id, password, gaia_id)
67*9c5db199SXin Li        # TODO(achuith): Replace with WaitForLogin.
68*9c5db199SXin Li        utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=45)
69*9c5db199SXin Li
70*9c5db199SXin Li
71*9c5db199SXin Lidef OnlineDemoMode(browser):
72*9c5db199SXin Li  """Switch to online demo mode.
73*9c5db199SXin Li
74*9c5db199SXin Li    @param browser: telemetry browser object.
75*9c5db199SXin Li  """
76*9c5db199SXin Li  _ExecuteOobeCmd(browser, 'Oobe.setUpOnlineDemoModeForTesting();')
77*9c5db199SXin Li  utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=90)
78*9c5db199SXin Li
79*9c5db199SXin Li
80*9c5db199SXin Lidef KioskEnrollment(browser, user_id, password, gaia_id):
81*9c5db199SXin Li    """Kiosk Enrollment.
82*9c5db199SXin Li
83*9c5db199SXin Li    @param browser: telemetry browser object.
84*9c5db199SXin Li    @param user_id: login credentials user_id.
85*9c5db199SXin Li    @param password: login credentials password.
86*9c5db199SXin Li    @param gaia_id: login credentials gaia_id.
87*9c5db199SXin Li    """
88*9c5db199SXin Li
89*9c5db199SXin Li    cmd = ('Oobe.loginForTesting("{user}", "{password}", "{gaia_id}", true)'
90*9c5db199SXin Li           .format(user=user_id,
91*9c5db199SXin Li                   password=password,
92*9c5db199SXin Li                   gaia_id=gaia_id))
93*9c5db199SXin Li    _ExecuteOobeCmd(browser, cmd)
94*9c5db199SXin Li
95*9c5db199SXin Li    utils.poll_for_condition(lambda: not browser.oobe_exists, timeout=60)
96