Verification

This section documents the test cases and their traceability to requirements. It is automatically generated from the source code.

Test Case: test_01_root_endpoint TEST_test_01_root_endpoint
status: verified
verifies: REQ_INTEROP_010

Test GET / returns server capabilities and entry points.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_01_root_endpoint)

Test Case: test_01b_version_info_endpoint TEST_test_01b_version_info_endpoint
status: verified
verifies: REQ_INTEROP_001

Test GET /version-info returns valid format and data.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_01b_version_info_endpoint)

Test Case: test_01c_endpoint_smoke_test TEST_test_01c_endpoint_smoke_test
status: verified
verifies: REQ_INTEROP_010

Smoke test: verify all advertised GET endpoints are implemented and don’t return 5xx. This test ensures that: 1. All endpoints listed in GET / are actually implemented 2. No endpoint returns a server error (5xx) 3. Documentation in handle_root matches actual implementation Only GET endpoints are tested (safe, read-only operations). POST/PUT/DELETE endpoints are skipped as they modify state.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_01c_endpoint_smoke_test)

Test Case: test_02_list_areas TEST_test_02_list_areas
status: verified
verifies: REQ_INTEROP_003

Test GET /areas returns all discovered areas.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_02_list_areas)

Test Case: test_03_authenticate_valid_credentials TEST_test_03_authenticate_valid_credentials
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth.test.py (Test: test_03_authenticate_valid_credentials)

Test Case: test_03_list_components TEST_test_03_list_components
status: verified
verifies: REQ_INTEROP_003

Test GET /components returns all discovered synthetic components. With heuristic discovery (default), components are synthetic groups created by namespace aggregation. ROS 2 nodes are exposed as Apps.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_03_list_components)

Test Case: test_04_automotive_areas_discovery TEST_test_04_automotive_areas_discovery
status: verified
verifies: REQ_INTEROP_003

Test that automotive areas are properly discovered.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_04_automotive_areas_discovery)

Test Case: test_05_area_components_success TEST_test_05_area_components_success
status: verified
verifies: REQ_INTEROP_006

Test GET /areas/{area_id}/components returns components for valid area. With synthetic components, the powertrain area contains the ‘powertrain’ synthetic component which aggregates all ROS 2 nodes in that namespace.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_05_area_components_success)

Test Case: test_06_area_components_nonexistent_error TEST_test_06_area_components_nonexistent_error
status: verified
verifies: REQ_INTEROP_006

Test GET /areas/{area_id}/components returns 404 for nonexistent area.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_06_area_components_nonexistent_error)

Test Case: test_06_authenticate_form_urlencoded TEST_test_06_authenticate_form_urlencoded
status: verified
verifies: REQ_INTEROP_086

Implementation: src/ros2_medkit_gateway/test/test_auth.test.py (Test: test_06_authenticate_form_urlencoded)

Test Case: test_07_app_data_powertrain_engine TEST_test_07_app_data_powertrain_engine
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data for engine temperature sensor app. Apps are ROS 2 nodes. The temp_sensor app publishes temperature data.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_07_app_data_powertrain_engine)

Test Case: test_07_refresh_token TEST_test_07_refresh_token
status: verified
verifies: REQ_INTEROP_087

Implementation: src/ros2_medkit_gateway/test/test_auth.test.py (Test: test_07_refresh_token)

Test Case: test_08_app_data_chassis_brakes TEST_test_08_app_data_chassis_brakes
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data for brakes pressure sensor app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_08_app_data_chassis_brakes)

Test Case: test_09_app_data_body_door TEST_test_09_app_data_body_door
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data for door status sensor app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_09_app_data_body_door)

Test Case: test_100_get_execution_status TEST_test_100_get_execution_status
status: verified
verifies: REQ_INTEROP_037

Test GET /apps/{id}/operations/{op-id}/executions/{exec-id} gets status. Creates a real execution using long_calibration action, then verifies the execution status endpoint returns correct data.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_100_get_execution_status)

Test Case: test_101_update_execution TEST_test_101_update_execution
status: verified
verifies: REQ_INTEROP_038

Test PUT /apps/{id}/operations/{op-id}/executions/{exec-id} returns 501. Execution updates (pause/resume) are not supported for ROS 2 actions. This test verifies the endpoint exists and returns appropriate error.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_101_update_execution)

Test Case: test_102_list_configurations TEST_test_102_list_configurations
status: verified
verifies: REQ_INTEROP_048

Test GET /apps/{id}/configurations returns configuration list.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_102_list_configurations)

Test Case: test_103_get_configuration TEST_test_103_get_configuration
status: verified
verifies: REQ_INTEROP_049

Test GET /apps/{id}/configurations/{config-id} returns configuration value. Dynamically finds an app with configurations and tests single config endpoint.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_103_get_configuration)

Test Case: test_104_set_configuration TEST_test_104_set_configuration
status: verified
verifies: REQ_INTEROP_050

Test PUT /apps/{id}/configurations/{config-id} sets configuration value.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_104_set_configuration)

Test Case: test_105_reset_all_configurations TEST_test_105_reset_all_configurations
status: verified
verifies: REQ_INTEROP_051

Test DELETE /apps/{id}/configurations resets all configurations. Returns 204 on complete success, 207 if some parameters couldn’t be reset.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_105_reset_all_configurations)

Test Case: test_106_reset_single_configuration TEST_test_106_reset_single_configuration
status: verified
verifies: REQ_INTEROP_052

Test DELETE /apps/{id}/configurations/{config-id} resets single config. Uses temp_sensor with known ‘min_temp’ parameter that can be reset.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_106_reset_single_configuration)

Test Case: test_109_list_area_data TEST_test_109_list_area_data
status: verified
verifies: REQ_INTEROP_018

Test GET /areas/{area_id}/data returns aggregated topics for area. Areas aggregate data from all components and apps in their hierarchy. The powertrain area should include topics from engine sensors.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_109_list_area_data)

Test Case: test_10_app_data_structure TEST_test_10_app_data_structure
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data response structure.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_10_app_data_structure)

Test Case: test_110_list_area_data_nonexistent TEST_test_110_list_area_data_nonexistent
status: verified
verifies: REQ_INTEROP_018

Test GET /areas/{area_id}/data returns 404 for nonexistent area.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_110_list_area_data_nonexistent)

Test Case: test_111_list_area_data_root TEST_test_111_list_area_data_root
status: verified
verifies: REQ_INTEROP_018

Test GET /areas/root/data returns all topics system-wide. The root area aggregates all entities in the system.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_111_list_area_data_root)

Test Case: test_112_list_area_data_empty TEST_test_112_list_area_data_empty
status: verified
verifies: REQ_INTEROP_018

Test GET /areas/{area_id}/data returns 200 with empty items for area with no data. Some areas may exist but have no direct topics - they should return 200 with empty items, not 404. The entity_id should be in aggregated_from.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_112_list_area_data_empty)

Test Case: test_113_list_function_data TEST_test_113_list_function_data
status: verified
verifies: REQ_INTEROP_018

Test GET /functions/{function_id}/data returns data items for function. Functions are logical groupings and may aggregate data from multiple sources.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_113_list_function_data)

Test Case: test_114_list_function_data_nonexistent TEST_test_114_list_function_data_nonexistent
status: verified
verifies: REQ_INTEROP_018

Test GET /functions/{function_id}/data returns 404 for nonexistent function.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_114_list_function_data_nonexistent)

Test Case: test_115_list_function_data_invalid_id TEST_test_115_list_function_data_invalid_id
status: verified
verifies: REQ_INTEROP_018

Test GET /functions/{function_id}/data rejects invalid function IDs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_115_list_function_data_invalid_id)

Test Case: test_116_component_route_rejects_app_id TEST_test_116_component_route_rejects_app_id
status: verified
verifies: REQ_INTEROP_003

Test that /components/{id}/data rejects app IDs. In runtime-only discovery mode, /components/{id} should only accept synthetic component IDs, not individual ROS 2 node (app) IDs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_116_component_route_rejects_app_id)

