def test_do_get_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.value = ComponentManager("123", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "123", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "123") self.result = self.target._do_get_components() self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["456"]["type"], "ComponentManager") self.assertEqual(self.result.body["456"]["id"], "456") self.assertEqual(self.result.body["456"]["state"], "running") self.assertEqual(self.result.body["123"]["type"], "ComponentManager") self.assertEqual(self.result.body["123"]["id"], "123") self.assertEqual(self.result.body["123"]["state"], "running")
def test_do_get_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"object_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["type"], "ComponentManager") self.assertEqual(self.result.body["id"], "456")
def test_do_put_component_component_type_not_in_component_classes(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "123", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 400) self.assertEqual(self.result.body, None)
def test_do_put_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.target.components["456"] = "False" self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 409) self.assertEqual(self.result.body, None)
def test_do_put_component_error(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.target.components = MagicMock() self.target.components[" "].on_initialize.return_value = False self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 201) self.target.components["456"].\ _object_property.set_state.assert_called_once_with("error")
def test_do_event_componentmanagerchanged_delete_action(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") prev = self.target.components["456"].object_property.packed_object() self.target.dispatcher.remove_remote_client = Mock() self.value = {"action": "delete", "prev": prev, "curr": None} self.result = Response("add", self.value) self.target._do_event_componentmanagerchanged(self.result) self.assertEqual( self.target.dispatcher.remove_remote_client.call_count, 1)
def setUp(self): self.target = ComponentManager("cc_action", self.MessageDispatcher)
class ComponentManagerTest(unittest.TestCase, ComponentManager): MessageDispatcher = MagicMock() value = None result = None def setUp(self): self.target = ComponentManager("cc_action", self.MessageDispatcher) def tearDown(self): self.target = None self.dispatcher = None def test_constructor(self): rules = self.target._ComponentManager__parser._RequestParser__rules self.assertEqual(self.target._object_property._object_property["type"], "ComponentManager") self.assertEqual(self.target._object_property._object_property["id"], "cc_action") self.assertEqual( self.target._object_property._object_property["state"], "running") self.assertEqual(self.target.component_classes, {}) self.assertEqual(self.target.components, {}) self.assertEqual(len(rules), 5) def test_register_to_system_manager_success(self): self.target._request = MagicMock() self.target._ComponentManager__register_component_managers =\ MagicMock() register_component_managers =\ self.target._ComponentManager__register_component_managers self.target._ComponentManager__register_event_manager =\ MagicMock() register_event_manager =\ self.target._ComponentManager__register_event_manager self.target._ComponentManager__subscribe_event =\ MagicMock() subscribe_event =\ self.target._ComponentManager__subscribe_event self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent" } self.target._request.return_value = Response(Response.StatusCode.OK, self.value) with patch('logging.debug') as m_logging_debug: self.target.register_to_system_manager() self.assertEqual(m_logging_debug.call_count, 1) self.assertEqual(register_component_managers.call_count, 1) self.assertEqual(register_event_manager.call_count, 1) self.assertEqual(subscribe_event.call_count, 1) self.target._ComponentManager__register_component_managers.close() self.target._ComponentManager__register_event_manager.close() self.target._ComponentManager__subscribe_event.close() def test_register_to_system_manager_Error(self): self.target._request = MagicMock() self.target._ComponentManager__register_component_managers =\ MagicMock() register_component_managers =\ self.target._ComponentManager__register_component_managers self.target._ComponentManager__register_event_manager =\ MagicMock() register_event_manager =\ self.target._ComponentManager__register_event_manager self.target._ComponentManager__subscribe_event =\ MagicMock() subscribe_event =\ self.target._ComponentManager__subscribe_event self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent" } self.target._request.return_value = Response( Response.StatusCode.BAD_REQUEST, self.value) with nested(patch('logging.debug'), patch('logging.error')) as (m_logging_debug, m_logging_error): self.target.register_to_system_manager() self.assertEqual(m_logging_debug.call_count, 1) self.assertEqual(m_logging_error.call_count, 1) self.assertEqual(register_component_managers.call_count, 1) self.assertEqual(register_event_manager.call_count, 0) self.assertEqual(subscribe_event.call_count, 0) self.target._ComponentManager__register_component_managers.close() self.target._ComponentManager__register_event_manager.close() self.target._ComponentManager__subscribe_event.close() def test_register_component_managers_True(self): self.target._request = MagicMock() self.target.dispatcher.add_remote_client = MagicMock() self.value = [{ "id": "Curr", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent" }] self.target._request.return_value = Response(Response.StatusCode.OK, self.value) self.target._ComponentManager__register_component_managers() self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_register_component_managers_error(self): with patch('logging.error') as m_logging_error: self.target._ComponentManager__register_component_managers() self.assertEqual( self.target._object_property._object_property["state"], "error") self.assertEqual(m_logging_error.call_count, 1) def test_register_other_component_manager_NotEqual_object_id(self): self.target.dispatcher.add_remote_client = Mock() component_manager = {"id": "123", "base_uri": "456"} self.target._ComponentManager__register_other_component_manager( component_manager) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_register_other_component_manager_Equal_object_id(self): self.target.dispatcher.add_remote_client = Mock() component_manager = {"id": "cc_action", "base_uri": "456"} self.target._ComponentManager__register_other_component_manager( component_manager) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 0) def test_unregister_component_manager(self): self.target.dispatcher.remove_remote_client = Mock() self.target._ComponentManager__unregister_component_manager( "cc_action") self.assertEqual( self.target.dispatcher.remove_remote_client.call_count, 1) def test_register_event_manager_error(self): self.target._ComponentManager__register_event_manager() self.assertEqual( self.target._object_property._object_property["state"], "error") def test_register_event_manager_not_error(self): self.target._request = MagicMock() self.target.dispatcher.add_remote_client = MagicMock() self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent" } self.target._request.return_value = Response(Response.StatusCode.OK, self.value) self.target._ComponentManager__register_event_manager() self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) self.target._request = None def test_subscribe_event(self): self.target.dispatcher.subscribe_event = Mock() self.target._ComponentManager__subscribe_event() self.assertEqual(self.target.dispatcher.subscribe_event.call_count, 1) def test_register_component_type_component_types_true(self): self.target._object_property._object_property["component_types"] =\ "component_name" self.value = Packet("packet_id", "InPacket", { "type": "BasicFlowMatch", "in_port": "123456", "in_node": "123456789" }) self.target.register_component_type(self.value.__class__) self.assertEqual( self.target.component_classes[self.value.__class__.__name__], self.value.__class__) self.assertEqual( self.target._object_property._object_property["component_types"], "component_name,Packet") def test_register_component_type_component_types_false(self): self.value = Packet("packet_id", "InPacket", { "type": "BasicFlowMatch", "in_port": "123456", "in_node": "123456789" }) self.target.register_component_type(self.value.__class__) self.assertEqual( self.target._object_property._object_property["component_types"], "Packet") def test_add_rules(self): self.target._ComponentManager__parser._RequestParser__rules = [] self.target._ComponentManager__add_rules() rules = self.target._ComponentManager__parser._RequestParser__rules self.assertEqual(len(rules), 5) self.assertEqual( rules[0], { RequestParser.PATTERN: "^component_types/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_component_types, RequestParser.PARAMS: 0 }) self.assertEqual( rules[1], { RequestParser.PATTERN: "^components/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_components, RequestParser.PARAMS: 0 }) self.assertEqual( rules[2], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.PUT, RequestParser.FUNC: self.target._do_put_component, RequestParser.PARAMS: 2 }) self.assertEqual( rules[3], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_component, RequestParser.PARAMS: 1 }) self.assertEqual( rules[4], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.DELETE, RequestParser.FUNC: self.target._do_delete_component, RequestParser.PARAMS: 1 }) def test_on_request(self): request = Request("ObjectId", Request.Method.GET, "component_managers", None) self.result = self.target._on_request(request) self.assertEqual(self.result.status_code, 404) self.assertEqual(self.result.body, None) def test_do_get_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"object_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["type"], "ComponentManager") self.assertEqual(self.result.body["id"], "456") def test_do_get_component_object_id_not_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"False_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 404) self.assertEqual(self.result.body, None) def test_do_put_component_success(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 201) self.assertEqual(self.result.body["type"], "ComponentManager") self.assertEqual(self.result.body["id"], "456") self.assertEqual(self.result.body["state"], "running") def test_do_put_component_error(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.target.components = MagicMock() self.target.components[" "].on_initialize.return_value = False self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 201) self.target.components["456"].\ _object_property.set_state.assert_called_once_with("error") def test_do_put_component_component_type_not_in_component_classes(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "123", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 400) self.assertEqual(self.result.body, None) def test_do_put_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.target.components["456"] = "False" self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 409) self.assertEqual(self.result.body, None) def test_do_delete_component(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.value = ComponentManager("123", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "123", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "123") self.result = self.target._do_delete_component("456") self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body, None) self.assertEqual(len(self.target.components), 1) def test_do_get_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") self.value = ComponentManager("123", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "123", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "123") self.result = self.target._do_get_components() self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["456"]["type"], "ComponentManager") self.assertEqual(self.result.body["456"]["id"], "456") self.assertEqual(self.result.body["456"]["state"], "running") self.assertEqual(self.result.body["123"]["type"], "ComponentManager") self.assertEqual(self.result.body["123"]["id"], "123") self.assertEqual(self.result.body["123"]["state"], "running") def test_do_get_component_types(self): self.target.component_classes = { "SampleDummyDriver": SampleDummyDriver } self.result = self.target._do_get_component_types() self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["SampleDummyDriver"]["type"], "SampleDummyDriver") self.assertEqual(self.result.body["SampleDummyDriver"]["super_type"], "Driver") self.assertEqual( len(self.result.body["SampleDummyDriver"]["connection_types"]), 2) def test_do_get_component_types_error(self): self.target.component_classes = {"DummyDriver": self} self.result = self.target._do_get_component_types() self.assertEqual(self.result.status_code, 500) def test_do_component_changed(self): self.target.dispatcher.publish_event_async = Mock() self.target._do_component_changed("add", "prev", "curr") self.assertEqual(self.target.dispatcher.publish_event_async.call_count, 1) def test_do_event_componentmanagerchanged_add_action(self): self.value = { "action": "add", "prev": None, "curr": { "id": "Curr", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:12345", "state": "running", "description": "NetworkComponent" } } self.result = Response("add", self.value) self.target.dispatcher.add_remote_client = Mock() self.target._do_event_componentmanagerchanged(self.result) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_do_event_componentmanagerchanged_delete_action(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = self.target._do_put_component(self.value, "456") prev = self.target.components["456"].object_property.packed_object() self.target.dispatcher.remove_remote_client = Mock() self.value = {"action": "delete", "prev": prev, "curr": None} self.result = Response("add", self.value) self.target._do_event_componentmanagerchanged(self.result) self.assertEqual( self.target.dispatcher.remove_remote_client.call_count, 1) def test_do_event_componentmanagerchanged_keyerror(self): self.value = { "type": "ComponentManager", "id": "456", "base_uri": "789" } self.result = Response("add", self.value) with patch('logging.error') as m_logging_error: self.target._do_event_componentmanagerchanged(self.result) self.assertEqual(m_logging_error.call_count, 1)
def test_do_get_component_object_id_not_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"False_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 404) self.assertEqual(self.result.body, None)
class ComponentManagerTest(unittest.TestCase, ComponentManager): MessageDispatcher = MagicMock() value = None result = None def setUp(self): self.target = ComponentManager("cc_action", self.MessageDispatcher) def tearDown(self): self.target = None self.dispatcher = None def test_constructor(self): rules = self.target._ComponentManager__parser._RequestParser__rules self.assertEqual(self.target._object_property._object_property["type"], "ComponentManager") self.assertEqual(self.target._object_property._object_property["id"], "cc_action") self.assertEqual(self.target._object_property._object_property["state"], "running") self.assertEqual(self.target.component_classes, {}) self.assertEqual(self.target.components, {}) self.assertEqual(len(rules), 5) def test_register_to_system_manager_success(self): self.target._request = MagicMock() self.target._ComponentManager__register_component_managers = MagicMock() register_component_managers = self.target._ComponentManager__register_component_managers self.target._ComponentManager__register_event_manager = MagicMock() register_event_manager = self.target._ComponentManager__register_event_manager self.target._ComponentManager__subscribe_event = MagicMock() subscribe_event = self.target._ComponentManager__subscribe_event self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent", } self.target._request.return_value = Response(Response.StatusCode.OK, self.value) with patch("logging.debug") as m_logging_debug: self.target.register_to_system_manager() self.assertEqual(m_logging_debug.call_count, 1) self.assertEqual(register_component_managers.call_count, 1) self.assertEqual(register_event_manager.call_count, 1) self.assertEqual(subscribe_event.call_count, 1) self.target._ComponentManager__register_component_managers.close() self.target._ComponentManager__register_event_manager.close() self.target._ComponentManager__subscribe_event.close() def test_register_to_system_manager_Error(self): self.target._request = MagicMock() self.target._ComponentManager__register_component_managers = MagicMock() register_component_managers = self.target._ComponentManager__register_component_managers self.target._ComponentManager__register_event_manager = MagicMock() register_event_manager = self.target._ComponentManager__register_event_manager self.target._ComponentManager__subscribe_event = MagicMock() subscribe_event = self.target._ComponentManager__subscribe_event self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent", } self.target._request.return_value = Response(Response.StatusCode.BAD_REQUEST, self.value) with nested(patch("logging.debug"), patch("logging.error")) as (m_logging_debug, m_logging_error): self.target.register_to_system_manager() self.assertEqual(m_logging_debug.call_count, 1) self.assertEqual(m_logging_error.call_count, 1) self.assertEqual(register_component_managers.call_count, 1) self.assertEqual(register_event_manager.call_count, 0) self.assertEqual(subscribe_event.call_count, 0) self.target._ComponentManager__register_component_managers.close() self.target._ComponentManager__register_event_manager.close() self.target._ComponentManager__subscribe_event.close() def test_register_component_managers_True(self): self.target._request = MagicMock() self.target.dispatcher.add_remote_client = MagicMock() self.value = [ { "id": "Curr", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent", } ] self.target._request.return_value = Response(Response.StatusCode.OK, self.value) self.target._ComponentManager__register_component_managers() self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_register_component_managers_error(self): with patch("logging.error") as m_logging_error: self.target._ComponentManager__register_component_managers() self.assertEqual(self.target._object_property._object_property["state"], "error") self.assertEqual(m_logging_error.call_count, 1) def test_register_other_component_manager_NotEqual_object_id(self): self.target.dispatcher.add_remote_client = Mock() component_manager = {"id": "123", "base_uri": "456"} self.target._ComponentManager__register_other_component_manager(component_manager) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_register_other_component_manager_Equal_object_id(self): self.target.dispatcher.add_remote_client = Mock() component_manager = {"id": "cc_action", "base_uri": "456"} self.target._ComponentManager__register_other_component_manager(component_manager) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 0) def test_unregister_component_manager(self): self.target.dispatcher.remove_remote_client = Mock() self.target._ComponentManager__unregister_component_manager("cc_action") self.assertEqual(self.target.dispatcher.remove_remote_client.call_count, 1) def test_register_event_manager_error(self): self.target._ComponentManager__register_event_manager() self.assertEqual(self.target._object_property._object_property["state"], "error") def test_register_event_manager_not_error(self): self.target._request = MagicMock() self.target.dispatcher.add_remote_client = MagicMock() self.value = { "id": "123456", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:123456", "state": "running", "description": "NetworkComponent", } self.target._request.return_value = Response(Response.StatusCode.OK, self.value) self.target._ComponentManager__register_event_manager() self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) self.target._request = None def test_subscribe_event(self): self.target.dispatcher.subscribe_event = Mock() self.target._ComponentManager__subscribe_event() self.assertEqual(self.target.dispatcher.subscribe_event.call_count, 1) def test_register_component_type_component_types_true(self): self.target._object_property._object_property["component_types"] = "component_name" self.value = Packet( "packet_id", "InPacket", {"type": "BasicFlowMatch", "in_port": "123456", "in_node": "123456789"} ) self.target.register_component_type(self.value.__class__) self.assertEqual(self.target.component_classes[self.value.__class__.__name__], self.value.__class__) self.assertEqual(self.target._object_property._object_property["component_types"], "component_name,Packet") def test_register_component_type_component_types_false(self): self.value = Packet( "packet_id", "InPacket", {"type": "BasicFlowMatch", "in_port": "123456", "in_node": "123456789"} ) self.target.register_component_type(self.value.__class__) self.assertEqual(self.target._object_property._object_property["component_types"], "Packet") def test_add_rules(self): self.target._ComponentManager__parser._RequestParser__rules = [] self.target._ComponentManager__add_rules() rules = self.target._ComponentManager__parser._RequestParser__rules self.assertEqual(len(rules), 5) self.assertEqual( rules[0], { RequestParser.PATTERN: "^component_types/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_component_types, RequestParser.PARAMS: 0, }, ) self.assertEqual( rules[1], { RequestParser.PATTERN: "^components/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_components, RequestParser.PARAMS: 0, }, ) self.assertEqual( rules[2], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.PUT, RequestParser.FUNC: self.target._do_put_component, RequestParser.PARAMS: 2, }, ) self.assertEqual( rules[3], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.GET, RequestParser.FUNC: self.target._do_get_component, RequestParser.PARAMS: 1, }, ) self.assertEqual( rules[4], { RequestParser.PATTERN: "^components/" + "([a-zA-Z0-9_-]+)/?$", RequestParser.METHOD: Request.Method.DELETE, RequestParser.FUNC: self.target._do_delete_component, RequestParser.PARAMS: 1, }, ) def test_on_request(self): request = Request("ObjectId", Request.Method.GET, "component_managers", None) self.result = self.target._on_request(request) self.assertEqual(self.result.status_code, 404) self.assertEqual(self.result.body, None) def test_do_get_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"object_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["type"], "ComponentManager") self.assertEqual(self.result.body["id"], "456") def test_do_get_component_object_id_not_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.components = {"False_id": self.value} self.result = self.target._do_get_component("object_id") self.assertEqual(self.result.status_code, 404) self.assertEqual(self.result.body, None) def test_do_put_component_success(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 201) self.assertEqual(self.result.body["type"], "ComponentManager") self.assertEqual(self.result.body["id"], "456") self.assertEqual(self.result.body["state"], "running") def test_do_put_component_error(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.target.components = MagicMock() self.target.components[" "].on_initialize.return_value = False self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 201) self.target.components["456"]._object_property.set_state.assert_called_once_with("error") def test_do_put_component_component_type_not_in_component_classes(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "123", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 400) self.assertEqual(self.result.body, None) def test_do_put_component_object_id_in_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.target.components["456"] = "False" self.result = self.target._do_put_component(self.value, "456") self.assertEqual(self.result.status_code, 409) self.assertEqual(self.result.body, None) def test_do_delete_component(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.value = ComponentManager("123", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "123", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "123") self.result = self.target._do_delete_component("456") self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body, None) self.assertEqual(len(self.target.components), 1) def test_do_get_components(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") self.value = ComponentManager("123", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "123", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "123") self.result = self.target._do_get_components() self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["456"]["type"], "ComponentManager") self.assertEqual(self.result.body["456"]["id"], "456") self.assertEqual(self.result.body["456"]["state"], "running") self.assertEqual(self.result.body["123"]["type"], "ComponentManager") self.assertEqual(self.result.body["123"]["id"], "123") self.assertEqual(self.result.body["123"]["state"], "running") def test_do_get_component_types(self): self.target.component_classes = {"SampleDummyDriver": SampleDummyDriver} self.result = self.target._do_get_component_types() self.assertEqual(self.result.status_code, 200) self.assertEqual(self.result.body["SampleDummyDriver"]["type"], "SampleDummyDriver") self.assertEqual(self.result.body["SampleDummyDriver"]["super_type"], "Driver") self.assertEqual(len(self.result.body["SampleDummyDriver"]["connection_types"]), 2) def test_do_get_component_types_error(self): self.target.component_classes = {"DummyDriver": self} self.result = self.target._do_get_component_types() self.assertEqual(self.result.status_code, 500) def test_do_component_changed(self): self.target.dispatcher.publish_event_async = Mock() self.target._do_component_changed("add", "prev", "curr") self.assertEqual(self.target.dispatcher.publish_event_async.call_count, 1) def test_do_event_componentmanagerchanged_add_action(self): self.value = { "action": "add", "prev": None, "curr": { "id": "Curr", "super_type": "Network", "type": "Network", "base_uri": "http://example.com:12345", "state": "running", "description": "NetworkComponent", }, } self.result = Response("add", self.value) self.target.dispatcher.add_remote_client = Mock() self.target._do_event_componentmanagerchanged(self.result) self.assertEqual(self.target.dispatcher.add_remote_client.call_count, 1) def test_do_event_componentmanagerchanged_delete_action(self): self.value = ComponentManager("456", self.MessageDispatcher) self.target.register_component_type(self.value.__class__) self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = self.target._do_put_component(self.value, "456") prev = self.target.components["456"].object_property.packed_object() self.target.dispatcher.remove_remote_client = Mock() self.value = {"action": "delete", "prev": prev, "curr": None} self.result = Response("add", self.value) self.target._do_event_componentmanagerchanged(self.result) self.assertEqual(self.target.dispatcher.remove_remote_client.call_count, 1) def test_do_event_componentmanagerchanged_keyerror(self): self.value = {"type": "ComponentManager", "id": "456", "base_uri": "789"} self.result = Response("add", self.value) with patch("logging.error") as m_logging_error: self.target._do_event_componentmanagerchanged(self.result) self.assertEqual(m_logging_error.call_count, 1)