Verification
This section documents the test cases and their traceability to requirements. It is automatically generated from the source code.
Test GET / returns server capabilities and entry points. Implementation: |
Test GET /version-info returns gateway status and version. Implementation: |
Test GET /areas returns all discovered areas. Implementation: |
Test GET /components returns all discovered components. Implementation: |
Test that automotive areas are properly discovered. Implementation: |
Test GET /areas/{area_id}/components returns components for valid area. Implementation: |
Test GET /areas/{area_id}/components returns 404 for nonexistent area. Implementation: |
Test GET /components/{component_id}/data for engine component. Implementation: |
Test GET /components/{component_id}/data for brakes component. Implementation: |
Test GET /components/{component_id}/data for door component. Implementation: |
Test GET /components/{component_id}/data response structure. Implementation: |
Test GET /components/{component_id}/data returns 404 for nonexistent component. Implementation: |
Test GET /components/{component_id}/data returns empty array. Verifies that components with no topics return an empty array. The calibration component typically has only services, no topics. Implementation: |
Test Case: test_13_invalid_component_id_special_chars TEST_test_13_invalid_component_id_special_chars
|
Test GET /components/{component_id}/data rejects special characters. Implementation: |
Test GET /areas/{area_id}/components rejects special characters. Implementation: |
Test that valid IDs with underscores are accepted (ROS 2 naming). Implementation: |
Test that IDs with hyphens are rejected (not allowed in ROS 2 names). Implementation: |
Test GET /components/{component_id}/data/{topic_name} for temperature topic. Implementation: |
Test GET /components/{component_id}/data/{topic_name} for RPM topic. Implementation: |
Test GET /components/{component_id}/data/{topic_name} for pressure topic. Implementation: |
Test GET /components/{component_id}/data/{topic_name} response structure. Implementation: |
Test GET /components/{component_id}/data/{topic_name} returns 404 for nonexistent topic. Implementation: |
Test Case: test_22_component_topic_nonexistent_component_error TEST_test_22_component_topic_nonexistent_component_error
|
Test GET endpoint returns 404 for nonexistent component. Implementation: |
Test GET with percent-encoded slashes in topic path. Implementation: |
Test that valid topic names work correctly. Implementation: |
Test PUT /components/{component_id}/data/{topic_name} publishes data. Implementation: |
Test PUT /components/{component_id}/data/{topic_name} returns 400 when type missing. Implementation: |
Test PUT /components/{component_id}/data/{topic_name} returns 400 when data missing. Implementation: |
Test Case: test_28_publish_validation_invalid_type_format TEST_test_28_publish_validation_invalid_type_format
|
Test PUT /components/{component_id}/data/{topic_name} returns 400 for invalid type. Implementation: |
Test PUT /components/{component_id}/data/{topic_name} returns 404 for unknown component. Implementation: |
Test PUT /components/{component_id}/data/{topic_name} returns 400 for invalid JSON. Implementation: |
Test POST /components/{component_id}/operations/{operation_name} calls a service. Implementation: |
Test Case: test_32_operation_call_nonexistent_operation TEST_test_32_operation_call_nonexistent_operation
|
Test operation call returns 404 for unknown operation. POST /components/{component_id}/operations/{operation_name} Implementation: |
Test Case: test_33_operation_call_nonexistent_component TEST_test_33_operation_call_nonexistent_component
|
Test operation call returns 404 for unknown component. POST /components/{component_id}/operations/{operation_name} Implementation: |
Test Case: test_34_operation_call_invalid_component_id TEST_test_34_operation_call_invalid_component_id
|
Test operation call rejects invalid component ID. POST /components/{component_id}/operations/{operation_name} Implementation: |
Test Case: test_35_operation_call_invalid_operation_name TEST_test_35_operation_call_invalid_operation_name
|
Test operation call rejects invalid operation name. POST /components/{component_id}/operations/{operation_name} Implementation: |
Test operation call returns 400 for invalid JSON body. POST /components/{component_id}/operations/{operation_name} Implementation: |
Test Case: test_37_operations_listed_in_component_discovery TEST_test_37_operations_listed_in_component_discovery
|
Test that operations (services) are listed in component discovery response. Implementation: |
Test that root endpoint lists operations endpoint and capability. Implementation: |
Test POST /components/{component_id}/operations/{operation_name} sends action goal. Sends a goal to the long_calibration action and verifies goal_id is returned. Implementation: |
Test GET /components/{component_id}/operations/{operation_name}/status returns goal status. Implementation: |
Test that action status is updated to succeeded after completion via native subscription. The native status subscription updates goal status in real-time. After an action completes, polling the status endpoint should show ‘succeeded’. Implementation: |
Test DELETE /components/{component_id}/operations/{operation_name} cancels action. Implementation: |
Test Case: test_43_action_listed_in_component_discovery TEST_test_43_action_listed_in_component_discovery
|
Test that actions are listed in component discovery response. Implementation: |
Test Case: test_44_action_status_without_goal_id_returns_latest TEST_test_44_action_status_without_goal_id_returns_latest
|
Test action status without goal_id returns latest goal. GET /components/{component_id}/operations/{operation_name}/status Returns the most recent goal status when no goal_id is provided. Implementation: |
Test GET /components/{component_id}/configurations lists all parameters. Implementation: |
Test GET /components/{component_id}/configurations/{param_name} gets parameter. Implementation: |
Test PUT /components/{component_id}/configurations/{param_name} sets parameter. Implementation: |
Test Case: test_48_delete_configuration_resets_to_default TEST_test_48_delete_configuration_resets_to_default
|
Test DELETE /components/{component_id}/configurations/{param_name} resets to default. The DELETE method resets the parameter to its default value. It first changes the value, then resets it, then verifies the reset. Implementation: |
Test Case: test_49_configurations_nonexistent_component TEST_test_49_configurations_nonexistent_component
|
Test GET /components/{component_id}/configurations returns 404 for unknown component. Implementation: |
Test Case: test_50_configuration_nonexistent_parameter TEST_test_50_configuration_nonexistent_parameter
|
Test GET configurations/{param_name} returns 404 for unknown param. Implementation: |
Test PUT configurations/{param_name} returns 400 when value missing. Implementation: |
Test Case: test_52_root_endpoint_includes_configurations TEST_test_52_root_endpoint_includes_configurations
|
Test that root endpoint lists configurations endpoints and capability. Implementation: |
Test Case: test_53_service_operation_has_type_info_schema TEST_test_53_service_operation_has_type_info_schema
|
Test that service operations include type_info with request/response schemas. Implementation: |
Test Case: test_54_action_operation_has_type_info_schema TEST_test_54_action_operation_has_type_info_schema
|
Test that action operations include type_info with goal/result/feedback schemas. Implementation: |
Test that root endpoint lists faults endpoints and capability. Implementation: |
Test GET /components/{component_id}/faults returns valid response structure. Implementation: |
Test GET /components/{component_id}/faults returns 404 for unknown component. Implementation: |
Test GET /components/{component_id}/faults/{fault_code} returns 404. Implementation: |
Implementation: |
Implementation: |
Implementation: |
Implementation: |
ID |
Title |
Status |
Verifies |
|---|---|---|---|
test_01_root_endpoint |
verified |
||
test_01b_version_info_endpoint |
verified |
||
test_02_list_areas |
verified |
||
test_03_list_components |
verified |
||
test_04_automotive_areas_discovery |
verified |
||
test_05_area_components_success |
verified |
||
test_06_area_components_nonexistent_error |
verified |
||
test_07_component_data_powertrain_engine |
verified |
||
test_08_component_data_chassis_brakes |
verified |
||
test_09_component_data_body_door |
verified |
||
test_10_component_data_structure |
verified |
||
test_11_component_nonexistent_error |
verified |
||
test_12_component_no_topics |
verified |
||
test_13_invalid_component_id_special_chars |
verified |
||
test_14_invalid_area_id_special_chars |
verified |
||
test_15_valid_ids_with_underscores |
verified |
||
test_16_invalid_ids_with_hyphens |
verified |
||
test_17_component_topic_temperature |
verified |
||
test_18_component_topic_rpm |
verified |
||
test_19_component_topic_pressure |
verified |
||
test_20_component_topic_data_structure |
verified |
||
test_21_component_nonexistent_topic_error |
verified |
||
test_22_component_topic_nonexistent_component_error |
verified |
||
test_23_component_topic_with_slashes |
verified |
||
test_24_component_topic_valid_names |
verified |
||
test_25_publish_brake_command |
verified |
||
test_26_publish_validation_missing_type |
verified |
||
test_27_publish_validation_missing_data |
verified |
||
test_28_publish_validation_invalid_type_format |
verified |
||
test_29_publish_nonexistent_component |
verified |
||
test_30_publish_invalid_json_body |
verified |
||
test_31_operation_call_calibrate_service |
verified |
||
test_32_operation_call_nonexistent_operation |
verified |
||
test_33_operation_call_nonexistent_component |
verified |
||
test_34_operation_call_invalid_component_id |
verified |
||
test_35_operation_call_invalid_operation_name |
verified |
||
test_36_operation_call_with_invalid_json |
verified |
||
test_37_operations_listed_in_component_discovery |
verified |
||
test_38_root_endpoint_includes_operations |
verified |
||
test_39_action_send_goal_and_get_id |
verified |
||
test_40_action_status_endpoint |
verified |
||
test_41_action_status_after_completion |
verified |
||
test_42_action_cancel_endpoint |
verified |
||
test_43_action_listed_in_component_discovery |
verified |
||
test_44_action_status_without_goal_id_returns_latest |
verified |
||
test_45_list_configurations |
verified |
||
test_46_get_configuration |
verified |
||
test_47_set_configuration |
verified |
||
test_48_delete_configuration_resets_to_default |
verified |
||
test_49_configurations_nonexistent_component |
verified |
||
test_50_configuration_nonexistent_parameter |
verified |
||
test_51_set_configuration_missing_value |
verified |
||
test_52_root_endpoint_includes_configurations |
verified |
||
test_53_service_operation_has_type_info_schema |
verified |
||
test_54_action_operation_has_type_info_schema |
verified |
||
test_55_root_endpoint_includes_faults |
verified |
||
test_56_list_faults_response_structure |
verified |
||
test_57_faults_nonexistent_component |
verified |
||
test_58_get_nonexistent_fault |
verified |
||
test_list_areas_endpoint |
verified |
||
test_list_components_endpoint |
verified |
||
test_root_endpoint |
verified |
||
test_version_info_endpoint |
verified |