| # Copyright 2019 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 unittest |
| |
| |
| from autotest_lib.client.cros.enterprise import policy_group |
| """ |
| |
| d8888b. d88888b .d8b. d8888b. .88b d88. d88888b |
| 88 `8D 88' d8' `8b 88 `8D 88'YbdP`88 88' |
| 88oobY' 88ooooo 88ooo88 88 88 88 88 88 88ooooo |
| 88`8b 88~~~~~ 88~~~88 88 88 88 88 88 88~~~~~ |
| 88 `88. 88. 88 88 88 .8D 88 88 88 88. |
| 88 YD Y88888P YP YP Y8888D' YP YP YP Y88888P |
| |
| This is the unittest file for enterprise_policy_utils. |
| If you modify that file, you should be at minimum re-running this file. |
| |
| Add and correct tests as changes are made to the utils file. |
| |
| To run the tests, use the following command from your DEV box (outside_chroot): |
| |
| src/third_party/autotest/files/utils$ python unittest_suite.py \ |
| autotest_lib.client.cros.enterprise.test_policy_group --debug |
| |
| Most of the test data are large dictionaries mocking real data. They are stored |
| in the ent_policy_unittest_data file (located in this directory). |
| |
| """ |
| |
| |
| class test_policyGroup(unittest.TestCase): |
| |
| def setupFullPolicy(self): |
| test_policy = {'Extension1': {'Policy1': 'Value1'}, |
| 'Extension2': {'Policy2': 'Value2'}} |
| test_user_policy = {'Userpolicy1': 1} |
| test_device_policy = {'SystemTimezone': 'v1'} |
| test_suggested_user_policy = {'Suggested1': '1'} |
| self.policy_group_object = policy_group.AllPolicies(True) |
| self.policy_group_object.set_extension_policy(test_policy) |
| self.policy_group_object.set_policy('chrome', test_user_policy, 'user') |
| self.policy_group_object.set_policy('chrome', test_device_policy, |
| 'device') |
| self.policy_group_object.set_policy('chrome', |
| test_suggested_user_policy, |
| 'suggested_user') |
| |
| def test_kiosk_setting(self): |
| self.policy_group_object = policy_group.AllPolicies(True) |
| |
| k_id = 'afhcomalholahplbjhnmahkoekoijban' |
| |
| z = { |
| 'DeviceLocalAccounts': [ |
| {'account_id': k_id, |
| 'kiosk_app': {'app_id': k_id}, |
| 'type': 1}], |
| 'DeviceLocalAccountAutoLoginId': k_id |
| } |
| self.policy_group_object.set_policy('chrome', z, |
| 'device') |
| |
| self.policy_group_object.createNewFakeDMServerJson() |
| self.policy_group_object.updateDMJson() |
| self.policy_group_object._DMJSON['policy_user'] = 'TEST' |
| kiosk_setting = (self.policy_group_object._DMJSON |
| ['google/chromeos/device'] |
| ['device_local_accounts.account']) |
| |
| expected_kiosk_setting = ( |
| [{'type': 1, |
| 'kiosk_app': {'app_id': 'afhcomalholahplbjhnmahkoekoijban'}, |
| 'account_id': 'afhcomalholahplbjhnmahkoekoijban'}] |
| ) |
| self.assertEqual(kiosk_setting, expected_kiosk_setting) |
| |
| def test_Normal(self): |
| policy_group.AllPolicies() |
| self.assertEqual(1, 1) |
| |
| def test_extension(self): |
| # Set the "actual" Extension policy |
| extension_test = policy_group.AllPolicies(True) |
| test_set = {'Extension1': {'Policy1': 'Hidden1'}} |
| test_set2 = {'Extension1': {'Policy1': 'Displayed'}} |
| |
| # Set the "Visual" Extension policy (ie, What should be displayed) |
| extension_test.set_extension_policy(test_set) |
| extension_test.set_extension_policy(test_set2, True) |
| |
| # Verify its displayed correctly when the "visual" dict is requested. |
| self.assertEqual( |
| (extension_test.get_policy_as_dict(True)['extensionPolicies'] |
| ['Extension1']['Policy1']['value']), |
| 'Displayed') |
| |
| # Verify the DM Json remains correct. |
| extension_test.updateDMJson() |
| self.assertEqual( |
| (extension_test._DMJSON['google/chrome/extension'] |
| ['Extension1']['Policy1']), |
| 'Hidden1') |
| |
| # Test the == function will use the "Displayed" value for the check, |
| # not the configured |
| |
| extension_test_received = policy_group.AllPolicies() |
| received_set = { |
| 'Extension1': { |
| 'Policy1': { |
| 'scope': 'user', |
| 'level': 'mandatory', |
| 'value': 'Displayed', |
| 'source': 'cloud'}}} |
| |
| extension_test_received.set_extension_policy(received_set) |
| |
| self.assertTrue(extension_test == extension_test_received) |
| |
| def test_set_policy(self): |
| policy_group_object = policy_group.AllPolicies(True) |
| policy_group_object.set_policy('chrome', |
| {'test_policy': 'TestValue'}, |
| 'user') |
| self.assertIn('test_policy', policy_group_object.chrome) |
| # Testing the other values will be covered in the policy unittest |
| self.assertEqual(policy_group_object.chrome['test_policy'].value, |
| 'TestValue') |
| |
| def test_ExtPolicy(self): |
| test_policy = {'Extension1': {'Policy1': 'Value1'}, |
| 'Extension2': {'Policy2': 'Value2'}} |
| policy_group_object = policy_group.AllPolicies(True) |
| policy_group_object.set_extension_policy(test_policy) |
| for Extension in test_policy: |
| self.assertIn(Extension, |
| policy_group_object.extension_configured_data) |
| for policy in test_policy[Extension]: |
| self.assertIn(policy, |
| policy_group_object.extension_configured_data[Extension]) |
| |
| def test_get_policy_as_dict(self): |
| self.setupFullPolicy() |
| expected_policyDict = { |
| 'deviceLocalAccountPolicies': {}, |
| 'extensionPolicies': |
| {'Extension2': |
| {'Policy2': |
| {'scope': 'user', |
| 'level': 'mandatory', |
| 'value': 'Value2', |
| 'source': 'cloud'}}, |
| 'Extension1': |
| {'Policy1': |
| {'scope': 'user', |
| 'level': 'mandatory', |
| 'value': 'Value1', |
| 'source': 'cloud'}}}, |
| 'chromePolicies': |
| {'Suggested1': |
| {'scope': 'user', |
| 'level': 'recommended', |
| 'value': '1', |
| 'source': 'cloud'}, |
| 'SystemTimezone': |
| {'scope': 'machine', |
| 'level': 'mandatory', |
| 'value': 'v1', |
| 'source': 'cloud'}, |
| 'Userpolicy1': |
| {'scope': 'user', |
| 'level': 'mandatory', |
| 'value': 1, |
| 'source': 'cloud'}}} |
| self.assertEqual(self.policy_group_object.get_policy_as_dict(), |
| expected_policyDict) |
| |
| def test_UpdateDMJson(self): |
| self.setupFullPolicy() |
| self.policy_group_object.updateDMJson() |
| expected_DMJson = { |
| 'invalidation_name': 'test_policy', |
| 'invalidation_source': 16, |
| 'google/chromeos/device': |
| {'system_timezone.timezone': 'v1'}, |
| 'current_key_index': 0, |
| 'google/chrome/extension': |
| {'Extension2': {'Policy2': 'Value2'}, |
| 'Extension1': {'Policy1': 'Value1'}}, |
| 'managed_users': ['*'], |
| 'google/chromeos/user': |
| {'recommended': {'Suggested1': '1'}, |
| 'mandatory': {'Userpolicy1': 1}}, |
| 'policy_user': None} |
| self.assertEqual(self.policy_group_object._DMJSON, expected_DMJson) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |