class ProtectableRegistryTest(base.TestCase): def setUp(self): super(ProtectableRegistryTest, self).setUp() self.protectable_registry = ProtectableRegistry() self._fake_plugin = _FakeProtectablePlugin(None) self.protectable_registry.register_plugin(self._fake_plugin) def test_graph_building(self): A = Resource(_FAKE_TYPE, "A", 'nameA') B = Resource(_FAKE_TYPE, "B", 'nameB') C = Resource(_FAKE_TYPE, "C", 'nameC') test_matrix = ( ( {A: [B], B: [C], C: []}, (A, C) ), ( {A: [C], B: [C], C: []}, (A, C) ), ) for g, resources in test_matrix: self._fake_plugin.graph = g result_graph = self.protectable_registry.build_graph(None, resources) self.assert_graph(result_graph, g) self.protectable_registry._protectable_map = {} def assert_graph(self, g, g_dict): for item in g: expected = set(g_dict[item.value]) found = set(child.value for child in item.child_nodes) self.assertEqual(found, expected) self.assert_graph(item.child_nodes, g_dict)