Test Case: test_117_component_route_rejects_app_id_operations TEST_test_117_component_route_rejects_app_id_operations
status: verified
verifies: REQ_INTEROP_003

Test that /components/{id}/operations rejects app IDs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_117_component_route_rejects_app_id_operations)

Test Case: test_118_component_route_rejects_app_id_configurations TEST_test_118_component_route_rejects_app_id_configurations
status: verified
verifies: REQ_INTEROP_003

Test that /components/{id}/configurations rejects app IDs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_118_component_route_rejects_app_id_configurations)

Test Case: test_119_component_route_rejects_app_id_faults TEST_test_119_component_route_rejects_app_id_faults
status: verified
verifies: REQ_INTEROP_003

Test that /components/{id}/faults rejects app IDs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_119_component_route_rejects_app_id_faults)

Test Case: test_11_app_nonexistent_error TEST_test_11_app_nonexistent_error
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data returns 404 for nonexistent app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_11_app_nonexistent_error)

Test Case: test_120_app_routes_work_with_app_id TEST_test_120_app_routes_work_with_app_id
status: verified
verifies: REQ_INTEROP_003

Test that /apps/{id}/data works correctly with app IDs. Verify that while /components rejects app IDs, /apps accepts them.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_120_app_routes_work_with_app_id)

Test Case: test_121_bulk_data_list_categories_success TEST_test_121_bulk_data_list_categories_success
status: verified
verifies: REQ_INTEROP_071

Test GET /apps/{app}/bulk-data returns categories.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_121_bulk_data_list_categories_success)

Test Case: test_122_bulk_data_list_categories_all_entity_types TEST_test_122_bulk_data_list_categories_all_entity_types
status: verified
verifies: REQ_INTEROP_071

Test bulk-data endpoint works for all entity types.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_122_bulk_data_list_categories_all_entity_types)

Test Case: test_123_bulk_data_list_categories_entity_not_found TEST_test_123_bulk_data_list_categories_entity_not_found
status: verified
verifies: REQ_INTEROP_071

Test bulk-data returns 404 for nonexistent entity.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_123_bulk_data_list_categories_entity_not_found)

Test Case: test_124_bulk_data_list_descriptors_structure TEST_test_124_bulk_data_list_descriptors_structure
status: verified
verifies: REQ_INTEROP_072

Test GET /apps/{app}/bulk-data/rosbags returns BulkDataDescriptor[].

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_124_bulk_data_list_descriptors_structure)

Test Case: test_125_bulk_data_list_descriptors_empty_result TEST_test_125_bulk_data_list_descriptors_empty_result
status: verified
verifies: REQ_INTEROP_072

Test bulk-data returns empty array for entity without rosbags.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_125_bulk_data_list_descriptors_empty_result)

Test Case: test_126_bulk_data_unknown_category_returns_404 TEST_test_126_bulk_data_unknown_category_returns_404
status: verified
verifies: REQ_INTEROP_072

Test bulk-data returns 404 for unknown category.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_126_bulk_data_unknown_category_returns_404)

Test Case: test_127_bulk_data_download_success TEST_test_127_bulk_data_download_success
status: verified
verifies: REQ_INTEROP_073

Test GET /apps/{app}/bulk-data/rosbags/{id} downloads file successfully. This test verifies the complete rosbag download flow: 1. Wait for fault with rosbag snapshot 2. Download the rosbag via bulk-data endpoint 3. Verify response headers (Content-Type, Content-Disposition) 4. Verify response body is non-empty binary data

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_127_bulk_data_download_success)

Test Case: test_128_bulk_data_download_not_found TEST_test_128_bulk_data_download_not_found
status: verified
verifies: REQ_INTEROP_073

Test bulk-data download returns 404 for invalid UUID.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_128_bulk_data_download_not_found)

Test Case: test_129_bulk_data_download_wrong_entity_returns_404 TEST_test_129_bulk_data_download_wrong_entity_returns_404
status: verified
verifies: REQ_INTEROP_073

Test bulk-data download returns 404 if rosbag exists but for different entity. Security check: rosbag belonging to one entity shouldn’t be accessible via another entity’s bulk-data endpoint.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_129_bulk_data_download_wrong_entity_returns_404)

Test Case: test_12_app_no_topics TEST_test_12_app_no_topics
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data returns empty array. Verifies that apps with no topics return an empty items array. The calibration app typically has only services, no topics.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_12_app_no_topics)

Test Case: test_130_bulk_data_nested_entity_path TEST_test_130_bulk_data_nested_entity_path
status: verified
verifies: REQ_INTEROP_071

Test bulk-data endpoints work for nested entities (e.g., perception area).

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_130_bulk_data_nested_entity_path)

Test Case: test_131_fault_response_structure TEST_test_131_fault_response_structure
status: verified
verifies: REQ_INTEROP_013

Test GET /{entity}/faults/{code} returns SOVD-compliant response.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_131_fault_response_structure)

Test Case: test_132_fault_status_object_structure TEST_test_132_fault_status_object_structure
status: verified
verifies: REQ_INTEROP_013

Test fault item has SOVD-compliant status object.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_132_fault_status_object_structure)

Test Case: test_133_fault_environment_data_structure TEST_test_133_fault_environment_data_structure
status: verified
verifies: REQ_INTEROP_013

Test fault response includes environment_data with snapshots.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_133_fault_environment_data_structure)

Test Case: test_134_fault_snapshot_freeze_frame_structure TEST_test_134_fault_snapshot_freeze_frame_structure
status: verified
verifies: REQ_INTEROP_013

Test freeze_frame snapshot has correct structure.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_134_fault_snapshot_freeze_frame_structure)

Test Case: test_135_fault_snapshot_rosbag_has_bulk_data_uri TEST_test_135_fault_snapshot_rosbag_has_bulk_data_uri
status: verified
verifies: REQ_INTEROP_013

Test rosbag snapshot has correct bulk_data_uri format.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_135_fault_snapshot_rosbag_has_bulk_data_uri)

Test Case: test_136_fault_x_medkit_extensions TEST_test_136_fault_x_medkit_extensions
status: verified
verifies: REQ_INTEROP_013

Test fault response includes x-medkit extensions.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_136_fault_x_medkit_extensions)

Test Case: test_137_bulk_data_download_verifies_complete_rosbag TEST_test_137_bulk_data_download_verifies_complete_rosbag
status: verified
verifies: REQ_INTEROP_073

Test downloading rosbag and verifying it’s a valid file. This test goes beyond basic download verification to ensure the downloaded content is actually a valid rosbag file.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_137_bulk_data_download_verifies_complete_rosbag)

Test Case: test_13_invalid_app_id_special_chars TEST_test_13_invalid_app_id_special_chars
status: verified
verifies: REQ_INTEROP_018

Test GET /apps/{app_id}/data rejects special characters.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_13_invalid_app_id_special_chars)

Test Case: test_14_invalid_area_id_special_chars TEST_test_14_invalid_area_id_special_chars
status: verified
verifies: REQ_INTEROP_006

Test GET /areas/{area_id}/components rejects special characters.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_14_invalid_area_id_special_chars)

Test Case: test_15_valid_ids_with_underscores TEST_test_15_valid_ids_with_underscores
status: verified
verifies: REQ_INTEROP_018

Test that valid IDs with underscores are accepted (ROS 2 naming).

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_15_valid_ids_with_underscores)

Test Case: test_16_invalid_ids_with_special_chars TEST_test_16_invalid_ids_with_special_chars
status: verified
verifies: REQ_INTEROP_018

Test that IDs with special chars (except underscore/hyphen) are rejected.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_16_invalid_ids_with_special_chars)

Test Case: test_16_snapshot_capture_on_fault_confirmation TEST_test_16_snapshot_capture_on_fault_confirmation
status: verified
verifies: REQ_INTEROP_088

Test that snapshot is captured when fault is confirmed.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py (Test: test_16_snapshot_capture_on_fault_confirmation)

