diff --git a/formats/mission_plan.py b/formats/mission_plan.py index 1d3b21e5fbf3d9fb64a776ea8552bb15481d4f50..b1c41160ea0d688af67ab54af939ea91c77beb45 100644 --- a/formats/mission_plan.py +++ b/formats/mission_plan.py @@ -86,5 +86,10 @@ mission_plan_schema = { "items": action_schema, }, }, - "required": ["message_type", "autonomy_engine_plan_ID", "platform_ID", "plan"], + "required": [ + "message_type", + "autonomy_engine_plan_ID", + "platform_ID", + "plan", + ], } diff --git a/formats/platform_status.py b/formats/platform_status.py index 450157068ddb992a7f57a0e01ab6f47ff672b465..2ef5560ceb8763e5fcd0638d2a7a545a7b3778ad 100644 --- a/formats/platform_status.py +++ b/formats/platform_status.py @@ -59,11 +59,11 @@ platform_status_schema = { "example": "2022-12-21T00:00:00Z", }, "platform_state": { - "type": "string", # TODO: Define enum with potential STATES of each platform + "type": "string", "description": "Current state executed by platform. E.g. " + "STOP, IDLE, ABORT.", "example": "ABORT", - }, + }, # TODO: Define enum with potential STATES of each platform "autonomy_engine_plan_ID": { "type": "integer", "description": "Last mission plan ID (according to Autonomy" diff --git a/generate_schema_config.py b/generate_schema_config.py index 8cf02b6270484b3697c28476697b4f11c0534277..2c1c8389073f2364f0ce62ecdf7e195a52e4702a 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -31,7 +31,9 @@ swagger_config = { "schemas": { "MESSAGE": { "type": "object", - "description": "Full message definition with message-metadata in `header` and different message type schemas under `payload`", + "description": "Full message definition with" + + " message-metadata in `header` and different" + + " message type schemas under `payload`", "properties": { "header": { "$ref": "#/components/schemas/header", @@ -46,17 +48,18 @@ swagger_config = { "mapping": { "mission_plan": "#/components/schemas/mission_plan", "observation": "#/components/schemas/observation", - "planning_configuration": "#/components/schemas/planning_configuration", + "planning_configuration": "#/components/schemas/" + + "planning_configuration", "platform_status": "#/components/schemas/platform_status", "acknowledgement": "#/components/schemas/acknowledgement", }, }, "oneOf": [ - {"$ref": "#/components/schemas/" + "acknowledgement"}, - {"$ref": "#/components/schemas/" + "mission_plan"}, - {"$ref": "#/components/schemas/" + "observation"}, - {"$ref": "#/components/schemas/" + "planning_configuration"}, - {"$ref": "#/components/schemas/" + "platform_status"}, + {"$ref": "#/components/schemas/acknowledgement"}, + {"$ref": "#/components/schemas/mission_plan"}, + {"$ref": "#/components/schemas/observation"}, + {"$ref": "#/components/schemas/planning_configuration"}, + {"$ref": "#/components/schemas/platform_status"}, ], }, "header": message_header, diff --git a/tests/fixtures/schemas.py b/tests/fixtures/schemas.py index 2d4ff053b3f21539596bb7678d3f244b5a471097..d9633d1dc6b845fb322b6ad5ba1363d80f98ba8f 100644 --- a/tests/fixtures/schemas.py +++ b/tests/fixtures/schemas.py @@ -158,7 +158,12 @@ mission_plan_schema = { "items": action_schema, }, }, - "required": ["message_type", "autonomy_engine_plan_ID", "platform_ID", "plan"], + "required": [ + "message_type", + "autonomy_engine_plan_ID", + "platform_ID", + "plan", + ], } @@ -460,7 +465,7 @@ platform_status_schema = { "example": "2022-12-21T00:00:00Z", }, "platform_state": { - "type": "string", # TODO: Define enum with potential STATES of each platform + "type": "string", "description": "Current state executed by platform. E.g. " + "STOP, IDLE, ABORT.", "example": "ABORT", diff --git a/tests/test_schemas.py b/tests/test_schemas.py index a2942e18c05c563e645173c3fa389f39a75c78ac..bf8478d87d7c804f6a719a021f3d0908f874853b 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -1,11 +1,7 @@ -from openapi_spec_validator import openapi_v30_spec_validator, openapi_v3_spec_validator +from openapi_spec_validator import openapi_v30_spec_validator from openapi_spec_validator.readers import read_from_filename from openapi_schema_validator import validate from jsonschema import FormatChecker -from jsonschema import validate - -import unittest - from tests.fixtures.schemas import ( acknowledgement_schema, message_header, @@ -14,6 +10,7 @@ from tests.fixtures.schemas import ( platform_status_schema, mission_plan_schema, ) +import unittest import json @@ -37,21 +34,35 @@ class TestSchema(unittest.TestCase): mock_data = json.load(f) header_data = mock_data["header"] payload_data = mock_data["payload"] - self.assertIsNone(validate(header_data, message_header, format_checker=FormatChecker())) + self.assertIsNone( + validate( + header_data, + message_header, + format_checker=FormatChecker(), + ) + ) if item == "acknowledgement": self.assertIsNone( validate( - payload_data, acknowledgement_schema, format_checker=FormatChecker() + payload_data, + acknowledgement_schema, + format_checker=FormatChecker(), ) ) elif item == "mission_plan": self.assertIsNone( - validate(payload_data, mission_plan_schema, format_checker=FormatChecker()) + validate( + payload_data, + mission_plan_schema, + format_checker=FormatChecker(), + ) ) elif item == "platform_status": self.assertIsNone( validate( - payload_data, platform_status_schema, format_checker=FormatChecker() + payload_data, + platform_status_schema, + format_checker=FormatChecker(), ) ) @@ -65,7 +76,13 @@ class TestSchema(unittest.TestCase): mock_data = json.load(f) header_data = mock_data["header"] payload_data = mock_data["payload"] - self.assertIsNone(validate(header_data, message_header, format_checker=FormatChecker())) + self.assertIsNone( + validate( + header_data, + message_header, + format_checker=FormatChecker(), + ) + ) if item == "planning_configuration": self.assertIsNone( validate( @@ -90,26 +107,44 @@ class TestSchema(unittest.TestCase): mock_data = json.load(f) header_data = mock_data["header"] payload_data = mock_data["payload"] - self.assertIsNone(validate(header_data, message_header, format_checker=FormatChecker())) + self.assertIsNone( + validate( + header_data, + message_header, + format_checker=FormatChecker(), + ) + ) if item == "platform_status-from_usbl_example.json": self.assertIsNone( validate( - payload_data, platform_status_schema, format_checker=FormatChecker() + payload_data, + platform_status_schema, + format_checker=FormatChecker(), ) ) elif item == "mission_plan": self.assertIsNone( - validate(payload_data, mission_plan_schema, format_checker=FormatChecker()) + validate( + payload_data, + mission_plan_schema, + format_checker=FormatChecker(), + ) ) elif item == "platform_status": self.assertIsNone( validate( - payload_data, platform_status_schema, format_checker=FormatChecker() + payload_data, + platform_status_schema, + format_checker=FormatChecker(), ) ) elif item == "observation": self.assertIsNone( - validate(payload_data, observation_schema, format_checker=FormatChecker()) + validate( + payload_data, + observation_schema, + format_checker=FormatChecker(), + ) ) def test_sample_autonomy_engine_messages(self): @@ -130,34 +165,60 @@ class TestSchema(unittest.TestCase): mock_data = json.load(f) header_data = mock_data["header"] payload_data = mock_data["payload"] - self.assertIsNone(validate(header_data, message_header, format_checker=FormatChecker())) + self.assertIsNone( + validate( + header_data, + message_header, + format_checker=FormatChecker(), + ) + ) if item == "platform_status-from_usbl_example.json": self.assertIsNone( validate( - payload_data, platform_status_schema, format_checker=FormatChecker() + payload_data, + platform_status_schema, + format_checker=FormatChecker(), ) ) elif item == "mission_plan_AH1": self.assertIsNone( - validate(payload_data, mission_plan_schema, format_checker=FormatChecker()) + validate( + payload_data, + mission_plan_schema, + format_checker=FormatChecker(), + ) ) elif item == "mission_plan_ECOSUB": self.assertIsNone( - validate(payload_data, mission_plan_schema, format_checker=FormatChecker()) + validate( + payload_data, + mission_plan_schema, + format_checker=FormatChecker(), + ) ) elif item == "mission_plan_HYDROSURV": self.assertIsNone( - validate(payload_data, mission_plan_schema, format_checker=FormatChecker()) + validate( + payload_data, + mission_plan_schema, + format_checker=FormatChecker(), + ) ) elif item == "platform_status": self.assertIsNone( validate( - payload_data, platform_status_schema, format_checker=FormatChecker() + payload_data, + platform_status_schema, + format_checker=FormatChecker(), ) ) elif item == "observation": self.assertIsNone( - validate(payload_data, observation_schema, format_checker=FormatChecker()) + validate( + payload_data, + observation_schema, + format_checker=FormatChecker(), + ) ) elif item == "planning_configuration": self.assertIsNone( @@ -170,9 +231,12 @@ class TestSchema(unittest.TestCase): elif item == "acknowledgement": self.assertIsNone( validate( - payload_data, acknowledgement_schema, format_checker=FormatChecker() + payload_data, + acknowledgement_schema, + format_checker=FormatChecker(), ) ) -if __name__ == '__main__': + +if __name__ == "__main__": unittest.main()