blob: 5f0bd529b4c97c98056887e39dc4105417565204 [file] [log] [blame] [edit]
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os, sys
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import chrome, session_manager
from autotest_lib.client.cros import constants, login, ownership
class login_OwnershipTakenTelemetry(test.test):
"""Sign in and ensure that ownership of the device is taken."""
version = 1
def setup(self):
os.chdir(self.srcdir)
utils.make('OUT_DIR=.')
def initialize(self):
self.auto_login = False # Will log in manually later.
ownership.clear_ownership_files()
if os.access(constants.OWNER_KEY_FILE, os.F_OK):
raise error.TestFail('Ownership already taken!')
def _validate_policy(self, retrieved_policy):
# Pull in protobuf definitions.
sys.path.append(self.srcdir)
from chrome_device_policy_pb2 import ChromeDeviceSettingsProto
from chrome_device_policy_pb2 import UserWhitelistProto
from device_management_backend_pb2 import PolicyData
from device_management_backend_pb2 import PolicyFetchResponse
response_proto = PolicyFetchResponse()
response_proto.ParseFromString(retrieved_policy)
ownership.assert_has_policy_data(response_proto)
poldata = PolicyData()
poldata.ParseFromString(response_proto.policy_data)
ownership.assert_has_device_settings(poldata)
ownership.assert_username(poldata, chrome.LOGIN_USER)
polval = ChromeDeviceSettingsProto()
polval.ParseFromString(poldata.policy_value)
ownership.assert_new_users(polval, True)
ownership.assert_users_on_whitelist(polval, (chrome.LOGIN_USER,))
def run_once(self):
with chrome.Chrome() as cr:
login.wait_for_ownership()
sm = session_manager.connect()
retrieved_policy = sm.RetrievePolicy(byte_arrays=True)
if retrieved_policy is None:
raise error.TestFail('Policy not found.')
self._validate_policy(retrieved_policy)