Test Case: test_17_component_topic_temperature TEST_test_17_component_topic_temperature
status: verified
verifies: REQ_INTEROP_019

Test GET /components/{component_id}/data/{topic_name} for temperature topic. Uses synthetic ‘powertrain’ component which aggregates apps in that namespace.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_17_component_topic_temperature)

Test Case: test_17_get_snapshots_nonexistent_fault TEST_test_17_get_snapshots_nonexistent_fault
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots returns error for nonexistent fault.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py (Test: test_17_get_snapshots_nonexistent_fault)

Test Case: test_18_component_topic_rpm TEST_test_18_component_topic_rpm
status: verified
verifies: REQ_INTEROP_019

Test GET /components/{component_id}/data/{topic_name} for RPM topic. Uses synthetic ‘powertrain’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_18_component_topic_rpm)

Test Case: test_18_get_snapshots_empty_fault_code TEST_test_18_get_snapshots_empty_fault_code
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots returns error for empty fault code.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py (Test: test_18_get_snapshots_empty_fault_code)

Test Case: test_19_component_topic_pressure TEST_test_19_component_topic_pressure
status: verified
verifies: REQ_INTEROP_019

Test GET /components/{component_id}/data/{topic_name} for pressure topic. Uses synthetic ‘chassis’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_19_component_topic_pressure)

Test Case: test_19_snapshot_with_topic_filter TEST_test_19_snapshot_with_topic_filter
status: verified
verifies: REQ_INTEROP_088

Test GetSnapshots with specific topic filter.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py (Test: test_19_snapshot_with_topic_filter)

Test Case: test_20_component_topic_data_structure TEST_test_20_component_topic_data_structure
status: verified
verifies: REQ_INTEROP_019

Test GET /components/{component_id}/data/{topic_name} response structure. Uses synthetic ‘powertrain’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_20_component_topic_data_structure)

Test Case: test_20_snapshot_config_loads_patterns TEST_test_20_snapshot_config_loads_patterns
status: verified
verifies: REQ_INTEROP_088

Test that pattern-based config is loaded correctly.

Implementation: src/ros2_medkit_fault_manager/test/test_integration.test.py (Test: test_20_snapshot_config_loads_patterns)

Test Case: test_21_component_nonexistent_topic_metadata_only TEST_test_21_component_nonexistent_topic_metadata_only
status: verified
verifies: REQ_INTEROP_019

Test nonexistent topic returns 200 with metadata_only status. Test GET /components/{component_id}/data/{topic_name} returns 200 with metadata_only status for nonexistent topics. The gateway returns metadata about the topic even if no data is available. This allows discovery of topic availability without errors. Uses synthetic ‘powertrain’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_21_component_nonexistent_topic_metadata_only)

Test Case: test_22_component_topic_nonexistent_component_error TEST_test_22_component_topic_nonexistent_component_error
status: verified
verifies: REQ_INTEROP_019

Test GET endpoint returns 404 for nonexistent component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_22_component_topic_nonexistent_component_error)

Test Case: test_23_component_topic_with_slashes TEST_test_23_component_topic_with_slashes
status: verified
verifies: REQ_INTEROP_019

Test GET with percent-encoded slashes in topic path. Uses synthetic ‘powertrain’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_23_component_topic_with_slashes)

Test Case: test_24_component_topic_valid_names TEST_test_24_component_topic_valid_names
status: verified
verifies: REQ_INTEROP_019

Test that valid topic names work correctly. Uses synthetic ‘powertrain’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_24_component_topic_valid_names)

Test Case: test_25_publish_brake_command TEST_test_25_publish_brake_command
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} publishes data. Uses synthetic ‘chassis’ component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_25_publish_brake_command)

Test Case: test_26_publish_validation_missing_type TEST_test_26_publish_validation_missing_type
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} returns 400 when type missing.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_26_publish_validation_missing_type)

Test Case: test_27_publish_validation_missing_data TEST_test_27_publish_validation_missing_data
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} returns 400 when data missing.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_27_publish_validation_missing_data)

Test Case: test_28_publish_validation_invalid_type_format TEST_test_28_publish_validation_invalid_type_format
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} returns 400 for invalid type.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_28_publish_validation_invalid_type_format)

Test Case: test_29_publish_nonexistent_component TEST_test_29_publish_nonexistent_component
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} returns 404 for unknown component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_29_publish_nonexistent_component)

Test Case: test_30_publish_invalid_json_body TEST_test_30_publish_invalid_json_body
status: verified
verifies: REQ_INTEROP_020

Test PUT /components/{component_id}/data/{topic_name} returns 400 for invalid JSON.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_30_publish_invalid_json_body)

Test Case: test_31_operation_call_calibrate_service TEST_test_31_operation_call_calibrate_service
status: verified
verifies: REQ_INTEROP_035

Test POST /apps/{app_id}/operations/{op}/executions calls a service. Operations are exposed on Apps (ROS 2 nodes), not synthetic Components.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_31_operation_call_calibrate_service)

Test Case: test_32_operation_call_nonexistent_operation TEST_test_32_operation_call_nonexistent_operation
status: verified
verifies: REQ_INTEROP_035

Test operation call returns 404 for unknown operation. POST /apps/{app_id}/operations/{op}/executions

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_32_operation_call_nonexistent_operation)

Test Case: test_33_operation_call_nonexistent_entity TEST_test_33_operation_call_nonexistent_entity
status: verified
verifies: REQ_INTEROP_035

Test operation call returns 404 for unknown entity. POST /apps/{app_id}/operations/{op}/executions

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_33_operation_call_nonexistent_entity)

Test Case: test_34_operation_call_invalid_entity_id TEST_test_34_operation_call_invalid_entity_id
status: verified
verifies: REQ_INTEROP_035

Test operation call rejects invalid entity ID. POST /apps/{app_id}/operations/{op}/executions

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_34_operation_call_invalid_entity_id)

Test Case: test_35_operation_call_invalid_operation_name TEST_test_35_operation_call_invalid_operation_name
status: verified
verifies: REQ_INTEROP_021

Test operation call rejects invalid operation name. POST /apps/{app_id}/operations/{op}/executions

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_35_operation_call_invalid_operation_name)

Test Case: test_36_operation_call_with_invalid_json TEST_test_36_operation_call_with_invalid_json
status: verified
verifies: REQ_INTEROP_021

Test operation call returns 400 for invalid JSON body. POST /apps/{app_id}/operations/{op}/executions

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_36_operation_call_with_invalid_json)

Test Case: test_37_operations_listed_in_app_discovery TEST_test_37_operations_listed_in_app_discovery
status: verified
verifies: REQ_INTEROP_021

Test that operations (services) are available via app detail endpoint. Operations are exposed via /apps/{id} detail endpoint or /apps/{id}/operations, not in the list response (to keep listing lightweight).

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_37_operations_listed_in_app_discovery)

Test Case: test_38_root_endpoint_includes_operations TEST_test_38_root_endpoint_includes_operations
status: verified
verifies: REQ_INTEROP_021

Test that root endpoint lists operations endpoint and capability.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_38_root_endpoint_includes_operations)

Test Case: test_39_action_send_goal_and_get_id TEST_test_39_action_send_goal_and_get_id
status: verified
verifies: REQ_INTEROP_022

Test POST /apps/{app_id}/operations/{operation_id}/executions sends action goal. Sends a goal to the long_calibration action and verifies execution_id is returned.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_39_action_send_goal_and_get_id)

Test Case: test_40_action_status_endpoint TEST_test_40_action_status_endpoint
status: verified
verifies: REQ_INTEROP_022

Test GET /apps/{app_id}/operations/{operation_id}/executions/{exec_id} returns status.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_40_action_status_endpoint)

Test Case: test_41_action_status_after_completion TEST_test_41_action_status_after_completion
status: verified
verifies: REQ_INTEROP_022

Test that execution status is updated to completed after action finishes. The native status subscription updates goal status in real-time. After an action completes, polling the executions endpoint should show ‘completed’.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_41_action_status_after_completion)

