Index: client/cros/cros_ownership_test.py |
diff --git a/client/cros/cros_ownership_test.py b/client/cros/cros_ownership_test.py |
index 54f1f29286cb5d03a19531e20c3fab66c6628a0d..2530fa12223a258bca40a3a7e78321de25e0ad11 100644 |
--- a/client/cros/cros_ownership_test.py |
+++ b/client/cros/cros_ownership_test.py |
@@ -43,33 +43,55 @@ class OwnershipTest(test.test): |
return ownership.connect_to_session_manager() |
- def use_known_ownerkeys(self): |
- """Sets the system up to use a well-known keypair for owner operations. |
+ def compare_policy_response(self, policy_response, |
+ owner=None, guests=None, new_users=None, |
+ roaming=None, whitelist=None, proxies=None): |
+ """Check the contents of |policy_response| against given args. |
- Assuming the appropriate cryptohome is already mounted, configures the |
- device to accept policies signed with the checked-in 'mock' owner key. |
- """ |
- dirname = os.path.dirname(__file__) |
- mock_keyfile = os.path.join(dirname, 'mock_owner_private.key') |
- mock_certfile = os.path.join(dirname, 'mock_owner_cert.pem') |
- ownership.push_to_nss(mock_keyfile, mock_certfile, ownership.NSSDB) |
- utils.open_write_close(constants.OWNER_KEY_FILE, |
- ownership.cert_extract_pubkey_der(mock_certfile)) |
+ Deserializes |policy_response| into a PolicyFetchResponse protobuf, |
+ with an embedded (serialized) PolicyData protobuf that embeds a |
+ (serialized) ChromeDeviceSettingsProto, and checks to see if this |
+ protobuf turducken contains the information passed in. |
+ @param policy_response: string serialization of a PolicyData protobuf. |
+ @param owner: string representing the owner's name/account. |
+ @param guests: boolean indicating whether guests should be allowed. |
+ @param new_users: boolean indicating if user pods are on login screen. |
+ @param roaming: boolean indicating whether data roaming is enabled. |
+ @param whitelist: list of accounts that are allowed to log in. |
+ @param proxies: dictionary - { 'proxy_mode': <string> } |
- def known_privkey(self): |
- """Returns the mock owner private key in PEM format. |
+ @return True if |policy_response| has all the provided data, else False. |
""" |
- dirname = os.path.dirname(__file__) |
- return utils.read_file(os.path.join(dirname, 'mock_owner_private.key')) |
+ # Pull in protobuf definitions. |
+ sys.path.append(self.srcdir) |
+ from device_management_backend_pb2 import PolicyFetchResponse |
+ from device_management_backend_pb2 import PolicyData |
+ from chrome_device_policy_pb2 import ChromeDeviceSettingsProto |
+ from chrome_device_policy_pb2 import AllowNewUsersProto |
+ from chrome_device_policy_pb2 import GuestModeEnabledProto |
+ from chrome_device_policy_pb2 import ShowUserNamesOnSigninProto |
+ from chrome_device_policy_pb2 import DataRoamingEnabledProto |
+ from chrome_device_policy_pb2 import DeviceProxySettingsProto |
+ response_proto = PolicyFetchResponse() |
+ response_proto.ParseFromString(policy_response) |
+ ownership.assert_has_policy_data(response_proto) |
- def known_pubkey(self): |
- """Returns the mock owner public key in DER format. |
- """ |
- dirname = os.path.dirname(__file__) |
- return ownership.cert_extract_pubkey_der( |
- os.path.join(dirname, 'mock_owner_cert.pem')) |
+ data_proto = PolicyData() |
+ data_proto.ParseFromString(response_proto.policy_data) |
+ ownership.assert_has_device_settings(data_proto) |
+ if owner != None: ownership.assert_username(data_proto, owner) |
+ |
+ settings = ChromeDeviceSettingsProto() |
+ settings.ParseFromString(data_proto.policy_value) |
+ if guests != None: ownership.assert_guest_setting(settings, guests) |
+ if new_users != None: ownership.assert_show_users(settings, new_users) |
+ if roaming != None: ownership.assert_roaming(settings, roaming) |
+ if whitelist: |
+ ownership.assert_new_users(settings, False) |
+ ownership.assert_users_on_whitelist(settings, whitelist) |
+ if proxies != None: ownership.assert_proxy_settings(settings, proxies) |
def build_policy_data(self, owner=None, guests=None, new_users=None, |
@@ -99,7 +121,7 @@ class OwnershipTest(test.test): |
from chrome_device_policy_pb2 import DeviceProxySettingsProto |
data_proto = PolicyData() |
- data_proto.policy_type = 'google/chromeos/device' |
+ data_proto.policy_type = ownership.POLICY_TYPE |
if owner != None: data_proto.username = owner |
settings = ChromeDeviceSettingsProto() |
@@ -109,6 +131,8 @@ class OwnershipTest(test.test): |
settings.show_user_names.show_user_names = new_users |
if roaming != None: |
settings.data_roaming_enabled.data_roaming_enabled = roaming |
+ if whitelist: |
+ settings.allow_new_users.allow_new_users = False |
for user in whitelist: |
settings.user_whitelist.user_whitelist.append(user) |
if proxies != None: |