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