Test Case: test_42_action_cancel_endpoint TEST_test_42_action_cancel_endpoint
status: verified
verifies: REQ_INTEROP_022

Test DELETE /apps/{app_id}/operations/{operation_id}/executions/{exec_id} cancels action.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_42_action_cancel_endpoint)

Test Case: test_43_action_listed_in_app_discovery TEST_test_43_action_listed_in_app_discovery
status: verified
verifies: REQ_INTEROP_022

Test that actions are listed in app detail/operations response. Note: The /apps list endpoint returns lightweight items without operations. Operations are available via /apps/{id} detail or /apps/{id}/operations.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_43_action_listed_in_app_discovery)

Test Case: test_44_list_executions_endpoint TEST_test_44_list_executions_endpoint
status: verified
verifies: REQ_INTEROP_022

Test GET /apps/{app_id}/operations/{operation_id}/executions lists all executions. Returns list of execution IDs for the operation.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_44_list_executions_endpoint)

Test Case: test_45_list_configurations TEST_test_45_list_configurations
status: verified
verifies: REQ_INTEROP_048

Test GET /apps/{app_id}/configurations lists all parameters.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_45_list_configurations)

Test Case: test_46_get_configuration TEST_test_46_get_configuration
status: verified
verifies: REQ_INTEROP_049

Test GET /apps/{app_id}/configurations/{param_name} gets parameter.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_46_get_configuration)

Test Case: test_47_set_configuration TEST_test_47_set_configuration
status: verified
verifies: REQ_INTEROP_050

Test PUT /apps/{app_id}/configurations/{param_name} sets parameter.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_47_set_configuration)

Test Case: test_48_delete_configuration_resets_to_default TEST_test_48_delete_configuration_resets_to_default
status: verified
verifies: REQ_INTEROP_052

Test DELETE /apps/{app_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: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_48_delete_configuration_resets_to_default)

Test Case: test_49_configurations_nonexistent_app TEST_test_49_configurations_nonexistent_app
status: verified
verifies: REQ_INTEROP_048

Test GET /apps/{app_id}/configurations returns 404 for unknown app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_49_configurations_nonexistent_app)

Test Case: test_50_configuration_nonexistent_parameter TEST_test_50_configuration_nonexistent_parameter
status: verified
verifies: REQ_INTEROP_049

Test GET configurations/{param_name} returns 404 for unknown param.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_50_configuration_nonexistent_parameter)

Test Case: test_51_set_configuration_missing_value TEST_test_51_set_configuration_missing_value
status: verified
verifies: REQ_INTEROP_050

Test PUT configurations/{param_name} returns 400 when value missing.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_51_set_configuration_missing_value)

Test Case: test_52_root_endpoint_includes_configurations TEST_test_52_root_endpoint_includes_configurations
status: verified
verifies: REQ_INTEROP_048

Test that root endpoint lists configurations endpoints and capability.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_52_root_endpoint_includes_configurations)

Test Case: test_55_root_endpoint_includes_faults TEST_test_55_root_endpoint_includes_faults
status: verified
verifies: REQ_INTEROP_012

Test that root endpoint lists faults endpoints and capability.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_55_root_endpoint_includes_faults)

Test Case: test_56_list_faults_response_structure TEST_test_56_list_faults_response_structure
status: verified
verifies: REQ_INTEROP_012

Test GET /apps/{app_id}/faults returns valid response structure. In the heuristic discovery model, ROS nodes are Apps. This test uses temp_sensor which is an App (ROS node).

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_56_list_faults_response_structure)

Test Case: test_57_faults_nonexistent_component TEST_test_57_faults_nonexistent_component
status: verified
verifies: REQ_INTEROP_012

Test GET /components/{component_id}/faults returns 404 for unknown entity.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_57_faults_nonexistent_component)

Test Case: test_58_get_nonexistent_fault TEST_test_58_get_nonexistent_fault
status: verified
verifies: REQ_INTEROP_013

Test GET /apps/{app_id}/faults/{fault_code} returns 404.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_58_get_nonexistent_fault)

Test Case: test_65_root_endpoint_includes_snapshots TEST_test_65_root_endpoint_includes_snapshots
status: verified
verifies: REQ_INTEROP_088

Test that root endpoint lists snapshots endpoints.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_65_root_endpoint_includes_snapshots)

Test Case: test_70_components_list_has_href TEST_test_70_components_list_has_href
status: verified
verifies: REQ_INTEROP_003

Test GET /components returns items with href field. Each entity in a list response MUST have an href field pointing to its detail endpoint.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_70_components_list_has_href)

Test Case: test_71_apps_list_has_href TEST_test_71_apps_list_has_href
status: verified
verifies: REQ_INTEROP_003

Test GET /apps returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_71_apps_list_has_href)

Test Case: test_72_areas_list_has_href TEST_test_72_areas_list_has_href
status: verified
verifies: REQ_INTEROP_003

Test GET /areas returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_72_areas_list_has_href)

Test Case: test_73_component_detail_has_capability_uris TEST_test_73_component_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

Test GET /components/{id} returns capability URIs at top level. SOVD requires entity details to have flat capability URIs.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_73_component_detail_has_capability_uris)

Test Case: test_74_app_detail_has_capability_uris TEST_test_74_app_detail_has_capability_uris
status: verified
verifies: REQ_INTEROP_003

Test GET /apps/{id} returns capability URIs at top level.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_74_app_detail_has_capability_uris)

Test Case: test_75_subareas_list_has_href TEST_test_75_subareas_list_has_href
status: verified
verifies: REQ_INTEROP_004

Test GET /areas/{id}/subareas returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_75_subareas_list_has_href)

Test Case: test_76_subcomponents_list_has_href TEST_test_76_subcomponents_list_has_href
status: verified
verifies: REQ_INTEROP_005

Test GET /components/{id}/subcomponents returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_76_subcomponents_list_has_href)

Test Case: test_77b_contains_list_has_href TEST_test_77b_contains_list_has_href
status: verified
verifies: REQ_INTEROP_006

Test GET /areas/{id}/contains returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_77b_contains_list_has_href)

Test Case: test_77c_hosts_list_has_href TEST_test_77c_hosts_list_has_href
status: verified
verifies: REQ_INTEROP_007

Test GET /components/{id}/hosts returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_77c_hosts_list_has_href)

Test Case: test_78_depends_on_components_has_href TEST_test_78_depends_on_components_has_href
status: verified
verifies: REQ_INTEROP_008

Test GET /components/{id}/depends-on returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_78_depends_on_components_has_href)

Test Case: test_79_depends_on_apps_has_href TEST_test_79_depends_on_apps_has_href
status: verified
verifies: REQ_INTEROP_009

Test GET /apps/{id}/depends-on returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_79_depends_on_apps_has_href)

Test Case: test_80_depends_on_apps_nonexistent TEST_test_80_depends_on_apps_nonexistent
status: verified
verifies: REQ_INTEROP_009

Test GET /apps/{id}/depends-on returns 404 for unknown app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_80_depends_on_apps_nonexistent)

Test Case: test_81_functions_list_has_href TEST_test_81_functions_list_has_href
status: verified
verifies: REQ_INTEROP_003

Test GET /functions returns items with href field.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_81_functions_list_has_href)

Test Case: test_82_root_endpoint_has_apps_endpoints TEST_test_82_root_endpoint_has_apps_endpoints
status: verified
verifies: REQ_INTEROP_010

Test that root endpoint lists apps endpoints including depends-on.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_82_root_endpoint_has_apps_endpoints)

Test Case: test_83_x_medkit_extension_in_list_responses TEST_test_83_x_medkit_extension_in_list_responses
status: verified
verifies: REQ_INTEROP_003

Test that list responses have x-medkit at item and response level. ROS2-specific data should be in x-medkit extension, not at top level.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_83_x_medkit_extension_in_list_responses)

Test Case: test_84_get_operation_details_for_service TEST_test_84_get_operation_details_for_service
status: verified
verifies: REQ_INTEROP_034

