Example #1
0
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)