def test_find_instances_by_hostname(self): """ EC2.find_instances_by_hostname correctly locate instances based hostname. """ filter = Filter() filter.add_filter('instance-state-name', 'running') filter.add_filter('instance-state-name', 'stopped') filter.add_tag_filter('Name', self.FAKE_HOSTNAME) self._ec2.find_instances_by_hostname(self.FAKE_HOSTNAME) self._logger.debug.assert_called_once_with( 'Filters to use: %s', dict(filter) )
class FilterTest(unittest.TestCase): """ Test case for Filter """ TEST_TAG_KEY = 'Name' TEST_TAG_KEY_FULL = 'tag:' + TEST_TAG_KEY TEST_TAG_VALUE = 'example.krxd.net' TEST_FILTER_KEY = 'instance-state-name' TEST_FILTER_VALUE_1 = 'running' TEST_FILTER_VALUE_2 = 'stopped' TEST_FILTER_VALUE = [TEST_FILTER_VALUE_1, TEST_FILTER_VALUE_2] TEST_FILTER_STR = TEST_FILTER_KEY + '=' + TEST_FILTER_VALUE_1 def setUp(self): self.f = Filter() def test_init_dict(self): """ Ensure dict passed to __init__ is initialized. """ dic = { self.TEST_TAG_KEY_FULL: [self.TEST_TAG_VALUE], self.TEST_FILTER_KEY: self.TEST_FILTER_VALUE, } self.f = Filter(dic) self.assertEqual(dic, self.f) def test_init_none(self): """ Ensure that filters are initialized empty. """ self.assertEqual({}, self.f) def test_init_keywords(self): """ Ensure that filters can be initialized with keywords. """ dic = { self.TEST_TAG_KEY_FULL: [self.TEST_TAG_VALUE], self.TEST_FILTER_KEY: self.TEST_FILTER_VALUE, } self.f = Filter(**dic) self.assertEqual(dic, self.f) def test_add_filter_new(self): """ Make sure Filter.add_filter mutates filter as expected. """ self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_1) self.assertIn(self.TEST_FILTER_KEY, self.f) self.assertEqual([self.TEST_FILTER_VALUE_1], self.f[self.TEST_FILTER_KEY]) def test_add_filter_existing(self): """ Make sure Filter.add_filter is an append operation. """ self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_1) self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_2) self.assertIn(self.TEST_FILTER_KEY, self.f) self.assertEqual(self.TEST_FILTER_VALUE, self.f[self.TEST_FILTER_KEY]) def test_add_tag_filter(self): """ Make sure Filter.add_tag_filter helper creates the appropriate tag filter. """ self.f.add_tag_filter(self.TEST_TAG_KEY, self.TEST_TAG_VALUE) self.assertIn(self.TEST_TAG_KEY_FULL, self.f) self.assertEqual([self.TEST_TAG_VALUE], self.f[self.TEST_TAG_KEY_FULL]) def test_parse_string_name_value(self): """ Make sure Filter.parse_string_name_value parses argument names. """ self.f.parse_string(self.TEST_FILTER_STR) self.assertIn(self.TEST_FILTER_KEY, self.f) self.assertEqual([self.TEST_FILTER_VALUE_1], self.f[self.TEST_FILTER_KEY]) def test_parse_string_value(self): """ Make sure Filter.parse_string_name_value parses argument values. """ self.f.parse_string(self.TEST_TAG_VALUE) self.assertIn('tag-value', self.f._filter) self.assertEqual([self.TEST_TAG_VALUE], self.f._filter['tag-value']) def test_set(self): """ Make sure Filter attributes can be set via ['name'] notation """ self.f[self.TEST_FILTER_KEY] = self.TEST_FILTER_VALUE self.assertEqual(self.TEST_FILTER_VALUE, self.f[self.TEST_FILTER_KEY]) def test_del(self): """ Make sure Filter attributes can be deleted via ['name'] notation """ self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_1) del self.f[self.TEST_FILTER_KEY] self.assertNotIn(self.TEST_FILTER_KEY, self.f._filter) def test_iter(self): """ Make sure Filter attributes can be iterated """ self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_1) self.assertEqual([self.TEST_FILTER_KEY], [key for key in self.f]) def test_len(self): """ Make sure Filter handles len() properly """ self.f.add_filter(self.TEST_FILTER_KEY, self.TEST_FILTER_VALUE_1) self.assertEqual(1, len(self.f))