Test GET /{entity}/operations/{op-id} returns operation details for service.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_84_get_operation_details_for_service)

Test Case: test_85_get_operation_details_for_action TEST_test_85_get_operation_details_for_action
status: verified
verifies: REQ_INTEROP_034

Test GET /{entity}/operations/{op-id} returns operation details for action.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_85_get_operation_details_for_action)

Test Case: test_86_get_operation_not_found TEST_test_86_get_operation_not_found
status: verified
verifies: REQ_INTEROP_034

Test GET /{entity}/operations/{op-id} returns 404 for nonexistent operation.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_86_get_operation_not_found)

Test Case: test_87_list_executions_returns_items_array TEST_test_87_list_executions_returns_items_array
status: verified
verifies: REQ_INTEROP_036

Test GET /{entity}/operations/{op-id}/executions returns items array.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_87_list_executions_returns_items_array)

Test Case: test_88_create_execution_for_service TEST_test_88_create_execution_for_service
status: verified
verifies: REQ_INTEROP_035

Test POST /{entity}/operations/{op-id}/executions calls service and returns.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_88_create_execution_for_service)

Test Case: test_89_cancel_nonexistent_execution TEST_test_89_cancel_nonexistent_execution
status: verified
verifies: REQ_INTEROP_039

Test DELETE /{entity}/operations/{op-id}/executions/{exec-id} returns 404.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_89_cancel_nonexistent_execution)

Test Case: test_90_delete_all_faults_for_component TEST_test_90_delete_all_faults_for_component
status: verified
verifies: REQ_INTEROP_014

Test DELETE /components/{id}/faults clears all faults for component.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_90_delete_all_faults_for_component)

Test Case: test_91_delete_all_faults_for_app TEST_test_91_delete_all_faults_for_app
status: verified
verifies: REQ_INTEROP_014

Test DELETE /apps/{id}/faults clears all faults for app.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_91_delete_all_faults_for_app)

Test Case: test_92_delete_all_faults_nonexistent_entity TEST_test_92_delete_all_faults_nonexistent_entity
status: verified
verifies: REQ_INTEROP_014

Test DELETE /{entity}/faults returns 404 for nonexistent entity.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_92_delete_all_faults_nonexistent_entity)

Test Case: test_93_get_operation_details_for_apps TEST_test_93_get_operation_details_for_apps
status: verified
verifies: REQ_INTEROP_034

Test GET /apps/{id}/operations/{op-id} works for apps.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_93_get_operation_details_for_apps)

Test Case: test_95_delete_single_fault TEST_test_95_delete_single_fault
status: verified
verifies: REQ_INTEROP_015

Test DELETE /apps/{id}/faults/{code} clears a specific fault. Uses lidar_sensor which has deterministic faults due to invalid parameters. The LIDAR_RANGE_INVALID fault is triggered because min_range > max_range. Note: The fault may be immediately re-reported by the sensor after deletion, so we only verify the DELETE returns 204 (success) or 404 (not found).

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_95_delete_single_fault)

Test Case: test_98_write_data_to_topic TEST_test_98_write_data_to_topic
status: verified
verifies: REQ_INTEROP_020

Test PUT /apps/{id}/data/{data-id} publishes data to topic. Uses the brake actuator which subscribes to /chassis/brakes/command. This is a deterministic writable topic for testing data writes.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_98_write_data_to_topic)

Test Case: test_99_list_operations TEST_test_99_list_operations
status: verified
verifies: REQ_INTEROP_033

Test GET /apps/{id}/operations returns operations list.

Implementation: src/ros2_medkit_gateway/test/test_integration.test.py (Test: test_99_list_operations)

Test Case: test_app_configurations_endpoint TEST_test_app_configurations_endpoint
status: verified
verifies: REQ_INTEROP_003

Test GET /apps/{id}/configurations in manifest-only mode. App is defined in manifest with bound_fqn. Configurations are retrieved from the ROS 2 parameter service on the node. When the node is running, returns 200 with the list of parameters.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_app_configurations_endpoint)

Test Case: test_app_data_item_endpoint TEST_test_app_data_item_endpoint
status: verified
verifies: REQ_INTEROP_003

Test GET /apps/{id}/data/{data_id} returns sampled topic data.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_app_data_item_endpoint)

Test Case: test_app_depends_on_relationship TEST_test_app_depends_on_relationship
status: verified
verifies: REQ_INTEROP_009

Test app depends_on creates dependency link.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_app_depends_on_relationship)

Test Case: test_app_online_with_runtime_node TEST_test_app_online_with_runtime_node
status: verified
verifies: REQ_INTEROP_003

Test apps linked to running nodes have is_online=true.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_app_online_with_runtime_node)

Test Case: test_apps_from_manifest TEST_test_apps_from_manifest
status: verified
verifies: REQ_INTEROP_003

Test apps are loaded from manifest.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_apps_from_manifest)

Test Case: test_area_components TEST_test_area_components
status: verified
verifies: REQ_INTEROP_006

Test GET /areas/{id}/components returns components in area.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_area_components)

Test Case: test_area_contains_nonexistent TEST_test_area_contains_nonexistent
status: verified
verifies: REQ_INTEROP_006

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_area_contains_nonexistent)

Test Case: test_area_subareas TEST_test_area_subareas
status: verified
verifies: REQ_INTEROP_004

Test GET /areas/{id}/subareas returns nested areas.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_area_subareas)

Test Case: test_area_subareas_hierarchy TEST_test_area_subareas_hierarchy
status: verified
verifies: REQ_INTEROP_004

Test subarea relationships from manifest.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_area_subareas_hierarchy)

Test Case: test_area_with_description TEST_test_area_with_description
status: verified
verifies: REQ_INTEROP_003

Test area descriptions from manifest are preserved.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_area_with_description)

Test Case: test_areas_from_manifest TEST_test_areas_from_manifest
status: verified
verifies: REQ_INTEROP_003

Test areas are loaded from manifest in hybrid mode.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_areas_from_manifest)

Test Case: test_component_area_relationship TEST_test_component_area_relationship
status: verified
verifies: REQ_INTEROP_006

Test component is associated with correct area.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_component_area_relationship)

Test Case: test_component_depends_on_empty TEST_test_component_depends_on_empty
status: verified
verifies: REQ_INTEROP_008

Test GET /components/{id}/depends-on returns empty list for component without deps.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_component_depends_on_empty)

Test Case: test_component_depends_on_not_found TEST_test_component_depends_on_not_found
status: verified
verifies: REQ_INTEROP_008

Test GET /components/{id}/depends-on returns 404 for unknown component.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_component_depends_on_not_found)

Test Case: test_component_depends_on_returns_items TEST_test_component_depends_on_returns_items
status: verified
verifies: REQ_INTEROP_008

Test GET /components/{id}/depends-on returns dependency references.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_component_depends_on_returns_items)

Test Case: test_component_hosts_nonexistent TEST_test_component_hosts_nonexistent
status: verified
verifies: REQ_INTEROP_007

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_component_hosts_nonexistent)

Test Case: test_component_subcomponents TEST_test_component_subcomponents
status: verified
verifies: REQ_INTEROP_005

Test GET /components/{id}/subcomponents returns subcomponents.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_component_subcomponents)

Test Case: test_component_subcomponents_not_found TEST_test_component_subcomponents_not_found
status: verified
verifies: REQ_INTEROP_005

Test GET /components/{id}/subcomponents returns 404 for unknown component.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_component_subcomponents_not_found)

Test Case: test_component_type_preserved TEST_test_component_type_preserved
status: verified
verifies: REQ_INTEROP_003

Test component type from manifest is preserved.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_component_type_preserved)

Test Case: test_components_from_manifest TEST_test_components_from_manifest
status: verified
verifies: REQ_INTEROP_003

Test components are loaded from manifest.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_components_from_manifest)

Test Case: test_function_hosts TEST_test_function_hosts
status: verified
verifies: REQ_INTEROP_007

