xref: /aosp_15_r20/external/autotest/client/cros/enterprise/test_policy.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2019 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 Liimport copy
5*9c5db199SXin Liimport unittest
6*9c5db199SXin Li
7*9c5db199SXin Lifrom autotest_lib.client.common_lib import error
8*9c5db199SXin Li
9*9c5db199SXin Lifrom autotest_lib.client.cros.enterprise import policy
10*9c5db199SXin Li
11*9c5db199SXin Li"""
12*9c5db199SXin LiThis is the unittest file for policy.py.
13*9c5db199SXin LiIf you modify that file, you should be at minimum re-running this file.
14*9c5db199SXin Li
15*9c5db199SXin LiAdd and correct tests as changes are made to the utils file.
16*9c5db199SXin Li
17*9c5db199SXin LiTo run the tests, use the following command from your DEV box (outside_chroot):
18*9c5db199SXin Li
19*9c5db199SXin Lisrc/third_party/autotest/files/utils$ python unittest_suite.py \
20*9c5db199SXin Liautotest_lib.client.cros.enterprise.test_policy --debug
21*9c5db199SXin Li
22*9c5db199SXin Li"""
23*9c5db199SXin Li
24*9c5db199SXin Li
25*9c5db199SXin Liclass test_policyManager(unittest.TestCase):
26*9c5db199SXin Li
27*9c5db199SXin Li    dict_value = {'scope': 'testScope', 'source': 'testSource',
28*9c5db199SXin Li                  'level': 'testLevel', 'value': 'test_value'}
29*9c5db199SXin Li    dict_value2 = {'scope': 'testScope', 'source': 'testSource',
30*9c5db199SXin Li                   'level': 'testLevel', 'value': 'test_value2'}
31*9c5db199SXin Li
32*9c5db199SXin Li    def test_setting_params(self):
33*9c5db199SXin Li        test_policy = policy.Policy()
34*9c5db199SXin Li        test_policy.name = 'Test'
35*9c5db199SXin Li        test_policy.level = 1
36*9c5db199SXin Li        test_policy.value = 'TheValue'
37*9c5db199SXin Li        test_policy.scope = 'test_value'
38*9c5db199SXin Li        test_policy.source = 'Cloud'
39*9c5db199SXin Li        self.assertEqual(test_policy.name, 'Test')
40*9c5db199SXin Li        self.assertEqual(test_policy.level, 1)
41*9c5db199SXin Li        self.assertEqual(test_policy.scope, 'test_value')
42*9c5db199SXin Li        self.assertEqual(test_policy.source, 'Cloud')
43*9c5db199SXin Li        self.assertEqual(test_policy.value, 'TheValue')
44*9c5db199SXin Li
45*9c5db199SXin Li    def test_setting_group_user(self):
46*9c5db199SXin Li        test_policy = policy.Policy()
47*9c5db199SXin Li        test_policy.name = 'Test'
48*9c5db199SXin Li        test_policy.group = 'user'
49*9c5db199SXin Li        self.assertEqual(test_policy.name, 'Test')
50*9c5db199SXin Li        self.assertEqual(test_policy.source, 'cloud')
51*9c5db199SXin Li        self.assertEqual(test_policy.level, 'mandatory')
52*9c5db199SXin Li        self.assertEqual(test_policy.scope, 'user')
53*9c5db199SXin Li
54*9c5db199SXin Li    def test_setting_group_device(self):
55*9c5db199SXin Li        test_policy = policy.Policy()
56*9c5db199SXin Li        test_policy.name = 'Test'
57*9c5db199SXin Li        test_policy.group = 'device'
58*9c5db199SXin Li        self.assertEqual(test_policy.name, 'Test')
59*9c5db199SXin Li        self.assertEqual(test_policy.source, 'cloud')
60*9c5db199SXin Li        self.assertEqual(test_policy.level, 'mandatory')
61*9c5db199SXin Li        self.assertEqual(test_policy.scope, 'machine')
62*9c5db199SXin Li
63*9c5db199SXin Li    def test_setting_group_suggested_user(self):
64*9c5db199SXin Li        test_policy = policy.Policy()
65*9c5db199SXin Li        test_policy.name = 'Test'
66*9c5db199SXin Li        test_policy.group = 'suggested_user'
67*9c5db199SXin Li        self.assertEqual(test_policy.name, 'Test')
68*9c5db199SXin Li        self.assertEqual(test_policy.source, 'cloud')
69*9c5db199SXin Li        self.assertEqual(test_policy.level, 'recommended')
70*9c5db199SXin Li        self.assertEqual(test_policy.scope, 'user')
71*9c5db199SXin Li
72*9c5db199SXin Li    def test_setting_value(self):
73*9c5db199SXin Li        test_policy = policy.Policy()
74*9c5db199SXin Li        test_policy.name = 'Test'
75*9c5db199SXin Li        test_policydict = copy.deepcopy(self.dict_value)
76*9c5db199SXin Li        test_policydict['error'] = 'An error'
77*9c5db199SXin Li        test_policy.set_policy_from_dict(test_policydict)
78*9c5db199SXin Li
79*9c5db199SXin Li        self.assertEqual(test_policy.name, 'Test')
80*9c5db199SXin Li        self.assertEqual(test_policy.level, 'testLevel')
81*9c5db199SXin Li        self.assertEqual(test_policy.scope, 'testScope')
82*9c5db199SXin Li        self.assertEqual(test_policy.source, 'testSource')
83*9c5db199SXin Li        self.assertEqual(test_policy.value, 'test_value')
84*9c5db199SXin Li
85*9c5db199SXin Li    def test_get_policy_as_dict(self):
86*9c5db199SXin Li        test_policy = policy.Policy()
87*9c5db199SXin Li        test_policy.name = 'Test'
88*9c5db199SXin Li        test_policy.level = 1
89*9c5db199SXin Li        test_policy.value = 'TheValue'
90*9c5db199SXin Li        test_policy.scope = 'test_value'
91*9c5db199SXin Li        test_policy.source = 'Cloud'
92*9c5db199SXin Li
93*9c5db199SXin Li        expected_dict = {
94*9c5db199SXin Li            'Test': {
95*9c5db199SXin Li                'scope': 'test_value',
96*9c5db199SXin Li                'level': 1,
97*9c5db199SXin Li                'value': 'TheValue',
98*9c5db199SXin Li                'source': 'Cloud'}}
99*9c5db199SXin Li        self.assertEqual(expected_dict, test_policy.get_policy_as_dict())
100*9c5db199SXin Li
101*9c5db199SXin Li    def test_policy_eq_ne(self):
102*9c5db199SXin Li        test_policy = policy.Policy()
103*9c5db199SXin Li        test_policy.name = 'Test'
104*9c5db199SXin Li        test_policy.set_policy_from_dict(self.dict_value)
105*9c5db199SXin Li
106*9c5db199SXin Li        test_policy2 = policy.Policy()
107*9c5db199SXin Li        test_policy2.name = 'Test2'
108*9c5db199SXin Li        test_policy2.set_policy_from_dict(self.dict_value)
109*9c5db199SXin Li        self.assertTrue(test_policy == test_policy2)
110*9c5db199SXin Li        self.assertFalse(test_policy != test_policy2)
111*9c5db199SXin Li
112*9c5db199SXin Li        test_policy3 = policy.Policy()
113*9c5db199SXin Li        test_policy3.name = 'Test3'
114*9c5db199SXin Li        test_policy3.set_policy_from_dict(self.dict_value2)
115*9c5db199SXin Li        self.assertFalse(test_policy == test_policy3)
116*9c5db199SXin Li
117*9c5db199SXin Li    def test_policy_eq_obfuscated(self):
118*9c5db199SXin Li        test_policy = policy.Policy()
119*9c5db199SXin Li        test_policy.name = 'Test'
120*9c5db199SXin Li        test_value = {
121*9c5db199SXin Li            'scope': 'testScope', 'source': 'testSource',
122*9c5db199SXin Li            'level': 'testLevel',
123*9c5db199SXin Li            'value': {'NetworkConfigurations': [
124*9c5db199SXin Li                {'WiFi': {'Passphrase': 'Secret'}}]}}
125*9c5db199SXin Li        test_policy.set_policy_from_dict(test_value)
126*9c5db199SXin Li
127*9c5db199SXin Li        test_policy2 = policy.Policy()
128*9c5db199SXin Li        test_policy2.name = 'TestOpenNetworkConfiguration'
129*9c5db199SXin Li        obfuscated_value = {
130*9c5db199SXin Li            'scope': 'testScope', 'source': 'testSource',
131*9c5db199SXin Li            'level': 'testLevel',
132*9c5db199SXin Li            'value': {'NetworkConfigurations': [
133*9c5db199SXin Li                {'WiFi': {'Passphrase': '********'}}]}}
134*9c5db199SXin Li        test_policy2.set_policy_from_dict(obfuscated_value)
135*9c5db199SXin Li        self.assertTrue(test_policy == test_policy2)
136*9c5db199SXin Li        self.assertFalse(test_policy != test_policy2)
137*9c5db199SXin Li
138*9c5db199SXin Li    def test_is_network_policy(self):
139*9c5db199SXin Li        self.assertTrue(
140*9c5db199SXin Li            policy.is_network_policy('TestOpenNetworkConfiguration'))
141*9c5db199SXin Li
142*9c5db199SXin Li        self.assertFalse(policy.is_network_policy('Test'))
143*9c5db199SXin Li
144*9c5db199SXin Li    def test_check_obfuscation(self):
145*9c5db199SXin Li        test_value = {
146*9c5db199SXin Li            'NetworkConfigurations': [
147*9c5db199SXin Li                {'WiFi': {'Passphrase': '********'}}]}
148*9c5db199SXin Li        self.assertTrue(policy.check_obfuscation(test_value))
149*9c5db199SXin Li
150*9c5db199SXin Li        test_value2 = {
151*9c5db199SXin Li            'NetworkConfigurations': [
152*9c5db199SXin Li                {'WiFi': {'Passphrase': 'Bad'}}]}
153*9c5db199SXin Li        self.assertFalse(policy.check_obfuscation(test_value2))
154*9c5db199SXin Li
155*9c5db199SXin Li        test_value3 = {
156*9c5db199SXin Li            'NetworkConfigurations': [
157*9c5db199SXin Li                {'WiFi': {'EAP': {'Password': '********'}}}]}
158*9c5db199SXin Li        self.assertTrue(policy.check_obfuscation(test_value3))
159*9c5db199SXin Li
160*9c5db199SXin Li        test_value4 = {
161*9c5db199SXin Li            'NetworkConfigurations': [
162*9c5db199SXin Li                {'WiFi': {'EAP': {'Password': 'Bad'}}}]}
163*9c5db199SXin Li        self.assertFalse(policy.check_obfuscation(test_value4))
164*9c5db199SXin Li
165*9c5db199SXin Li        test_value5 = {
166*9c5db199SXin Li            'Certificates': [
167*9c5db199SXin Li                {'PKCS12': '********'}]}
168*9c5db199SXin Li        self.assertTrue(policy.check_obfuscation(test_value5))
169*9c5db199SXin Li
170*9c5db199SXin Li        test_value6 = {
171*9c5db199SXin Li            'Certificates': [
172*9c5db199SXin Li                {'PKCS12': 'BAD'}]}
173*9c5db199SXin Li        self.assertFalse(policy.check_obfuscation(test_value6))
174*9c5db199SXin Li
175*9c5db199SXin Li    def test_invalid_policy_dict(self):
176*9c5db199SXin Li        with self.assertRaises(error.TestError) as context:
177*9c5db199SXin Li            test_policy = policy.Policy()
178*9c5db199SXin Li            test_policy.name = 'Bad Policy'
179*9c5db199SXin Li            test_policy.set_policy_from_dict({'Invalid Keys': 'Invalid Value'})
180*9c5db199SXin Li        self.assertIn('Incorrect input data provided', str(context.exception))
181*9c5db199SXin Li
182*9c5db199SXin Li
183*9c5db199SXin Liif __name__ == '__main__':
184*9c5db199SXin Li    unittest.main()
185