diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml index 525641f..aa19fd0 100644 --- a/api-ref/source/parameters.yaml +++ b/api-ref/source/parameters.yaml @@ -217,7 +217,7 @@ node_request_description: description: | A description for a new composed node in: body - required: tree + required: false type: string node_request_name: description: | diff --git a/valence/controller/nodes.py b/valence/controller/nodes.py index 31d7f5b..47c1b46 100644 --- a/valence/controller/nodes.py +++ b/valence/controller/nodes.py @@ -77,8 +77,12 @@ class Node(object): "processor": {} } + if not("name" in request_body and request_body["name"].strip()): + raise exception.BadRequest( + detail="Please specify a name of the node to compose") name = request_body["name"] - description = request_body["description"] + # "description" is optional + description = request_body.get("description", "") compose_request = cls._create_compose_request(name, description, diff --git a/valence/tests/unit/controller/test_nodes.py b/valence/tests/unit/controller/test_nodes.py index 62ccbae..9217741 100644 --- a/valence/tests/unit/controller/test_nodes.py +++ b/valence/tests/unit/controller/test_nodes.py @@ -73,6 +73,14 @@ class TestAPINodes(unittest.TestCase): requirements) self.assertEqual(expected, result) + def test_compose_node_with_wrong_parameters(self): + """Test compose node with no name input""" + with self.assertRaises(exception.BadRequest) as context: + nodes.Node.compose_node({"no_name": "fake_value"}) + + self.assertTrue("Please specify a name of the node to compose" + in context.exception.detail) + @mock.patch("valence.db.api.Connection.create_composed_node") @mock.patch("valence.common.utils.generate_uuid") @mock.patch("valence.controller.nodes.Node.list_composed_nodes")