Test GET /functions/{id}/hosts returns hosting apps.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_function_hosts)

Test Case: test_function_hosts_relationship TEST_test_function_hosts_relationship
status: verified
verifies: REQ_INTEROP_007

Test function hosts are correctly linked.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_function_hosts_relationship)

Test Case: test_function_with_tags TEST_test_function_with_tags
status: verified
verifies: REQ_INTEROP_011

Test function tags from manifest are preserved.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_function_with_tags)

Test Case: test_functions_from_manifest TEST_test_functions_from_manifest
status: verified
verifies: REQ_INTEROP_003

Test functions are loaded from manifest.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_functions_from_manifest)

Test Case: test_get_app_details TEST_test_get_app_details
status: verified
verifies: REQ_INTEROP_003

Test GET /apps/{id} returns app with capabilities.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_get_app_details)

Test Case: test_get_area_details TEST_test_get_area_details
status: verified
verifies: REQ_INTEROP_003

Test GET /areas/{id} returns area with capabilities.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_get_area_details)

Test Case: test_get_component_details TEST_test_get_component_details
status: verified
verifies: REQ_INTEROP_003

Test GET /components/{id} returns component with capabilities.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_get_component_details)

Test Case: test_get_function_details TEST_test_get_function_details
status: verified
verifies: REQ_INTEROP_003

Test GET /functions/{id} returns function with capabilities.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_get_function_details)

Test Case: test_hybrid_component_subcomponents TEST_test_hybrid_component_subcomponents
status: verified
verifies: REQ_INTEROP_005

Test GET /components/{id}/subcomponents returns subcomponents in hybrid mode.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_hybrid_component_subcomponents)

Test Case: test_hybrid_component_subcomponents_not_found TEST_test_hybrid_component_subcomponents_not_found
status: verified
verifies: REQ_INTEROP_005

Test GET /components/{id}/subcomponents returns 404 for unknown component in hybrid mode.

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_hybrid_component_subcomponents_not_found)

Test Case: test_list_apps TEST_test_list_apps
status: verified
verifies: REQ_INTEROP_003

Test GET /apps returns all manifest-defined apps.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_list_apps)

Test Case: test_list_areas TEST_test_list_areas
status: verified
verifies: REQ_INTEROP_003

Test GET /areas returns all manifest-defined areas.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_list_areas)

Test Case: test_list_areas_endpoint TEST_test_list_areas_endpoint
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_list_areas_endpoint)

Test Case: test_list_components TEST_test_list_components
status: verified
verifies: REQ_INTEROP_003

Test GET /components returns all manifest-defined components.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_list_components)

Test Case: test_list_components_endpoint TEST_test_list_components_endpoint
status: verified
verifies: REQ_INTEROP_003

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_list_components_endpoint)

Test Case: test_list_functions TEST_test_list_functions
status: verified
verifies: REQ_INTEROP_003

Test GET /functions returns all manifest-defined functions.

Implementation: src/ros2_medkit_gateway/test/test_discovery_manifest.test.py (Test: test_list_functions)

Test Case: test_nested_subareas TEST_test_nested_subareas
status: verified
verifies: REQ_INTEROP_004

Test deeply nested subareas (door -> front-left-door).

Implementation: src/ros2_medkit_gateway/test/test_discovery_hybrid.test.py (Test: test_nested_subareas)

Test Case: test_root_endpoint TEST_test_root_endpoint
status: verified
verifies: REQ_INTEROP_010

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_root_endpoint)

Test Case: test_version_info_endpoint TEST_test_version_info_endpoint
status: verified
verifies: REQ_INTEROP_001

Implementation: src/ros2_medkit_gateway/test/test_gateway_node.cpp (Test: test_version_info_endpoint)

ID

Title

Status

Verifies

TEST_test_01_root_endpoint

test_01_root_endpoint

verified

REQ_INTEROP_010

TEST_test_01b_version_info_endpoint

test_01b_version_info_endpoint

verified

REQ_INTEROP_001

TEST_test_01c_endpoint_smoke_test

test_01c_endpoint_smoke_test

verified

REQ_INTEROP_010

TEST_test_02_list_areas

test_02_list_areas

verified

REQ_INTEROP_003

TEST_test_03_authenticate_valid_credentials

test_03_authenticate_valid_credentials

verified

REQ_INTEROP_086

TEST_test_03_list_components

test_03_list_components

verified

REQ_INTEROP_003

TEST_test_04_automotive_areas_discovery

test_04_automotive_areas_discovery

verified

REQ_INTEROP_003

TEST_test_05_area_components_success

test_05_area_components_success

verified

REQ_INTEROP_006

TEST_test_06_area_components_nonexistent_error

test_06_area_components_nonexistent_error

verified

REQ_INTEROP_006

TEST_test_06_authenticate_form_urlencoded

test_06_authenticate_form_urlencoded

verified

REQ_INTEROP_086

TEST_test_07_app_data_powertrain_engine

test_07_app_data_powertrain_engine

verified

REQ_INTEROP_018

TEST_test_07_refresh_token

test_07_refresh_token

verified

REQ_INTEROP_087

TEST_test_08_app_data_chassis_brakes

test_08_app_data_chassis_brakes

verified

REQ_INTEROP_018

TEST_test_09_app_data_body_door

test_09_app_data_body_door

verified

REQ_INTEROP_018

TEST_test_100_get_execution_status

test_100_get_execution_status

verified

REQ_INTEROP_037

TEST_test_101_update_execution

test_101_update_execution

verified

REQ_INTEROP_038

TEST_test_102_list_configurations

test_102_list_configurations

verified

REQ_INTEROP_048

TEST_test_103_get_configuration

test_103_get_configuration

verified

REQ_INTEROP_049

TEST_test_104_set_configuration

test_104_set_configuration

verified

REQ_INTEROP_050

TEST_test_105_reset_all_configurations

test_105_reset_all_configurations

verified

REQ_INTEROP_051

TEST_test_106_reset_single_configuration

test_106_reset_single_configuration

verified

REQ_INTEROP_052

TEST_test_109_list_area_data

test_109_list_area_data

verified

REQ_INTEROP_018

TEST_test_10_app_data_structure

test_10_app_data_structure

verified

REQ_INTEROP_018

TEST_test_110_list_area_data_nonexistent

test_110_list_area_data_nonexistent

verified

REQ_INTEROP_018

TEST_test_111_list_area_data_root

test_111_list_area_data_root

verified

REQ_INTEROP_018

TEST_test_112_list_area_data_empty

test_112_list_area_data_empty

verified

REQ_INTEROP_018

TEST_test_113_list_function_data

test_113_list_function_data

verified

REQ_INTEROP_018

TEST_test_114_list_function_data_nonexistent

test_114_list_function_data_nonexistent

verified

REQ_INTEROP_018

TEST_test_115_list_function_data_invalid_id

test_115_list_function_data_invalid_id

verified

REQ_INTEROP_018

TEST_test_116_component_route_rejects_app_id

test_116_component_route_rejects_app_id

verified

REQ_INTEROP_003

TEST_test_117_component_route_rejects_app_id_operations

test_117_component_route_rejects_app_id_operations

verified

REQ_INTEROP_003

TEST_test_118_component_route_rejects_app_id_configurations

test_118_component_route_rejects_app_id_configurations

verified

REQ_INTEROP_003

TEST_test_119_component_route_rejects_app_id_faults

test_119_component_route_rejects_app_id_faults

verified

REQ_INTEROP_003

TEST_test_11_app_nonexistent_error

test_11_app_nonexistent_error

verified

REQ_INTEROP_018

TEST_test_120_app_routes_work_with_app_id

test_120_app_routes_work_with_app_id

verified

REQ_INTEROP_003

TEST_test_121_bulk_data_list_categories_success

test_121_bulk_data_list_categories_success

verified

REQ_INTEROP_071

TEST_test_122_bulk_data_list_categories_all_entity_types

test_122_bulk_data_list_categories_all_entity_types

verified

REQ_INTEROP_071

TEST_test_123_bulk_data_list_categories_entity_not_found

