# Copyright 2022 - The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for mkcert.""" import filecmp import os import shutil import unittest from acloud.internal.lib import driver_test_lib from acloud.internal.lib import utils from acloud.setup import mkcert class MkcertTest(driver_test_lib.BaseDriverTest): """Test Mkcert.""" # pylint: disable=no-member def testInstall(self): """Test Install.""" self.Patch(os.path, "isdir", return_value=False) self.Patch(os.path, "exists", return_value=False) self.Patch(os, "mkdir") self.Patch(mkcert, "IsRootCAReady") self.Patch(mkcert, "UnInstall") self.Patch(utils, "Popen") self.Patch(shutil, "rmtree") self.Patch(os, "stat") self.Patch(os, "chmod") os.stat().st_mode = 33188 mkcert.Install() os.chmod.assert_not_called() shutil.rmtree.assert_not_called() mkcert.UnInstall.assert_not_called() self.assertEqual(4, utils.Popen.call_count) utils.Popen.reset_mock() self.Patch(os.path, "isdir", return_value=True) self.Patch(os.path, "exists", return_value=True) os.stat().st_mode = 33184 mkcert.Install() os.chmod.assert_called_once() shutil.rmtree.assert_called_once() mkcert.UnInstall.assert_called_once() self.assertEqual(4, utils.Popen.call_count) def testAllocateLocalHostCert(self): """Test AllocateLocalHostCert.""" self.Patch(mkcert, "IsRootCAReady", return_value=False) self.assertFalse(mkcert.AllocateLocalHostCert()) self.Patch(mkcert, "IsRootCAReady", return_value=True) self.Patch(os.path, "exists", return_value=True) self.Patch(utils, "Popen") self.Patch(mkcert, "IsCertificateReady") mkcert.AllocateLocalHostCert() self.assertEqual(0, utils.Popen.call_count) self.Patch(os.path, "exists", return_value=False) mkcert.AllocateLocalHostCert() self.assertEqual(3, utils.Popen.call_count) def testIsRootCAReady(self): """Test IsRootCAReady.""" self.Patch(os.path, "exists", return_value=True) self.Patch(filecmp, "cmp", return_value=True) self.assertTrue(mkcert.IsRootCAReady()) self.Patch(filecmp, "cmp", return_value=False) self.assertFalse(mkcert.IsRootCAReady()) self.Patch(os.path, "exists", return_value=False) self.assertFalse(mkcert.IsRootCAReady()) def testIsCertificateReady(self): """Test IsCertificateReady.""" self.Patch(os.path, "exists", return_value=False) self.assertFalse(mkcert.IsCertificateReady()) self.Patch(os.path, "exists", return_value=True) self.assertTrue(mkcert.IsCertificateReady()) def testUnInstall(self): """Test UnInstall.""" self.Patch(utils, "Popen") mkcert.UnInstall() self.assertEqual(3, utils.Popen.call_count) if __name__ == '__main__': unittest.main()