1*800a58d9SAndroid Build Coastguard Worker# Copyright 2022 - The Android Open Source Project 2*800a58d9SAndroid Build Coastguard Worker# 3*800a58d9SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*800a58d9SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*800a58d9SAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*800a58d9SAndroid Build Coastguard Worker# 7*800a58d9SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*800a58d9SAndroid Build Coastguard Worker# 9*800a58d9SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*800a58d9SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*800a58d9SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*800a58d9SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*800a58d9SAndroid Build Coastguard Worker# limitations under the License. 14*800a58d9SAndroid Build Coastguard Worker"""Tests for mkcert.""" 15*800a58d9SAndroid Build Coastguard Workerimport filecmp 16*800a58d9SAndroid Build Coastguard Workerimport os 17*800a58d9SAndroid Build Coastguard Workerimport shutil 18*800a58d9SAndroid Build Coastguard Workerimport unittest 19*800a58d9SAndroid Build Coastguard Worker 20*800a58d9SAndroid Build Coastguard Workerfrom acloud.internal.lib import driver_test_lib 21*800a58d9SAndroid Build Coastguard Workerfrom acloud.internal.lib import utils 22*800a58d9SAndroid Build Coastguard Workerfrom acloud.setup import mkcert 23*800a58d9SAndroid Build Coastguard Worker 24*800a58d9SAndroid Build Coastguard Worker 25*800a58d9SAndroid Build Coastguard Workerclass MkcertTest(driver_test_lib.BaseDriverTest): 26*800a58d9SAndroid Build Coastguard Worker """Test Mkcert.""" 27*800a58d9SAndroid Build Coastguard Worker 28*800a58d9SAndroid Build Coastguard Worker # pylint: disable=no-member 29*800a58d9SAndroid Build Coastguard Worker def testInstall(self): 30*800a58d9SAndroid Build Coastguard Worker """Test Install.""" 31*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "isdir", return_value=False) 32*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=False) 33*800a58d9SAndroid Build Coastguard Worker self.Patch(os, "mkdir") 34*800a58d9SAndroid Build Coastguard Worker self.Patch(mkcert, "IsRootCAReady") 35*800a58d9SAndroid Build Coastguard Worker self.Patch(mkcert, "UnInstall") 36*800a58d9SAndroid Build Coastguard Worker self.Patch(utils, "Popen") 37*800a58d9SAndroid Build Coastguard Worker self.Patch(shutil, "rmtree") 38*800a58d9SAndroid Build Coastguard Worker self.Patch(os, "stat") 39*800a58d9SAndroid Build Coastguard Worker self.Patch(os, "chmod") 40*800a58d9SAndroid Build Coastguard Worker os.stat().st_mode = 33188 41*800a58d9SAndroid Build Coastguard Worker mkcert.Install() 42*800a58d9SAndroid Build Coastguard Worker os.chmod.assert_not_called() 43*800a58d9SAndroid Build Coastguard Worker shutil.rmtree.assert_not_called() 44*800a58d9SAndroid Build Coastguard Worker mkcert.UnInstall.assert_not_called() 45*800a58d9SAndroid Build Coastguard Worker self.assertEqual(4, utils.Popen.call_count) 46*800a58d9SAndroid Build Coastguard Worker utils.Popen.reset_mock() 47*800a58d9SAndroid Build Coastguard Worker 48*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "isdir", return_value=True) 49*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=True) 50*800a58d9SAndroid Build Coastguard Worker os.stat().st_mode = 33184 51*800a58d9SAndroid Build Coastguard Worker mkcert.Install() 52*800a58d9SAndroid Build Coastguard Worker os.chmod.assert_called_once() 53*800a58d9SAndroid Build Coastguard Worker shutil.rmtree.assert_called_once() 54*800a58d9SAndroid Build Coastguard Worker mkcert.UnInstall.assert_called_once() 55*800a58d9SAndroid Build Coastguard Worker self.assertEqual(4, utils.Popen.call_count) 56*800a58d9SAndroid Build Coastguard Worker 57*800a58d9SAndroid Build Coastguard Worker 58*800a58d9SAndroid Build Coastguard Worker def testAllocateLocalHostCert(self): 59*800a58d9SAndroid Build Coastguard Worker """Test AllocateLocalHostCert.""" 60*800a58d9SAndroid Build Coastguard Worker self.Patch(mkcert, "IsRootCAReady", return_value=False) 61*800a58d9SAndroid Build Coastguard Worker self.assertFalse(mkcert.AllocateLocalHostCert()) 62*800a58d9SAndroid Build Coastguard Worker 63*800a58d9SAndroid Build Coastguard Worker self.Patch(mkcert, "IsRootCAReady", return_value=True) 64*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=True) 65*800a58d9SAndroid Build Coastguard Worker self.Patch(utils, "Popen") 66*800a58d9SAndroid Build Coastguard Worker self.Patch(mkcert, "IsCertificateReady") 67*800a58d9SAndroid Build Coastguard Worker mkcert.AllocateLocalHostCert() 68*800a58d9SAndroid Build Coastguard Worker self.assertEqual(0, utils.Popen.call_count) 69*800a58d9SAndroid Build Coastguard Worker 70*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=False) 71*800a58d9SAndroid Build Coastguard Worker mkcert.AllocateLocalHostCert() 72*800a58d9SAndroid Build Coastguard Worker self.assertEqual(3, utils.Popen.call_count) 73*800a58d9SAndroid Build Coastguard Worker 74*800a58d9SAndroid Build Coastguard Worker 75*800a58d9SAndroid Build Coastguard Worker def testIsRootCAReady(self): 76*800a58d9SAndroid Build Coastguard Worker """Test IsRootCAReady.""" 77*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=True) 78*800a58d9SAndroid Build Coastguard Worker self.Patch(filecmp, "cmp", return_value=True) 79*800a58d9SAndroid Build Coastguard Worker self.assertTrue(mkcert.IsRootCAReady()) 80*800a58d9SAndroid Build Coastguard Worker 81*800a58d9SAndroid Build Coastguard Worker self.Patch(filecmp, "cmp", return_value=False) 82*800a58d9SAndroid Build Coastguard Worker self.assertFalse(mkcert.IsRootCAReady()) 83*800a58d9SAndroid Build Coastguard Worker 84*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=False) 85*800a58d9SAndroid Build Coastguard Worker self.assertFalse(mkcert.IsRootCAReady()) 86*800a58d9SAndroid Build Coastguard Worker 87*800a58d9SAndroid Build Coastguard Worker 88*800a58d9SAndroid Build Coastguard Worker def testIsCertificateReady(self): 89*800a58d9SAndroid Build Coastguard Worker """Test IsCertificateReady.""" 90*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=False) 91*800a58d9SAndroid Build Coastguard Worker self.assertFalse(mkcert.IsCertificateReady()) 92*800a58d9SAndroid Build Coastguard Worker 93*800a58d9SAndroid Build Coastguard Worker self.Patch(os.path, "exists", return_value=True) 94*800a58d9SAndroid Build Coastguard Worker self.assertTrue(mkcert.IsCertificateReady()) 95*800a58d9SAndroid Build Coastguard Worker 96*800a58d9SAndroid Build Coastguard Worker 97*800a58d9SAndroid Build Coastguard Worker def testUnInstall(self): 98*800a58d9SAndroid Build Coastguard Worker """Test UnInstall.""" 99*800a58d9SAndroid Build Coastguard Worker self.Patch(utils, "Popen") 100*800a58d9SAndroid Build Coastguard Worker mkcert.UnInstall() 101*800a58d9SAndroid Build Coastguard Worker self.assertEqual(3, utils.Popen.call_count) 102*800a58d9SAndroid Build Coastguard Worker 103*800a58d9SAndroid Build Coastguard Worker 104*800a58d9SAndroid Build Coastguard Workerif __name__ == '__main__': 105*800a58d9SAndroid Build Coastguard Worker unittest.main() 106