test_123_bulk_data_list_categories_entity_not_found

verified

REQ_INTEROP_071

TEST_test_124_bulk_data_list_descriptors_structure

test_124_bulk_data_list_descriptors_structure

verified

REQ_INTEROP_072

TEST_test_125_bulk_data_list_descriptors_empty_result

test_125_bulk_data_list_descriptors_empty_result

verified

REQ_INTEROP_072

TEST_test_126_bulk_data_unknown_category_returns_404

test_126_bulk_data_unknown_category_returns_404

verified

REQ_INTEROP_072

TEST_test_127_bulk_data_download_success

test_127_bulk_data_download_success

verified

REQ_INTEROP_073

TEST_test_128_bulk_data_download_not_found

test_128_bulk_data_download_not_found

verified

REQ_INTEROP_073

TEST_test_129_bulk_data_download_wrong_entity_returns_404

test_129_bulk_data_download_wrong_entity_returns_404

verified

REQ_INTEROP_073

TEST_test_12_app_no_topics

test_12_app_no_topics

verified

REQ_INTEROP_018

TEST_test_130_bulk_data_nested_entity_path

test_130_bulk_data_nested_entity_path

verified

REQ_INTEROP_071

TEST_test_131_fault_response_structure

test_131_fault_response_structure

verified

REQ_INTEROP_013

TEST_test_132_fault_status_object_structure

test_132_fault_status_object_structure

verified

REQ_INTEROP_013

TEST_test_133_fault_environment_data_structure

test_133_fault_environment_data_structure

verified

REQ_INTEROP_013

TEST_test_134_fault_snapshot_freeze_frame_structure

test_134_fault_snapshot_freeze_frame_structure

verified

REQ_INTEROP_013

TEST_test_135_fault_snapshot_rosbag_has_bulk_data_uri

test_135_fault_snapshot_rosbag_has_bulk_data_uri

verified

REQ_INTEROP_013

TEST_test_136_fault_x_medkit_extensions

test_136_fault_x_medkit_extensions

verified

REQ_INTEROP_013

TEST_test_137_bulk_data_download_verifies_complete_rosbag

test_137_bulk_data_download_verifies_complete_rosbag

verified

REQ_INTEROP_073

TEST_test_13_invalid_app_id_special_chars

test_13_invalid_app_id_special_chars

verified

REQ_INTEROP_018

TEST_test_14_invalid_area_id_special_chars

test_14_invalid_area_id_special_chars

verified

REQ_INTEROP_006

TEST_test_15_valid_ids_with_underscores

test_15_valid_ids_with_underscores

verified

REQ_INTEROP_018

TEST_test_16_invalid_ids_with_special_chars

test_16_invalid_ids_with_special_chars

verified

REQ_INTEROP_018

TEST_test_16_snapshot_capture_on_fault_confirmation

test_16_snapshot_capture_on_fault_confirmation

verified

REQ_INTEROP_088

TEST_test_17_component_topic_temperature

test_17_component_topic_temperature

verified

REQ_INTEROP_019

TEST_test_17_get_snapshots_nonexistent_fault

test_17_get_snapshots_nonexistent_fault

verified

REQ_INTEROP_088

TEST_test_18_component_topic_rpm

test_18_component_topic_rpm

verified

REQ_INTEROP_019

TEST_test_18_get_snapshots_empty_fault_code

test_18_get_snapshots_empty_fault_code

verified

REQ_INTEROP_088

TEST_test_19_component_topic_pressure

test_19_component_topic_pressure

verified

REQ_INTEROP_019

TEST_test_19_snapshot_with_topic_filter

test_19_snapshot_with_topic_filter

verified

REQ_INTEROP_088

TEST_test_20_component_topic_data_structure

test_20_component_topic_data_structure

verified

REQ_INTEROP_019

TEST_test_20_snapshot_config_loads_patterns

test_20_snapshot_config_loads_patterns

verified

REQ_INTEROP_088

TEST_test_21_component_nonexistent_topic_metadata_only

test_21_component_nonexistent_topic_metadata_only

verified

REQ_INTEROP_019

TEST_test_22_component_topic_nonexistent_component_error

test_22_component_topic_nonexistent_component_error

verified

REQ_INTEROP_019

TEST_test_23_component_topic_with_slashes

test_23_component_topic_with_slashes

verified

REQ_INTEROP_019

TEST_test_24_component_topic_valid_names

test_24_component_topic_valid_names

verified

REQ_INTEROP_019

TEST_test_25_publish_brake_command

test_25_publish_brake_command

verified

REQ_INTEROP_020

TEST_test_26_publish_validation_missing_type

test_26_publish_validation_missing_type

verified

REQ_INTEROP_020

TEST_test_27_publish_validation_missing_data

test_27_publish_validation_missing_data

verified

REQ_INTEROP_020

TEST_test_28_publish_validation_invalid_type_format

test_28_publish_validation_invalid_type_format

verified

REQ_INTEROP_020

TEST_test_29_publish_nonexistent_component

test_29_publish_nonexistent_component

verified

REQ_INTEROP_020

TEST_test_30_publish_invalid_json_body

test_30_publish_invalid_json_body

verified

REQ_INTEROP_020

TEST_test_31_operation_call_calibrate_service

test_31_operation_call_calibrate_service

verified

REQ_INTEROP_035

TEST_test_32_operation_call_nonexistent_operation

test_32_operation_call_nonexistent_operation

verified

REQ_INTEROP_035

TEST_test_33_operation_call_nonexistent_entity

test_33_operation_call_nonexistent_entity

verified

REQ_INTEROP_035

TEST_test_34_operation_call_invalid_entity_id

test_34_operation_call_invalid_entity_id

verified

REQ_INTEROP_035

TEST_test_35_operation_call_invalid_operation_name

test_35_operation_call_invalid_operation_name

verified

REQ_INTEROP_021

TEST_test_36_operation_call_with_invalid_json

test_36_operation_call_with_invalid_json

verified

REQ_INTEROP_021

TEST_test_37_operations_listed_in_app_discovery

test_37_operations_listed_in_app_discovery

verified

REQ_INTEROP_021

TEST_test_38_root_endpoint_includes_operations

test_38_root_endpoint_includes_operations

verified

REQ_INTEROP_021

TEST_test_39_action_send_goal_and_get_id

test_39_action_send_goal_and_get_id

verified

REQ_INTEROP_022

TEST_test_40_action_status_endpoint

test_40_action_status_endpoint

verified

REQ_INTEROP_022

TEST_test_41_action_status_after_completion

test_41_action_status_after_completion

verified

REQ_INTEROP_022

TEST_test_42_action_cancel_endpoint

test_42_action_cancel_endpoint

verified

REQ_INTEROP_022

TEST_test_43_action_listed_in_app_discovery

test_43_action_listed_in_app_discovery

verified

REQ_INTEROP_022

TEST_test_44_list_executions_endpoint

test_44_list_executions_endpoint

verified

REQ_INTEROP_022

TEST_test_45_list_configurations

test_45_list_configurations

verified

REQ_INTEROP_048

TEST_test_46_get_configuration

test_46_get_configuration

verified

REQ_INTEROP_049

TEST_test_47_set_configuration

test_47_set_configuration

verified

REQ_INTEROP_050

TEST_test_48_delete_configuration_resets_to_default

test_48_delete_configuration_resets_to_default

verified

REQ_INTEROP_052

TEST_test_49_configurations_nonexistent_app

test_49_configurations_nonexistent_app

verified

REQ_INTEROP_048

TEST_test_50_configuration_nonexistent_parameter

test_50_configuration_nonexistent_parameter

verified

REQ_INTEROP_049

TEST_test_51_set_configuration_missing_value

test_51_set_configuration_missing_value

verified

REQ_INTEROP_050

TEST_test_52_root_endpoint_includes_configurations

test_52_root_endpoint_includes_configurations

verified

REQ_INTEROP_048

TEST_test_55_root_endpoint_includes_faults

