121 lines
4.1 KiB
Python
121 lines
4.1 KiB
Python
# 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 ast
|
|
import copy
|
|
from mock import patch
|
|
import os
|
|
import unittest
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.cros.enterprise import enterprise_policy_utils as epu
|
|
|
|
|
|
"""
|
|
|
|
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.enterprise_policy_utils_unittest --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).
|
|
|
|
"""
|
|
|
|
# Load the test data
|
|
TEST_DATA = {}
|
|
folderDir = os.path.join(os.path.dirname(__file__))
|
|
fileName = 'ent_policy_unittest_data'
|
|
fullPath = os.path.join(folderDir, fileName)
|
|
|
|
with open(fullPath) as t:
|
|
f = (t.readlines())
|
|
for variable in f:
|
|
name, data = variable.split('=')
|
|
TEST_DATA[name] = ast.literal_eval(data)
|
|
|
|
# Set the base path for the Mock
|
|
PATCH_BASE = 'autotest_lib.client.cros.enterprise.enterprise_policy_utils'
|
|
|
|
|
|
class TestPolicyUtils_get_all_policies(unittest.TestCase):
|
|
"""
|
|
Test the "get_all_policies" function.
|
|
|
|
Mock the reply from the API with an example policy.
|
|
|
|
"""
|
|
FX_NAME = '_get_pol_from_api'
|
|
PATCH_PATH = '{}.{}'.format(PATCH_BASE, FX_NAME)
|
|
|
|
@patch(PATCH_PATH)
|
|
def test_Normal(self, get_pol_mock):
|
|
get_pol_mock.return_value = TEST_DATA['TEST_RAW']
|
|
self.assertEqual(epu.get_all_policies(None), TEST_DATA['TEST_RAW'])
|
|
|
|
@patch(PATCH_PATH)
|
|
def test_NoAPIResponse(self, get_pol_mock):
|
|
get_pol_mock.return_value = None
|
|
self.assertRaises(error.TestError, epu.get_all_policies, None)
|
|
|
|
|
|
class TestPolicyUtils_reformat_policies(unittest.TestCase):
|
|
"""Test the _reformat_policies function and the following private
|
|
methods:
|
|
_remove_visual_formatting
|
|
|
|
"""
|
|
|
|
def test_NormalData(self):
|
|
# Tests a policy with a "chromePolicies" and 1 "extensionPolicies".
|
|
subtest_data = copy.deepcopy(TEST_DATA['TEST_RAW'])
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, TEST_DATA['TEST_RAW'])
|
|
|
|
def test_no_data(self):
|
|
subtest_data = {}
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, {})
|
|
|
|
subtest_data2 = {'deviceLocalAccountPolicies': {},
|
|
'extensionPolicies': {},
|
|
'chromePolicies': {}}
|
|
expected = copy.deepcopy(subtest_data2)
|
|
epu._reformat_policies(subtest_data2)
|
|
self.assertEqual(subtest_data2, expected)
|
|
|
|
def test_partial_data(self):
|
|
# "chromePolicies" contains data, "extensionPolicies" has an extension
|
|
# with no policies.
|
|
subtest_data = copy.deepcopy(TEST_DATA['PARTIAL_RAW'])
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, TEST_DATA['PARTIAL_RAW'])
|
|
|
|
def test_mult_extension(self):
|
|
subtest_data = copy.deepcopy(TEST_DATA['TEST_MULTI_EXT'])
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, TEST_DATA['TEST_MULTI_EXT'])
|
|
|
|
def test_unicode_dict(self):
|
|
# Specifically will check if the _remove_visual_formatting
|
|
# function will remove visual formatting. e.g. "\n "
|
|
subtest_data = copy.deepcopy(TEST_DATA['POL_WITH_UNICODE'])
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, TEST_DATA['POL_WITH_UNICODE_PARSED'])
|
|
|
|
def test_string_value(self):
|
|
# Checks that a unicode string is not modified.
|
|
subtest_data = copy.deepcopy(TEST_DATA['POL_WITH_STRING'])
|
|
epu._reformat_policies(subtest_data)
|
|
self.assertEqual(subtest_data, TEST_DATA['POL_WITH_STRING'])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|