| Index: test_tpm_handler.py
|
| diff --git a/test_tpm_handler.py b/test_tpm_handler.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..06574b17f5c7b58a4d18fe5282fdfe617831658e
|
| --- /dev/null
|
| +++ b/test_tpm_handler.py
|
| @@ -0,0 +1,90 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2010 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.
|
| +
|
| +'''Unittest wrapper for tpm_handler.py.'''
|
| +
|
| +import os
|
| +import shutil
|
| +import subprocess
|
| +import tempfile
|
| +import unittest
|
| +
|
| +import tpm_handler
|
| +
|
| +CONF_FILE_TEMPLATE = '''
|
| +# Trousers daemon, which talks to the TPM (or the TPM emulator).
|
| +
|
| +stop on starting halt or starting reboot
|
| +
|
| +pre-start script
|
| + tpmc clear || logger "tpmc clear: status $?"
|
| + tpmc enable || logger "tpmc enable: status $?"
|
| + tpmc act || logger "tpmc act: status $?"
|
| +%s tpmc block || logger "tpmc block: status $?"
|
| +%s tpmc pplock || logger "tpmc pplock: status $?"
|
| +
|
| + fi
|
| +end script
|
| +
|
| +exec /usr/sbin/tcsd
|
| +'''
|
| +
|
| +class CrosIfMock(object):
|
| + MOCKED_COMMANDS = {
|
| + 'initctl status tcsd': 'tcsd start/running, process 3757',
|
| + 'tpmc read 0x1007 0xa': '1 0 1 1 1 0 0 0 0 0',
|
| + 'tpmc read 0x1008 0xd': '1 4c 57 52 47 1 2 1 0 0 0 0 0',
|
| + 'stop tcsd': 'tcsd stop/waiting',
|
| + 'tpmc write 0x1008 0x01 0x4c 0x57 0x52 0x47 0x01 0x00 ' +
|
| + '0x01 0x00 0x00 0x00 0x00 0x00' : '',
|
| + }
|
| +
|
| + def __init__(self):
|
| + self.last_cmd = None
|
| + self.state_dir = tempfile.mkdtemp()
|
| +
|
| + def run_shell_command_get_output(self, cmd):
|
| + self.last_cmd = cmd
|
| + return (self.MOCKED_COMMANDS[cmd],)
|
| +
|
| + def run_shell_command(self, cmd):
|
| + self.last_cmd = cmd
|
| + assert(cmd in self.MOCKED_COMMANDS)
|
| +
|
| + def state_dir_file(self, file_name):
|
| + return os.path.join(self.state_dir, file_name)
|
| +
|
| + def __del__(self):
|
| + shutil.rmtree(self.state_dir)
|
| +
|
| +class TestTpmHandler(unittest.TestCase):
|
| + def setUp(self):
|
| + self.tpmh = tpm_handler.TpmHandler()
|
| + self.tpmh.init(CrosIfMock())
|
| +
|
| + def test_boot_version(self):
|
| + self.assertEqual(self.tpmh.get_fw_version(), 257)
|
| +
|
| + def test_read_kernel_version(self):
|
| + self.assertEqual(self.tpmh.get_kernel_version(), 513)
|
| +
|
| + def test_write_kernel_version(self):
|
| + self.tpmh.set_kernel_version(1)
|
| +
|
| + def test_config_file_handling(self):
|
| + '''Verify that config file gets modified/restored properly.'''
|
| + conf_file, conf_file_name = tempfile.mkstemp()
|
| + os.write(conf_file, CONF_FILE_TEMPLATE % ('', ''))
|
| + os.close(conf_file)
|
| + self.tpmh.enable_write_access(conf_file_name)
|
| + self.assertEqual(open(conf_file_name).read(), CONF_FILE_TEMPLATE % (
|
| + tpm_handler.COMMENT_PATTERN, tpm_handler.COMMENT_PATTERN))
|
| + self.tpmh.disable_write_access(conf_file_name)
|
| + self.assertEqual(open(conf_file_name).read(),
|
| + CONF_FILE_TEMPLATE % ('', ''))
|
| + os.remove(conf_file_name)
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|