test_55_root_endpoint_includes_faults

verified

REQ_INTEROP_012

TEST_test_56_list_faults_response_structure

test_56_list_faults_response_structure

verified

REQ_INTEROP_012

TEST_test_57_faults_nonexistent_component

test_57_faults_nonexistent_component

verified

REQ_INTEROP_012

TEST_test_58_get_nonexistent_fault

test_58_get_nonexistent_fault

verified

REQ_INTEROP_013

TEST_test_65_root_endpoint_includes_snapshots

test_65_root_endpoint_includes_snapshots

verified

REQ_INTEROP_088

TEST_test_70_components_list_has_href

test_70_components_list_has_href

verified

REQ_INTEROP_003

TEST_test_71_apps_list_has_href

test_71_apps_list_has_href

verified

REQ_INTEROP_003

TEST_test_72_areas_list_has_href

test_72_areas_list_has_href

verified

REQ_INTEROP_003

TEST_test_73_component_detail_has_capability_uris

test_73_component_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_test_74_app_detail_has_capability_uris

test_74_app_detail_has_capability_uris

verified

REQ_INTEROP_003

TEST_test_75_subareas_list_has_href

test_75_subareas_list_has_href

verified

REQ_INTEROP_004

TEST_test_76_subcomponents_list_has_href

test_76_subcomponents_list_has_href

verified

REQ_INTEROP_005

TEST_test_77b_contains_list_has_href

test_77b_contains_list_has_href

verified

REQ_INTEROP_006

TEST_test_77c_hosts_list_has_href

test_77c_hosts_list_has_href

verified

REQ_INTEROP_007

TEST_test_78_depends_on_components_has_href

test_78_depends_on_components_has_href

verified

REQ_INTEROP_008

TEST_test_79_depends_on_apps_has_href

test_79_depends_on_apps_has_href

verified

REQ_INTEROP_009

TEST_test_80_depends_on_apps_nonexistent

test_80_depends_on_apps_nonexistent

verified

REQ_INTEROP_009

TEST_test_81_functions_list_has_href

test_81_functions_list_has_href

verified

REQ_INTEROP_003

TEST_test_82_root_endpoint_has_apps_endpoints

test_82_root_endpoint_has_apps_endpoints

verified

REQ_INTEROP_010

TEST_test_83_x_medkit_extension_in_list_responses

test_83_x_medkit_extension_in_list_responses

verified

REQ_INTEROP_003

TEST_test_84_get_operation_details_for_service

test_84_get_operation_details_for_service

verified

REQ_INTEROP_034

TEST_test_85_get_operation_details_for_action

test_85_get_operation_details_for_action

verified

REQ_INTEROP_034

TEST_test_86_get_operation_not_found

test_86_get_operation_not_found

verified

REQ_INTEROP_034

TEST_test_87_list_executions_returns_items_array

test_87_list_executions_returns_items_array

verified

REQ_INTEROP_036

TEST_test_88_create_execution_for_service

test_88_create_execution_for_service

verified

REQ_INTEROP_035

TEST_test_89_cancel_nonexistent_execution

test_89_cancel_nonexistent_execution

verified

REQ_INTEROP_039

TEST_test_90_delete_all_faults_for_component

test_90_delete_all_faults_for_component

verified

REQ_INTEROP_014

TEST_test_91_delete_all_faults_for_app

test_91_delete_all_faults_for_app

verified

REQ_INTEROP_014

TEST_test_92_delete_all_faults_nonexistent_entity

test_92_delete_all_faults_nonexistent_entity

verified

REQ_INTEROP_014

TEST_test_93_get_operation_details_for_apps

test_93_get_operation_details_for_apps

verified

REQ_INTEROP_034

TEST_test_95_delete_single_fault

test_95_delete_single_fault

verified

REQ_INTEROP_015

TEST_test_98_write_data_to_topic

test_98_write_data_to_topic

verified

REQ_INTEROP_020

TEST_test_99_list_operations

test_99_list_operations

verified

REQ_INTEROP_033

TEST_test_app_configurations_endpoint

test_app_configurations_endpoint

verified

REQ_INTEROP_003

TEST_test_app_data_item_endpoint

test_app_data_item_endpoint

verified

REQ_INTEROP_003

TEST_test_app_depends_on_relationship

test_app_depends_on_relationship

verified

REQ_INTEROP_009

TEST_test_app_online_with_runtime_node

test_app_online_with_runtime_node

verified

REQ_INTEROP_003

TEST_test_apps_from_manifest

test_apps_from_manifest

verified

REQ_INTEROP_003

TEST_test_area_components

test_area_components

verified

REQ_INTEROP_006

TEST_test_area_contains_nonexistent

test_area_contains_nonexistent

verified

REQ_INTEROP_006

TEST_test_area_subareas

test_area_subareas

verified

REQ_INTEROP_004

TEST_test_area_subareas_hierarchy

test_area_subareas_hierarchy

verified

REQ_INTEROP_004

TEST_test_area_with_description

test_area_with_description

verified

REQ_INTEROP_003

TEST_test_areas_from_manifest

test_areas_from_manifest

verified

REQ_INTEROP_003

TEST_test_component_area_relationship

test_component_area_relationship

verified

REQ_INTEROP_006

TEST_test_component_capabilities_includes_depends_on_link

test_component_capabilities_includes_depends_on_link

verified

REQ_INTEROP_008

TEST_test_component_depends_on_empty

test_component_depends_on_empty

verified

REQ_INTEROP_008

TEST_test_component_depends_on_not_found

test_component_depends_on_not_found

verified

REQ_INTEROP_008

TEST_test_component_depends_on_returns_items

test_component_depends_on_returns_items

verified

REQ_INTEROP_008

TEST_test_component_hosts_nonexistent

test_component_hosts_nonexistent

verified

REQ_INTEROP_007

TEST_test_component_subcomponents

test_component_subcomponents

verified

REQ_INTEROP_005

TEST_test_component_subcomponents_not_found

test_component_subcomponents_not_found

verified

REQ_INTEROP_005

TEST_test_component_type_preserved

test_component_type_preserved

verified

REQ_INTEROP_003

TEST_test_components_from_manifest

test_components_from_manifest

verified

REQ_INTEROP_003

TEST_test_function_hosts

test_function_hosts

verified

REQ_INTEROP_007

TEST_test_function_hosts_relationship

test_function_hosts_relationship

verified

REQ_INTEROP_007

TEST_test_function_with_tags

test_function_with_tags

verified

REQ_INTEROP_011

TEST_test_functions_from_manifest

test_functions_from_manifest

verified

REQ_INTEROP_003

TEST_test_get_app_details

test_get_app_details

verified

REQ_INTEROP_003

TEST_test_get_area_details

test_get_area_details

verified

REQ_INTEROP_003

TEST_test_get_component_details

test_get_component_details

verified

REQ_INTEROP_003

TEST_test_get_function_details

test_get_function_details

verified

REQ_INTEROP_003

TEST_test_hybrid_component_subcomponents

test_hybrid_component_subcomponents

verified

REQ_INTEROP_005

TEST_test_hybrid_component_subcomponents_not_found

test_hybrid_component_subcomponents_not_found

verified

REQ_INTEROP_005

TEST_test_list_apps

test_list_apps

verified

REQ_INTEROP_003

TEST_test_list_areas

test_list_areas

verified

REQ_INTEROP_003

TEST_test_list_areas_endpoint

test_list_areas_endpoint

verified

REQ_INTEROP_003

TEST_test_list_components

test_list_components

verified

REQ_INTEROP_003

TEST_test_list_components_endpoint

test_list_components_endpoint

verified

REQ_INTEROP_003

TEST_test_list_functions

test_list_functions

verified

REQ_INTEROP_003

TEST_test_nested_subareas

test_nested_subareas

verified

REQ_INTEROP_004

TEST_test_root_endpoint

test_root_endpoint

verified

REQ_INTEROP_010

TEST_test_version_info_endpoint

test_version_info_endpoint

verified

REQ_INTEROP_001