class MockLocalMachineTestCase(LocalMachineTestCase): def setUp(self): self._set_mocks_dictionary() self._start_all_mocks() LocalMachineTestCase.setUp(self) def _set_mocks_dictionary(self): self._mocks = Bunch() self._mocks.connect_registry = MockedInterface('RegConnectRegistry') self._mocks.open_key = MockedInterface('RegOpenKeyEx') self._mocks.query_value = MockedInterface('RegQueryValueEx') self._mocks.close_key = MockedInterface('RegCloseKey') self._mocks.query_info_key = MockedInterface('RegQueryInfoKey') self._mocks.enum_key = MockedInterface('RegEnumKeyEx') self._mocks.enum_value = MockedInterface('RegEnumValue') def _start_all_mocks(self): for mock in self._mocks.itervalues(): mock.start() def tearDown(self): LocalMachineTestCase.tearDown(self) def _stop_all_mocks(self): for mock in self._mocks.itervalues(): mock.stop() def _assert_calls_to_mock_name(self, mock_name, number): self.assertTrue(self._mocks[mock_name].mock.called) self.assertEqual(number, self._mocks[mock_name].mock.call_count) def _assert_calls_to_connect_registry(self, number): self._assert_calls_to_mock_name('connect_registry', number) def _assert_calls_to_open_key(self, number): self._assert_calls_to_mock_name('open_key', number) def test_hives_exists(self): LocalMachineTestCase.test_hives_exists(self) self._assert_calls_to_connect_registry(5) self._assert_calls_to_open_key(5) def test_getitem_for_existing_keys_under_local_machine(self): self._mocks.query_value.mock.side_effect = KeyError() LocalMachineTestCase.test_getitem_for_existing_keys_under_local_machine(self) self._assert_calls_to_connect_registry(1) self._assert_calls_to_open_key(4) def test_walk_1(self): raise unittest.SkipTest def test_walk_2(self): raise unittest.SkipTest def test_walk_3(self): raise unittest.SkipTest def test_a_workout(self): raise unittest.SkipTest def _prepare_mocks_for_iteration_tests(self): self._mocks.query_info_key.mock.return_value = [10, 0, 0, 10] key = self._computer.local_machine['SOFTWARE'] value = RegistryValueFactory().by_value(u'someValue') self._mocks.enum_key.mock.return_value = u'someKey' self._mocks.enum_value.mock.return_value = u'someName', value def test_iteritems(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_iteritems(self) def test_items(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_items(self) def test_iterkeys(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_iterkeys(self) def test_keys(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_keys(self) def test_itervalues(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_itervalues(self) def test_values(self): self._prepare_mocks_for_iteration_tests() LocalMachineTestCase.test_values(self)