Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Conformance tests

Every test that carries a // conformance: marker, under each point and track the marker names, grouped by file. A file marked (e2e) runs in the e2e harness, with FERROFED_E2E=1, against the node products the conformance statement names. A point or track with no marked test is not listed.

CP-1

9 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/track1.rs (e2e): an_unmodified_client_gets_one_single_cdr_shaped_result_set
  • app/ferrofed-server/tests/it/facade/query.rs: a_patient_query_is_one_result_set_over_both_nodes
  • app/ferrofed-server/tests/it/query_get.rs: a_client_ehr_id_in_the_query_string_is_dropped, a_malformed_query_string_is_a_400_body_invalid_that_asks_nobody, a_malformed_stored_get_query_string_is_a_400_body_invalid_that_asks_nobody, a_stored_get_reads_a_q_key_as_a_query_parameter, a_stored_query_runs_by_get_with_and_without_a_version, get_and_post_send_every_node_the_same_request_and_answer_the_same

CP-2

4 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/track1.rs (e2e): an_unmodified_client_gets_one_single_cdr_shaped_result_set
  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): the_pix_manager_resolves_both_carriers_to_each_nodes_own_ehr_id
  • app/ferrofed-server/tests/it/facade/query.rs: a_patient_query_is_one_result_set_over_both_nodes

CP-38

5 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): both_patient_carriers_resolve_to_the_same_rows_over_two_cdr_nodes
  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): the_pix_manager_resolves_both_carriers_to_each_nodes_own_ehr_id
  • app/ferrofed-server/tests/it/outbound.rs: a_clinician_predicate_reaches_the_node_unchanged
  • crates/openehr-federation/tests/it/aql/entry.rs: both_carriers_rewrite_the_same_patient_query_to_the_same_node_query
  • crates/openehr-federation/tests/it/aql/guard.rs: a_clinician_or_facility_predicate_is_dispatched_unchanged

CP-3

13 tests.

  • app/ferrofed-identity/tests/it/pixm.rs: a_member_whose_domain_holds_nothing_does_not_know_the_patient, an_unknown_patient_is_unknown_at_every_member, one_call_resolves_the_patient_at_every_member_by_its_domain
  • app/ferrofed-server/tests/it/ask_all.rs: an_undirected_patient_query_over_three_members_dispatches_to_the_two_that_resolve
  • app/ferrofed-server/tests/it/e2e/pixm.rs (e2e): a_patient_fed_at_both_members_resolves_through_pix_at_both, a_pix_resolved_query_asks_only_the_member_that_knows_the_patient
  • app/ferrofed-server/tests/it/e2e/santempi.rs (e2e): a_patient_each_member_fed_to_santempi_is_answered_by_both
  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): the_pix_manager_resolves_both_carriers_to_each_nodes_own_ehr_id
  • app/ferrofed-server/tests/it/identity_grant.rs: the_manager_is_asked_with_a_token_the_grant_obtained_and_refreshed
  • app/ferrofed-server/tests/it/pdqm/flow.rs: an_iti_119_match_finds_the_master_identity_the_pix_manager_resolves, an_iti_78_search_finds_the_master_identity_the_pix_manager_resolves
  • app/ferrofed-server/tests/it/resolution.rs: one_pix_call_resolves_the_patient_and_both_members_answer, the_identifier_and_namespace_reach_the_pix_manager_and_no_node

CP-4

3 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): the_pix_manager_resolves_both_carriers_to_each_nodes_own_ehr_id
  • app/ferrofed-server/tests/it/facade/query.rs: a_patient_query_is_one_result_set_over_both_nodes

CP-5

49 tests.

  • app/ferrofed-engine/tests/it/fanout/localization.rs: a_localizer_failure_is_carried_in_meta_federation_and_on_every_endpoint, a_localizer_that_answered_leaves_no_localization_member
  • app/ferrofed-identity/tests/it/atna.rs: a_full_spool_fails_the_discovery_closed
  • app/ferrofed-identity/tests/it/nvi_directory.rs: the_directory_maps_each_custodian_to_its_members
  • app/ferrofed-identity/tests/it/nvi_localizer.rs: a_refusing_service_fails_the_localization_closed_with_its_status, a_silent_service_runs_out_the_budget, the_members_holding_the_returned_custodians_are_the_candidates
  • app/ferrofed-identity/tests/it/pixm_localizer.rs: a_manager_that_fails_leaves_the_localization_unavailable, a_patient_the_manager_does_not_know_has_no_records, the_candidates_are_the_members_whose_domain_holds_the_patient, the_resolution_of_the_same_query_reuses_the_localization_call
  • app/ferrofed-identity/tests/it/xcpd.rs: a_community_outside_the_federation_adds_no_member, a_discovery_whose_audit_is_not_stored_by_the_deadline_fails_closed_in_time, a_discovery_whose_audit_is_refused_fails_closed, a_silent_gateway_runs_out_the_budget, an_audit_failure_outranks_another_gateway_s_timeout, no_match_anywhere_is_no_records, one_failing_gateway_fails_the_whole_discovery_closed, the_communities_a_broadcast_names_are_the_candidates
  • app/ferrofed-server/tests/it/audit_repository.rs: a_full_spool_fails_the_query_closed_and_asks_no_member
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): an_undirected_query_asks_only_the_members_the_localizer_names
  • app/ferrofed-server/tests/it/localization.rs: a_directed_query_is_never_localized, a_localizer_silent_past_its_budget_fails_closed, a_localizer_that_finds_no_records_leaves_every_member_not_localized_without_error, a_localizer_that_is_down_fails_closed_dispatches_nothing_and_names_its_error, a_member_the_localizer_does_not_name_is_not_localized_and_never_asked, an_undirected_query_that_names_no_patient_is_refused_under_localization, ask_all_on_failure_asks_every_member_only_where_it_is_declared, the_development_cross_reference_localizes_to_the_members_that_know_the_patient, without_the_declaration_a_failed_localizer_is_never_widened_to_ask_all
  • app/ferrofed-server/tests/it/localizer_audit.rs: a_discovery_still_recording_its_audit_at_the_budget_fails_closed_under_ask_all
  • app/ferrofed-server/tests/it/localizer_surface.rs: a_localizer_outage_still_widens_under_a_declared_ask_all, a_subject_no_member_holds_by_localization_is_no_destination, a_targeted_read_by_subject_is_never_localized, an_unaudited_exchange_fails_closed_even_under_ask_all, an_unaudited_read_by_subject_fails_closed_even_under_ask_all, the_read_by_subject_asks_every_member_when_ask_all_is_declared, the_read_by_subject_asks_only_the_members_the_localizer_names, the_read_by_subject_fails_closed_when_the_localizer_does_not_answer
  • app/ferrofed-server/tests/it/nl_gf.rs: a_member_the_nvi_leaves_out_is_not_localized_and_complete_holds, an_nvi_that_does_not_answer_fails_the_query_closed, the_pseudonymised_walkthrough_runs_end_to_end_and_no_node_sees_the_pseudonym
  • app/ferrofed-server/tests/it/nvi_nuts.rs: a_refused_nuts_grant_fails_the_localization_closed, the_nvi_is_asked_with_the_dpop_bound_nuts_token
  • app/ferrofed-server/tests/it/pixm_localizer.rs: a_pix_manager_that_does_not_answer_fails_the_query_closed, the_members_whose_domain_holds_the_patient_are_asked_over_one_iti_83_call
  • app/ferrofed-server/tests/it/registry_mcsd/lrza.rs: the_custodians_come_from_the_directory_without_a_table
  • app/ferrofed-server/tests/it/xcpd.rs: a_failing_gateway_fails_the_query_closed_and_asks_no_member, the_communities_xcpd_discovers_select_the_members_asked

CP-6

20 tests.

  • app/ferrofed-server/tests/it/directive.rs: a_directed_aggregate_to_one_endpoint_reaches_it_unchanged, a_directed_subject_query_reports_unlisted_members_excluded_and_unknown_ones_not_resolved, a_selected_endpoint_attribute_is_added_to_the_rows_and_asked_of_no_node, an_endpoint_the_registry_does_not_know_is_refused_400_before_any_node_is_asked, no_node_receives_the_directive_and_each_receives_the_undirected_node_query, the_organisation_selector_asks_every_endpoint_the_organisation_manages
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): a_directive_selects_the_node_set_and_leaves_the_row_shape_alone, a_named_member_where_the_patient_does_not_resolve_is_reported_not_errored
  • app/ferrofed-server/tests/it/localization.rs: a_directed_query_is_never_localized
  • app/ferrofed-server/tests/it/localizer_surface.rs: a_targeted_read_by_subject_is_never_localized
  • app/ferrofed-server/tests/it/targeting.rs: a_header_and_a_directive_that_differ_are_refused_400_naming_both_sets, a_header_and_a_directive_that_select_the_same_set_proceed, the_endpoint_header_selects_the_node_set_as_the_directive_does
  • crates/openehr-federation/tests/it/aql/directive.rs: a_directed_aggregate_to_one_endpoint_is_dispatched_unchanged_and_to_two_is_refused, a_directed_patient_query_reaches_the_node_as_the_undirected_one_does, an_undefined_function_directed_to_one_endpoint_passes_and_to_two_is_refused, an_unscoped_query_selecting_only_endpoint_attributes_asks_each_node_one_ehr_column, the_directive_is_lifted_out_with_its_kind_and_identifiers_in_order, the_organisation_selector_never_reaches_a_node
  • crates/openehr-federation/tests/it/aql/golden.rs: golden_case_02_keeps_the_directive_and_its_projections_out_of_the_node_query

CP-7

2 tests.

  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): a_selected_subject_column_is_the_input_and_never_asked_of_a_node
  • app/ferrofed-server/tests/it/facade/query.rs: a_patient_query_is_one_result_set_over_both_nodes

CP-8

55 tests.

  • app/ferrofed-engine/tests/it/fanout/distinct.rs: a_cut_node_returning_one_value_twice_fails_the_query_424, a_row_two_nodes_return_takes_one_slot_of_the_limit
  • app/ferrofed-engine/tests/it/fanout/order.rs: interleaved_node_answers_merge_into_the_global_top_n
  • app/ferrofed-server/tests/it/distinct.rs: a_duplicate_straddling_the_page_edge_is_answered_once, without_distinct_the_duplicate_is_answered_twice
  • app/ferrofed-server/tests/it/e2e/track5.rs (e2e): duplicates_pass_through_by_default_and_distinct_folds_them_at_the_tier, order_by_and_limit_return_the_global_top_rows_deterministically
  • app/ferrofed-server/tests/it/endpoint_attributes.rs: under_distinct_a_shared_organisation_collapses_the_rows, under_distinct_an_endpoint_id_keeps_the_rows_of_two_endpoints_apart
  • app/ferrofed-server/tests/it/order.rs: a_distinct_function_of_an_unselected_path_under_a_limit_is_refused_400, a_distinct_function_of_selected_paths_returns_the_same_rows_on_every_repeat, a_distinct_whole_object_under_a_limit_is_refused_400, the_client_gets_the_global_top_n_without_the_hidden_column
  • crates/openehr-federation/tests/it/aql/comparable.rs: under_distinct_a_bounded_page_with_a_whole_rm_object_is_refused, under_distinct_a_limit_on_an_incomparable_order_by_key_is_refused, under_distinct_a_limit_with_a_collection_is_refused, under_distinct_a_limit_with_a_dv_text_is_refused, under_distinct_a_limit_with_a_path_the_rm_does_not_resolve_is_refused, under_distinct_a_limit_with_a_whole_rm_object_is_refused, under_distinct_a_limit_with_an_element_value_is_refused, under_distinct_a_limit_with_ordered_data_values_and_primitives_is_pinned, under_distinct_with_no_limit_an_incomparable_path_is_not_a_key
  • crates/openehr-federation/tests/it/aql/dedup.rs: under_distinct_a_selected_uid_is_the_dedup_key, under_distinct_an_unselected_uid_is_not_added
  • crates/openehr-federation/tests/it/aql/distinct.rs: a_re_injected_subject_column_is_not_compared, every_selected_column_of_an_unscoped_query_is_compared, the_column_kept_for_a_subject_only_query_is_not_compared
  • crates/openehr-federation/tests/it/aql/order.rs: under_distinct_a_bounded_page_with_an_unpinned_function_is_refused, under_distinct_a_function_of_selected_paths_is_pinned_by_them, under_distinct_a_limit_with_a_function_of_an_unselected_path_is_refused, under_distinct_a_limit_with_a_value_from_outside_the_row_is_refused, under_distinct_an_unpinned_function_with_no_limit_is_answered
  • crates/openehr-federation/tests/it/attributes.rs: distinct_on_attributes_alone_keeps_one_row_per_value_and_refuses_no_cut_node, under_distinct_a_shared_attribute_value_collapses_the_rows, under_distinct_rows_of_two_endpoints_are_two_values
  • crates/openehr-federation/tests/it/dedup/distinct.rs: outside_dedup_distinct_compares_a_uid_as_sent, under_dedup_a_node_cut_on_two_case_variants_is_refused, under_dedup_distinct_folds_case_beside_the_endpoint_attributes, under_dedup_distinct_holds_case_variants_of_a_uid_one_value
  • crates/openehr-federation/tests/it/dedup/mod.rs: dedup_runs_before_distinct_so_the_distinct_row_is_the_originating_copy
  • crates/openehr-federation/tests/it/distinct.rs: a_column_the_client_does_not_see_never_makes_rows_distinct, a_cut_node_holding_two_equal_rows_is_refused, a_data_value_is_one_value_whatever_the_order_of_its_members, a_duplicate_from_two_nodes_collapses_under_distinct_and_stays_without_it, a_duplicate_straddling_a_page_edge_takes_one_slot, a_number_written_two_ways_is_one_value, an_uncut_node_holding_two_equal_rows_is_collapsed, date_times_are_one_value_only_as_one_instant_written_one_way, distinct_is_idempotent_and_leaves_no_two_rows_equal, distinct_runs_before_the_limit, distinct_with_order_by_and_a_bounded_page_is_the_page_of_the_distinct_union, distinct_without_order_by_keeps_limit_distinct_values_of_the_union, the_kept_copy_is_the_first_under_order_by_then_endpoint_id, without_order_by_a_duplicate_collapses_to_the_first_endpoint_copy
  • crates/openehr-federation/tests/it/merge.rs: the_pushed_down_merge_is_the_order_and_limit_of_the_union

CP-9

46 tests.

  • app/ferrofed-engine/tests/it/fanout/dedup.rs: a_failing_424_envelope_records_the_mode, a_failing_504_envelope_records_the_mode, a_version_uid_of_the_wrong_form_fails_the_query_424, by_default_the_imported_composition_comes_back_twice, under_version_identity_the_originating_copy_is_kept_and_the_copy_named
  • app/ferrofed-server/src/facade/dedup.rs: a_repeated_header_is_refused, any_other_value_is_refused, each_offered_mode_is_selected_by_its_name, no_header_is_the_pass_through_default
  • app/ferrofed-server/tests/it/dedup.rs: a_failing_answer_still_records_the_mode, a_recombined_aggregate_under_version_identity_is_refused, a_value_naming_no_offered_mode_is_refused_before_any_node_is_asked, none_is_accepted_explicitly, under_version_identity_one_row_comes_back_and_the_copy_is_named, without_the_header_both_copies_come_back_and_none_is_recorded
  • app/ferrofed-server/tests/it/e2e/track5.rs (e2e): duplicates_pass_through_by_default_and_distinct_folds_them_at_the_tier
  • crates/openehr-federation/tests/it/aql/dedup.rs: a_directed_single_node_aggregate_under_dedup_is_dispatched, a_limit_without_order_by_is_ordered_on_the_uid, a_query_that_reads_no_version_has_no_dedup_key, a_recombined_aggregate_under_dedup_is_refused, a_selected_uid_is_read_where_it_is, a_version_variable_supplies_the_uid, the_version_uid_is_asked_as_a_hidden_column, under_distinct_a_selected_uid_is_the_dedup_key, under_distinct_an_unselected_uid_is_not_added, under_order_by_the_row_key_is_the_dedup_key
  • crates/openehr-federation/tests/it/dedup/distinct.rs: under_dedup_a_node_cut_on_two_case_variants_is_refused, under_dedup_distinct_folds_case_beside_the_endpoint_attributes, under_dedup_distinct_holds_case_variants_of_a_uid_one_value
  • crates/openehr-federation/tests/it/dedup/mod.rs: a_row_too_short_for_its_version_column_is_refused, a_row_with_no_version_uid_is_never_suppressed, a_system_id_that_differs_from_the_creating_system_id_only_in_case_keeps_its_copy, a_version_uid_of_the_wrong_form_is_a_node_defect, by_default_both_copies_of_an_imported_composition_come_back, copies_whose_version_ids_differ_only_in_case_are_one_version_kept_as_sent, dedup_runs_before_distinct_so_the_distinct_row_is_the_originating_copy, every_row_of_the_dropped_copy_is_suppressed_and_every_row_of_the_kept_one_stays, the_record_carries_the_mode_and_under_version_identity_what_was_suppressed, two_versions_of_one_object_both_survive, under_version_identity_the_originating_copy_is_kept_and_the_copy_recorded, with_no_originating_holder_the_lowest_endpoint_id_keeps_its_copy
  • crates/openehr-federation/tests/it/dedup/order.rs: a_case_variant_copy_at_a_page_edge_ranks_as_its_version_and_keeps_its_text, a_node_that_orders_uids_byte_for_byte_across_case_is_refused_at_its_cut, a_suppressed_copy_does_not_take_a_slot_of_the_limit
  • crates/openehr-federation/tests/it/dedup/properties.rs: dedup_keeps_one_endpoint_per_version_and_records_exactly_what_it_dropped, dedup_with_order_by_limit_and_a_bounded_page_is_the_page_of_the_deduplicated_union

CP-10

45 tests.

  • app/ferrofed-engine/tests/it/fanout/aggregate.rs: a_node_that_does_not_answer_fails_the_aggregate_504, a_recombining_plan_is_refused_best_effort_before_dispatch, a_value_the_recombination_cannot_use_fails_the_query_424, the_node_answers_recombine_into_one_row
  • app/ferrofed-server/tests/it/aggregate.rs: a_failing_node_fails_the_aggregate_424_with_no_row, a_partial_request_for_a_recombined_aggregate_is_refused_400, the_client_receives_one_recombined_row_in_its_own_columns, with_nothing_declared_the_aggregate_is_refused_400
  • app/ferrofed-server/tests/it/dedup.rs: a_recombined_aggregate_under_version_identity_is_refused
  • app/ferrofed-server/tests/it/e2e/aggregate.rs (e2e): an_undirected_avg_is_the_mean_weighted_by_the_counts_each_node_returns
  • app/ferrofed-server/tests/it/e2e/track5.rs (e2e): an_undirected_aggregate_is_recombined_or_refused_and_a_directed_one_answered
  • crates/openehr-federation/tests/it/aql/aggregate.rs: a_directed_single_node_aggregate_is_dispatched_unchanged, a_distinct_count_does_not_decompose, a_function_left_out_of_the_declaration_is_refused, a_plain_column_beside_an_aggregate_is_refused, a_recombined_aggregate_is_never_answered_best_effort, an_aggregate_directed_to_two_endpoints_is_recombined, an_aggregate_naming_no_patient_is_recombined_across_every_member, an_indecomposable_aggregate_suggests_both_alternatives, avg_is_asked_of_each_node_as_its_sum_and_count, distinct_breaks_the_decomposition, every_declared_function_but_avg_is_dispatched_as_written, several_aggregates_map_to_their_node_columns, the_columns_are_the_clients_query_not_the_dispatched_one, with_nothing_declared_every_undirected_aggregate_is_refused
  • crates/openehr-federation/tests/it/aql/dedup.rs: a_recombined_aggregate_under_dedup_is_refused
  • crates/openehr-federation/tests/it/aql/function.rs: a_function_outside_aql_directed_to_one_endpoint_passes_through, a_function_outside_aql_directed_to_two_endpoints_is_refused, a_function_outside_aql_is_refused_before_the_aggregate_beside_it, a_function_outside_aql_is_refused_in_a_patient_query_across_nodes, a_function_outside_aql_nested_in_an_aql_function_is_refused, an_aggregate_follows_the_decomposition_rules, an_undirected_function_outside_aql_in_select_is_refused, an_undirected_function_outside_aql_in_where_is_refused, the_refusal_suggests_both_alternatives
  • crates/openehr-federation/tests/it/aql/golden.rs: golden_case_06_is_refused_with_nothing_declared_and_recombined_under_the_default_set
  • crates/openehr-federation/tests/it/aql/hygiene.rs: no_recombined_aggregate_query_carries_the_patient_identifier, the_avg_rewrite_reaches_the_node_without_the_patient
  • crates/openehr-federation/tests/it/aql/rules.rs: an_aggregate_directed_to_one_endpoint_is_dispatched_unchanged, an_aggregate_directed_to_two_endpoints_is_refused, an_undirected_aggregate_is_refused_with_its_reason
  • crates/openehr-federation/tests/it/combine.rs: a_value_of_the_wrong_kind_refuses_its_node_and_leaves_no_row, an_avg_whose_sum_and_count_disagree_refuses_its_node, every_recombined_function_is_the_aggregate_over_the_union, values_no_one_order_compares_refuse_every_node_that_holds_one

CP-11

4 tests.

  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): an_undirected_query_asks_only_the_members_the_localizer_names
  • app/ferrofed-server/tests/it/e2e/track4.rs (e2e): a_node_answering_an_error_fails_the_query_424_and_is_named_node_error, an_unreachable_node_fails_the_query_504_and_is_named_offline
  • app/ferrofed-server/tests/it/endpoint_report.rs: a_member_a_directed_query_did_not_name_is_reported_excluded_and_out_of_scope

CP-12

15 tests.

  • app/ferrofed-engine/tests/it/fanout/best_effort.rs: every_node_not_resolved_is_a_200_with_no_rows_in_either_mode
  • app/ferrofed-server/tests/it/completeness.rs: incompleteness_is_the_complete_flag_and_never_an_operation_outcome
  • app/ferrofed-server/tests/it/e2e/track4.rs (e2e): a_node_answering_an_error_fails_the_query_424_and_is_named_node_error, a_slow_node_is_abandoned_at_the_per_node_timeout_and_named_time_out, an_unreachable_node_fails_the_query_504_and_is_named_offline, found_nowhere_and_consent_denied_are_200_and_never_424
  • app/ferrofed-server/tests/it/errors.rs: a_node_error_under_all_or_nothing_is_a_424_carrying_the_envelope, a_node_not_found_inside_a_fan_out_is_a_node_error_and_a_424, a_node_timing_out_under_all_or_nothing_is_a_504_carrying_the_envelope, a_node_timing_out_under_best_effort_is_a_200_reporting_it, an_invalid_request_is_a_400_with_its_code_and_quotes_nothing, an_unreachable_node_under_all_or_nothing_is_a_504_carrying_the_envelope
  • app/ferrofed-server/tests/it/pdqm/flow.rs: an_identifier_the_supplier_knows_no_patient_for_is_not_resolved_anywhere
  • app/ferrofed-server/tests/it/resolution.rs: a_patient_known_nowhere_is_200_with_no_rows_and_every_member_not_resolved, an_empty_cross_reference_is_200_with_no_rows_and_every_member_not_resolved

CP-13

19 tests.

  • app/ferrofed-registry/tests/it/creating_system/learned.rs: a_sighting_at_a_second_node_raises_the_incident_and_withdraws_the_mapping, an_imported_version_resolves_to_its_creating_node_through_a_registered_mapping, one_sighting_learns_a_route_to_the_endpoint_it_was_seen_at
  • app/ferrofed-registry/tests/it/creating_system/load.rs: a_registered_mapping_loads_and_is_listed
  • app/ferrofed-registry/tests/it/load.rs: a_system_id_routes_to_its_node, an_endpoint_carries_its_url_connection_type_and_managing_organisation, every_member_is_answered_by_its_id
  • app/ferrofed-server/tests/it/contribution_write.rs: a_contribution_amending_a_registered_mapping_s_version_reaches_its_node
  • app/ferrofed-server/tests/it/e2e/track6.rs (e2e): a_follow_up_read_of_a_row_reaches_the_cdr_that_holds_it_with_its_uid_unchanged
  • app/ferrofed-server/tests/it/follow_up.rs: a_fan_out_answer_teaches_the_table_a_system_seen_at_one_node, a_learned_route_never_routes_a_write, a_read_names_the_version_its_path_identifier_classes_carry, a_routed_answer_teaches_the_table_the_version_its_etag_names, a_routed_read_teaches_the_table_the_version_it_named, a_system_seen_at_two_nodes_is_an_integrity_incident
  • app/ferrofed-server/tests/it/registry_mcsd/routing.rs: a_registry_from_a_harness_directory_routes_identically_to_the_bootstrap_document, the_directory_materialises_the_snapshot_of_the_bootstrap_document
  • app/ferrofed-server/tests/it/versioned_write.rs: a_learned_holder_is_never_the_controlling_cdr_of_a_write, a_registered_creating_system_mapping_makes_its_node_the_controlling_cdr

CP-15

31 tests.

  • app/ferrofed-server/tests/it/contribution_write.rs: a_body_that_is_no_contribution_naming_object_version_ids_is_a_400_before_any_node, a_contribution_amending_a_registered_mapping_s_version_reaches_its_node, a_contribution_amending_a_version_no_member_is_known_to_control_is_409, a_contribution_in_canonical_xml_is_never_forwarded, a_contribution_its_path_node_controls_reaches_it_once_byte_identical, a_contribution_of_creations_alone_routes_by_its_path_ehr_id, a_contribution_with_one_version_another_member_controls_is_409_and_reaches_no_node, a_contribution_without_a_target_is_never_probed_for, a_malformed_flat_contribution_is_a_400_before_any_node, a_simplified_contribution_its_path_node_controls_reaches_it_once_byte_identical, a_simplified_contribution_of_creations_alone_routes_by_its_path_ehr_id, a_simplified_contribution_with_one_version_another_member_controls_is_409
  • app/ferrofed-server/tests/it/created_ehr_id.rs: a_binding_placing_the_ehr_id_at_a_refuses_a_create_at_b, a_create_at_b_of_an_ehr_id_the_index_holds_at_a_is_refused_and_sends_nothing, a_create_at_the_member_holding_the_ehr_id_is_forwarded_for_its_own_409, an_unknown_ehr_id_is_created_where_named_and_then_indexed_there
  • app/ferrofed-server/tests/it/e2e/commit.rs (e2e): a_versioned_write_reaches_its_controlling_node_and_never_another
  • app/ferrofed-server/tests/it/e2e/track6.rs (e2e): a_new_ehr_is_created_at_the_one_node_the_client_names
  • app/ferrofed-server/tests/it/its_rest_areas/ehr.rs: the_ehr_declaration_states_that_a_new_ehr_goes_only_to_the_named_endpoint
  • app/ferrofed-server/tests/it/versioned_write.rs: a_learned_holder_is_never_the_controlling_cdr_of_a_write, a_new_ehr_is_created_by_the_targeting_headers_alone_never_by_the_index, a_new_ehr_lands_byte_identical_at_the_one_named_node, a_new_ehr_naming_more_than_one_endpoint_is_refused_and_reaches_no_node, a_registered_creating_system_mapping_makes_its_node_the_controlling_cdr, a_versioned_write_lands_byte_identical_and_carries_no_identifier_outside_its_body, a_versioned_write_naming_no_single_preceding_version_is_a_400_before_any_node, a_versioned_write_reaches_its_controlling_cdr_and_no_other_node, a_versioned_write_the_index_routes_reaches_its_controlling_cdr_unprobed, a_write_its_path_node_does_not_control_is_refused_409_and_reaches_no_node, a_write_of_a_version_no_member_is_known_to_control_is_refused_409, no_write_without_a_target_is_ever_probed_for

CP-16

28 tests.

  • app/ferrofed-engine/tests/it/conveyance.rs: a_conveyance_header_from_the_client_never_reaches_the_node, a_node_the_gateway_has_a_grant_at_knows_it_by_its_client_id, a_probe_conveys_the_caller_to_every_member, a_query_conveys_the_caller_in_a_token_the_published_key_verifies, a_relayed_caller_conveys_every_annex_attribute_marked_as_asserted, a_routed_read_and_a_routed_write_convey_the_caller, a_stored_query_definition_conveys_the_caller, each_node_is_the_audience_of_its_own_token, the_admission_checks_ehr_create_and_read_convey_the_gateway
  • app/ferrofed-engine/tests/it/exchange.rs: the_node_receives_a_token_exchanged_for_the_verified_caller
  • app/ferrofed-engine/tests/it/mtls.rs: token_exchange_composes_with_mutual_tls
  • app/ferrofed-engine/tests/it/signing.rs: a_next_key_is_published_ahead_and_never_signs, a_rotation_across_curves_publishes_both_and_signs_with_the_new, the_conveyance_is_signed_with_the_current_keys_algorithm
  • app/ferrofed-server/tests/it/auth/patient.rs: a_member_other_than_the_token_s_own_is_told_its_own_ehr_id, each_node_is_told_its_own_ehr_id_and_the_covering_patient_scope
  • app/ferrofed-server/tests/it/auth/professional.rs: the_node_is_told_who_acts_and_the_level_reached
  • app/ferrofed-server/tests/it/contact_point/relayed.rs: each_node_is_told_every_annex_attribute_marked_as_asserted
  • app/ferrofed-server/tests/it/conveyance.rs: a_local_caller_conveys_the_professional_and_the_provider_to_each_node, a_p256_signing_key_conveys_the_caller_es256_beside_the_previous_es384_key, a_query_conveys_the_verified_caller_to_each_node_signed_for_it, a_query_that_reaches_dispatch_with_no_verified_caller_reaches_no_node, a_registry_from_either_source_without_a_signing_key_does_not_load, a_routed_read_a_routed_write_and_a_definition_request_convey_the_caller, an_edge_asserted_caller_is_conveyed_as_edge_asserted, the_ask_all_probe_conveys_the_caller_to_every_member
  • app/ferrofed-server/tests/it/e2e/track7.rs (e2e): each_node_is_reached_with_its_onward_token_and_told_the_caller
  • app/ferrofed-server/tests/it/onward_exchange.rs: the_callers_token_reaches_no_log_span_metric_or_conveyed_claim

CP-17

152 tests.

  • app/ferrofed-engine/src/dispatch/dpop.rs: a_proof_that_fails_on_the_first_send_is_a_node_error_with_nothing_sent, a_proof_that_fails_on_the_nonce_resend_is_a_node_error_of_a_node_that_was_asked
  • app/ferrofed-engine/tests/it/audience.rs: the_issuer_audience_names_the_issuer, the_token_endpoint_is_the_default_audience
  • app/ferrofed-engine/tests/it/conveyance.rs: a_query_conveys_the_caller_in_a_token_the_published_key_verifies
  • app/ferrofed-engine/tests/it/dispatch.rs: a_missing_credential_is_a_node_error_and_sends_nothing
  • app/ferrofed-engine/tests/it/dpop/mod.rs: a_bearer_token_where_dpop_was_asked_fails_the_node, a_dpop_bound_token_reaches_the_node_with_a_proof_of_its_key, an_exchanged_token_is_dpop_bound, the_nodes_nonce_is_answered_once, the_token_endpoints_nonce_is_answered_no_more_than_once, the_token_endpoints_nonce_is_answered_once
  • app/ferrofed-engine/tests/it/dpop/nonce.rs: a_deadline_before_the_nonce_resend_is_a_time_out_of_a_node_that_was_asked, a_nonce_resend_of_an_exchange_signs_new_assertions, a_nonce_resend_signs_a_new_client_assertion, the_token_endpoint_and_the_node_keep_their_own_nonces
  • app/ferrofed-engine/tests/it/exchange.rs: a_caller_without_its_token_is_refused_with_nothing_sent, a_node_401_drops_the_exchanged_token, a_refused_exchange_names_the_token_endpoints_code, an_edge_asserted_caller_is_refused_with_nothing_sent, an_exchange_answer_without_its_issued_token_type_fails_the_node, an_exchange_naming_no_resource_is_never_sent, an_exchanged_token_is_cached_per_caller, an_operation_no_scope_covers_is_never_exchanged, every_exchange_carries_its_scope_and_resource, the_gateways_own_request_uses_client_credentials, the_node_receives_a_token_exchanged_for_the_verified_caller
  • app/ferrofed-engine/tests/it/fapi2/mod.rs: a_callers_token_carrying_the_patient_is_never_sent, a_dpop_bound_token_reaches_the_node, a_refused_grant_fails_the_node_and_shows_no_credential, a_token_endpoint_past_the_timeout_fails_the_node, a_token_without_its_granted_details_fails_the_node, a_verified_callers_token_is_exchanged, refused_details_fail_the_node_naming_the_code, the_token_request_names_the_issuer_and_carries_the_details
  • app/ferrofed-engine/tests/it/fapi2/mtls.rs: a_fapi2_grant_authenticates_and_binds_its_tokens_by_certificate, an_alias_on_a_host_the_grant_names_is_taken
  • app/ferrofed-engine/tests/it/fapi2/rotation.rs: only_the_current_client_key_signs_while_the_previous_one_is_published
  • app/ferrofed-engine/tests/it/mtls.rs: a_bound_token_travels_only_over_connections_presenting_its_certificate, a_token_bound_to_another_certificate_never_reaches_the_node, the_gateway_authenticates_by_its_certificate_and_sends_no_assertion, token_exchange_composes_with_mutual_tls
  • app/ferrofed-engine/tests/it/nuts.rs: a_refused_nuts_grant_fails_the_node, the_nuts_token_reaches_the_node_dpop_bound
  • app/ferrofed-engine/tests/it/onward.rs: a_401_drops_the_token_and_the_next_request_obtains_a_new_one, a_refused_token_request_is_a_node_error_and_nothing_reaches_the_node, a_rotation_publishes_both_keys_for_the_overlap_window, a_token_endpoint_description_never_reaches_the_answer, a_token_is_cached_until_thirty_seconds_before_it_expires, an_unreachable_token_endpoint_is_a_node_error_and_nothing_reaches_the_node, the_assertion_carries_the_rfc_7523_claims, the_assertion_verifies_against_the_published_jwks_and_the_token_reaches_the_node, the_token_request_carries_the_canonical_scope, the_token_request_carries_the_rfc_7523_parameters
  • app/ferrofed-engine/tests/it/signing.rs: an_es256_signing_key_signs_the_client_assertion_es256
  • app/ferrofed-server/tests/it/access/emergency.rs: the_emergency_purpose_is_conveyed_to_the_node
  • app/ferrofed-server/tests/it/admission/onward.rs: the_admission_check_authenticates_with_the_onward_grant
  • app/ferrofed-server/tests/it/auth/edge.rs: a_bearer_token_alone_is_401_at_the_edge, an_assertion_of_another_issuer_is_401, an_assertion_of_the_edge_admits_and_is_recorded
  • app/ferrofed-server/tests/it/auth/introspection.rs: an_active_token_for_another_audience_is_401, an_active_token_for_this_gateway_is_admitted, an_answer_past_its_expiry_is_401, an_endpoint_answering_an_error_is_503, an_inactive_token_is_401, an_unreachable_endpoint_is_503
  • app/ferrofed-server/tests/it/auth/kept_token.rs: an_edge_assertion_is_never_kept_as_a_token, no_token_is_kept_where_no_node_exchanges_it, the_verified_token_is_kept_for_an_exchanging_node_and_never_shown
  • app/ferrofed-server/tests/it/auth/keys.rs: a_key_set_answered_with_an_error_is_503, a_key_set_file_verifies_and_a_missing_one_is_503, a_key_set_is_fetched_once_and_verifies_every_token, a_rotated_key_is_picked_up_by_one_refetch, an_es384_key_verifies_its_tokens, an_unknown_key_refetches_at_most_once_per_interval, an_unreachable_key_set_is_503
  • app/ferrofed-server/tests/it/auth/other_patient.rs: a_query_for_another_patient_asks_the_bound_member_alone, a_read_by_subject_of_another_patient_asks_the_bound_member_alone, the_token_s_own_patient_is_localized_and_prefiltered
  • app/ferrofed-server/tests/it/auth/patient.rs: a_class_beside_the_scoped_ehr_under_and_is_refused, a_class_beside_the_scoped_ehr_under_or_is_refused, a_containment_nested_under_the_scoped_ehr_is_admitted, a_cross_reference_contradicting_the_token_is_a_424, a_patient_grant_creates_no_ehr, a_patient_grant_never_reaches_the_demographic_api, a_patient_query_with_a_class_beside_its_ehr_is_refused, a_patient_token_without_an_ehr_id_is_refused, a_population_query_is_refused, a_query_for_another_patient_is_refused, a_read_by_subject_reaches_the_patient_s_own_ehr_alone, a_refused_read_by_subject_records_nothing_of_the_other_patient, a_second_ehr_variable_is_refused, an_ehr_id_outside_the_patient_s_pairs_is_refused_with_no_probe, an_ehr_under_not_contains_is_refused, the_patient_s_ehr_id_routes_to_its_own_member, the_token_s_ehr_id_at_another_member_is_refused, the_token_s_own_patient_is_admitted_at_every_member, without_the_opt_in_a_patient_grant_still_admits_nothing
  • app/ferrofed-server/tests/it/auth/purpose.rs: a_deployment_that_declares_it_optional_admits_a_token_without_one, a_purpose_in_authorization_details_is_admitted, a_token_without_a_purpose_of_use_is_403, an_iua_coding_without_a_code_declares_none
  • app/ferrofed-server/tests/it/auth/scope.rs: a_composition_read_needs_a_composition_read_over_every_template, a_named_aql_pattern_does_not_cover_an_ad_hoc_query, a_named_template_is_covered_by_its_own_pattern, a_patient_grant_admits_no_ehr_id_route, a_patient_grant_admits_no_query, a_query_without_an_aql_search_scope_is_403, a_scope_outside_the_grammar_and_no_scope_grant_nothing, a_stored_query_needs_a_pattern_over_its_name, a_system_wide_aql_grant_counts_only_for_a_listed_backend_client, an_admin_operation_is_refused_to_every_caller, an_ehr_status_update_needs_a_composition_update, the_demographic_api_admits_only_a_listed_client
  • app/ferrofed-server/tests/it/auth/token.rs: a_basic_credential_is_401, a_query_without_a_token_is_401_and_reaches_no_node, a_token_expired_within_the_clock_skew_is_admitted, a_token_for_another_audience_is_401, a_token_from_an_untrusted_issuer_is_401, a_token_naming_an_unpublished_key_is_401, a_token_not_typed_as_an_access_token_is_401, a_token_not_yet_valid_is_401, a_token_signed_by_another_key_under_a_trusted_name_is_401, a_token_without_its_client_id_is_401, an_admitted_token_reaches_no_node, an_expired_token_is_401, an_hmac_token_is_401, an_unsigned_token_is_401, options_root_is_behind_the_gate, two_authorization_fields_are_401
  • app/ferrofed-server/tests/it/conveyance.rs: a_query_conveys_the_verified_caller_to_each_node_signed_for_it
  • app/ferrofed-server/tests/it/e2e/track7.rs (e2e): a_caller_that_does_not_authenticate_reaches_no_node, each_node_is_reached_with_its_onward_token_and_told_the_caller
  • app/ferrofed-server/tests/it/next_key.rs: the_next_key_is_published_and_never_signs
  • app/ferrofed-server/tests/it/onward.rs: a_refusal_description_reaches_the_log_and_never_the_answer, a_rotation_publishes_the_current_and_the_previous_key, a_token_endpoint_down_fails_the_node_and_sends_it_nothing, options_declares_the_jwks_uri_and_validates_against_the_schema, the_node_receives_the_token_its_endpoint_issued_against_the_published_jwks
  • app/ferrofed-server/tests/it/onward_exchange.rs: a_dpop_bound_grant_proves_every_request_to_its_node, an_edge_asserted_caller_fails_an_exchanging_node_with_nothing_sent, node_a_receives_a_token_exchanged_for_the_verified_caller, the_callers_token_reaches_no_log_span_metric_or_conveyed_claim, the_exchange_asks_for_the_covering_scope_in_canonical_form
  • app/ferrofed-server/tests/it/onward_fapi2.rs: a_refused_fapi2_grant_fails_node_a_and_names_no_credential, a_rotated_client_key_is_published_beside_the_previous_one_and_alone_signs, node_a_receives_the_dpop_bound_fapi2_token
  • app/ferrofed-server/tests/it/onward_mtls.rs: a_node_is_reached_with_a_token_bound_to_the_certificate_its_section_names, a_token_bound_to_another_certificate_never_reaches_the_node
  • app/ferrofed-server/tests/it/onward_nuts.rs: a_refused_nuts_grant_fails_node_a_and_names_no_credential, node_a_receives_the_dpop_bound_nuts_token, the_served_did_document_verifies_the_gateways_presentation

CP-18

4 tests.

  • tools/ferrofed-testkit/tests/it/e2e/node_profile.rs (e2e): ferroehr_is_checked_for_holding_its_own_access_decision, ferroehr_is_checked_for_passing_its_errors_through
  • tools/ferrofed-testkit/tests/it/e2e/node_profile/ehrbase.rs (e2e): ehrbase_is_checked_for_holding_its_own_access_decision, ehrbase_is_checked_for_passing_its_errors_through

CP-19

2 tests.

  • tools/ferrofed-testkit/tests/it/e2e/node_profile.rs (e2e): ferroehr_has_no_consent_refusal_arranged_in_the_harness
  • tools/ferrofed-testkit/tests/it/e2e/node_profile/ehrbase.rs (e2e): ehrbase_has_no_consent_refusal_arranged_in_the_harness

CP-21

10 tests.

  • app/ferrofed-server/tests/it/base_url.rs: a_read_by_subject_is_served_at_the_root_and_under_a_prefix, a_routed_read_is_served_at_the_root_and_under_a_prefix, a_routed_write_is_served_at_the_root_and_under_a_prefix_with_location_untouched, no_prefix_is_reserved_at_the_root, options_describes_the_surface_at_the_root_and_under_a_prefix, the_base_path_is_the_root_by_default_and_the_deployment_chooses_any_other, the_federated_query_is_served_at_the_root_and_under_a_prefix, under_a_prefix_nothing_is_served_outside_it
  • app/ferrofed-server/tests/it/e2e/track9.rs (e2e): an_unmodified_client_given_only_the_base_url_reads_and_writes_at_a_prefix
  • app/ferrofed-server/tests/it/fhir/summary.rs: an_its_rest_path_under_the_base_still_answers_as_it_did

CP-22

12 tests.

  • app/ferrofed-server/tests/it/e2e/track9.rs (e2e): an_unmodified_client_given_only_the_base_url_reads_and_writes_at_a_prefix
  • app/ferrofed-server/tests/it/ehr_scope.rs: a_scoped_query_reaches_only_the_member_that_holds_the_ehr_id, a_targeted_scoped_query_goes_to_the_named_endpoint_and_nothing_is_probed, both_forms_send_the_owner_the_same_query_and_answer_the_same_rows, the_index_routes_a_scoped_query_and_nothing_is_probed, two_members_holding_the_ehr_id_are_a_409_and_neither_is_queried
  • crates/openehr-federation/tests/it/aql/rules.rs: a_query_already_scoped_by_ehr_id_is_accepted_as_written
  • crates/openehr-federation/tests/it/aql/scope.rs: a_bound_parameter_scopes_the_query_in_either_form, a_patient_query_in_the_from_form_dispatches_the_canonical_scope_and_no_identifier, an_unnamed_ehr_in_the_from_form_is_scoped_through_a_fresh_variable, both_forms_name_the_same_ehr_id_and_reach_a_node_as_the_same_query, the_patient_identifier_written_as_an_ehr_id_is_refused_in_either_form

CP-23

35 tests.

  • app/ferrofed-server/tests/it/auth/token.rs: options_root_is_behind_the_gate
  • app/ferrofed-server/tests/it/consent_withheld/mod.rs: by_default_the_exclusion_is_disclosed_and_declared, the_configured_setting_withholds_the_exclusion_and_is_declared
  • app/ferrofed-server/tests/it/contact_point/declared.rs: a_declared_contact_point_is_described_with_how_its_requests_are_served, a_deployment_with_no_contact_point_declares_none
  • app/ferrofed-server/tests/it/e2e/track9_surface.rs (e2e): the_self_description_lists_the_members_and_demographic_answers_as_declared
  • app/ferrofed-server/tests/it/its_rest_areas/definition.rs: the_definition_declaration_states_that_a_request_goes_to_the_one_named_node, the_definition_declaration_states_the_distribution_only_where_offered, the_definition_declaration_states_the_template_fan_out_only_where_offered, the_definition_declaration_states_where_stored_queries_are_held
  • app/ferrofed-server/tests/it/its_rest_areas/demographic.rs: the_demographic_declaration_matches_the_demographic_area_in_each_mode
  • app/ferrofed-server/tests/it/its_rest_areas/ehr.rs: the_ehr_declaration_states_how_a_path_ehr_id_finds_its_owner, the_ehr_declaration_states_that_a_new_ehr_goes_only_to_the_named_endpoint, the_ehr_declaration_states_that_a_versioned_write_needs_the_controlling_node, the_ehr_declaration_states_the_read_by_subject
  • app/ferrofed-server/tests/it/its_rest_areas/modes.rs: every_mode_declares_all_four_areas_and_each_follows_only_its_own_settings
  • app/ferrofed-server/tests/it/its_rest_areas/query.rs: the_query_declaration_names_stored_query_execution_only_where_the_registry_is_offered, the_query_declaration_states_that_both_forms_of_an_adhoc_query_fan_out
  • app/ferrofed-server/tests/it/onward.rs: options_declares_the_jwks_uri_and_validates_against_the_schema
  • app/ferrofed-server/tests/it/options.rs: no_targeting_mechanism_no_carrier_and_no_async_member_is_declared, options_on_a_path_the_gateway_does_not_serve_is_not_implemented, options_on_a_sub_path_names_the_methods_served_there, the_body_validates_against_the_vendored_schema, the_completeness_modes_follow_the_configuration, the_decomposable_aggregates_follow_the_configuration, the_dedup_policy_names_the_default_the_modes_and_the_header, the_definition_area_declares_nothing_offered, the_description_needs_no_patient_identifier_and_holds_none, the_member_endpoints_follow_the_registry, the_offset_strategy_follows_the_configuration, the_options_root_answer_names_the_methods_of_the_base, the_template_fan_out_upload_follows_the_configuration, the_timeout_budget_follows_the_configuration
  • app/ferrofed-server/tests/it/stored/declaration.rs: options_declares_the_registry_and_the_methods_it_serves
  • crates/openehr-federation/tests/it/examples.rs: the_7a_2_example_round_trips_unchanged

CP-24

23 tests.

  • app/ferrofed-engine/tests/it/forward.rs: the_body_arrives_byte_for_byte_and_only_the_declared_headers_travel
  • app/ferrofed-server/tests/it/contribution_write.rs: a_contribution_its_path_node_controls_reaches_it_once_byte_identical
  • app/ferrofed-server/tests/it/declared.rs: a_body_sent_without_a_content_type_travels_with_the_one_its_operation_declares
  • app/ferrofed-server/tests/it/e2e/commit.rs (e2e): a_composition_committed_through_the_gateway_lands_byte_identical_at_one_node, a_versioned_write_reaches_its_controlling_node_and_never_another
  • app/ferrofed-server/tests/it/e2e/track9.rs (e2e): an_unmodified_client_given_only_the_base_url_reads_and_writes_at_a_prefix
  • app/ferrofed-server/tests/it/ehr_by_subject.rs: a_subject_one_member_holds_is_that_members_ehr_read_by_its_ehr_id
  • app/ferrofed-server/tests/it/ehr_scope.rs: a_scoped_query_reaches_only_the_member_that_holds_the_ehr_id
  • app/ferrofed-server/tests/it/provenance.rs: a_directed_query_names_the_node_that_failed_it_once_the_node_was_asked, a_directed_query_that_asked_no_node_names_none, a_fan_out_lists_the_endpoints_that_contributed_rows_in_registry_order, a_query_directed_at_one_endpoint_names_it_and_its_system_id, an_all_or_nothing_failure_lists_no_endpoint, an_undirected_query_the_patient_resolves_for_at_one_member_names_it, the_provenance_headers_carry_registry_ids_and_nothing_the_request_sent, under_partial_a_failed_node_and_an_empty_one_are_not_listed
  • app/ferrofed-server/tests/it/routing/pass_through.rs: a_committed_composition_lands_byte_identical_and_location_and_etag_pass_through, a_query_parameter_its_rest_defines_is_forwarded_as_received, a_redirect_is_the_nodes_answer_and_is_never_followed, every_routed_answer_names_the_acting_endpoint_and_its_system_id, the_nodes_own_404_and_500_pass_through_as_the_node_sent_them
  • app/ferrofed-server/tests/it/versioned_write.rs: a_new_ehr_lands_byte_identical_at_the_one_named_node, a_versioned_write_lands_byte_identical_and_carries_no_identifier_outside_its_body

CP-25

14 tests.

  • app/ferrofed-server/tests/it/demographic.rs: a_header_naming_another_endpoint_several_or_a_star_is_refused, a_header_naming_the_declared_endpoint_is_accepted, by_default_a_read_and_a_create_are_501_and_no_node_is_asked, options_declares_each_mode_and_the_behaviour_matches_it, options_on_a_party_names_its_methods_only_when_routed, the_conflict_names_both_endpoints, with_the_setting_a_create_body_is_forwarded_unchanged, with_the_setting_a_party_read_reaches_only_that_node_byte_identical, with_the_setting_a_path_naming_no_its_rest_operation_is_still_501, with_the_setting_a_request_naming_no_endpoint_is_refused_and_no_node_is_asked
  • app/ferrofed-server/tests/it/e2e/track9_surface.rs (e2e): the_self_description_lists_the_members_and_demographic_answers_as_declared
  • app/ferrofed-server/tests/it/errors.rs: an_unexposed_its_rest_area_is_a_501_not_implemented
  • app/ferrofed-server/tests/it/its_rest_areas/demographic.rs: the_demographic_declaration_matches_the_demographic_area_in_each_mode
  • app/ferrofed-server/tests/it/its_rest_areas/modes.rs: every_mode_declares_all_four_areas_and_each_follows_only_its_own_settings

CP-26

139 tests.

  • app/ferrofed-engine/src/declared/headers.rs: a_utf_8_charset_passes_and_is_dropped, an_accept_list_reaches_the_node_as_its_best_listed_match, an_accept_that_admits_nothing_listed_is_not_acceptable, an_unlisted_content_type_is_unsupported, any_media_type_reaches_the_node_as_the_first_listed, prefer_reaches_the_node_as_its_listed_preferences_only
  • app/ferrofed-engine/src/declared/mod.rs: a_free_text_parameter_passes_unclassified, a_malformed_date_time_is_refused_by_position_never_by_value, a_well_formed_date_time_is_held
  • app/ferrofed-engine/src/declared/path.rs: a_uid_based_id_parses_as_a_version_or_an_object_id, a_uuid_path_parameter_is_a_canonical_uuid, a_version_uid_parses_as_an_object_version_id, the_uid_based_id_of_a_delete_parses_as_an_object_version_id
  • app/ferrofed-engine/src/hygiene/mod.rs: every_federation_header_is_withheld_even_where_an_operation_declares_it, the_authority_of_the_url_is_never_read, the_identifier_in_a_conveyed_claim_names_the_conveyance_header, the_path_query_and_fragment_are_read_under_any_authority
  • app/ferrofed-engine/src/outbound_id.rs: a_withheld_value_inside_the_minted_id_is_sent_with_that_id, the_same_value_in_the_aql_is_still_never_sent
  • app/ferrofed-engine/tests/it/conveyance.rs: a_caller_claim_carrying_the_withheld_identifier_stops_a_query_unsent, a_caller_claim_carrying_the_withheld_identifier_stops_a_routed_request_unsent, a_caller_claim_carrying_the_withheld_identifier_stops_an_ehr_call_and_a_definition
  • app/ferrofed-engine/tests/it/dispatch.rs: every_header_a_node_receives_is_in_the_inventory, the_request_id_a_node_receives_is_the_minted_outbound_id_byte_for_byte
  • app/ferrofed-engine/tests/it/exchange.rs: a_caller_token_carrying_the_withheld_identifier_is_never_exchanged
  • app/ferrofed-engine/tests/it/fanout/all_or_nothing.rs: the_one_outbound_id_reaches_every_node
  • app/ferrofed-engine/tests/it/fapi2/mod.rs: a_callers_token_carrying_the_patient_is_never_sent, no_carrier_to_the_server_or_the_node_names_the_patient
  • app/ferrofed-engine/tests/it/forward.rs: a_free_text_parameter_passes_unclassified, a_header_the_operation_declares_travels_and_one_it_does_not_is_stripped, a_malformed_date_time_is_refused_and_no_node_is_asked, a_query_parameter_the_operation_does_not_declare_is_refused_unsent, a_well_formed_date_time_is_forwarded_byte_identical, a_withheld_identifier_in_the_body_of_a_commit_is_sent_unchanged, a_withheld_identifier_in_the_path_or_a_forwarded_header_is_never_sent, a_withheld_value_in_a_client_header_is_refused_though_the_registry_authority_holds_it, a_withheld_value_in_the_registry_path_is_never_forwarded, an_accept_list_reaches_the_node_as_its_best_listed_match, an_accept_that_admits_nothing_listed_is_not_acceptable_unsent, an_identifier_inside_the_composed_ehr_id_is_forwarded, any_media_type_reaches_the_node_as_the_first_listed, the_host_a_node_receives_is_the_registry_authority_never_the_client_host, the_same_identifier_in_a_part_the_client_wrote_is_still_withheld
  • app/ferrofed-engine/tests/it/gate.rs: a_clean_request_is_sent_with_identifiers_withheld, a_fan_out_with_a_leaking_query_fails_closed_and_asks_nobody, a_short_identifier_inside_the_scope_ehr_id_is_sent, a_withheld_value_in_the_registry_authority_is_sent, a_withheld_value_in_the_registry_path_is_never_sent, a_withheld_value_inside_the_minted_id_is_sent_with_that_id, an_identifier_in_the_aql_text_is_never_sent, the_header_the_gateway_adds_is_its_minted_id_and_carries_no_identifier, the_same_short_identifier_elsewhere_is_never_sent
  • app/ferrofed-engine/tests/it/masking.rs: a_short_identifier_in_the_base_path_is_found, a_short_identifier_inside_the_composed_ehr_id_passes, an_ehr_id_segment_the_client_wrote_is_never_masked, the_same_short_identifier_in_a_client_part_is_still_found
  • app/ferrofed-engine/tests/it/nuts_service.rs: the_pseudonym_reaches_neither_the_authorization_server_nor_a_proof
  • app/ferrofed-engine/tests/it/onward.rs: a_token_endpoint_description_never_reaches_the_answer
  • app/ferrofed-identity/tests/it/mitz.rs: a_patient_named_by_a_pseudonym_is_never_sent_to_mitz
  • app/ferrofed-identity/tests/it/nvi_localizer.rs: a_bsn_system_never_stands_for_the_pseudonym
  • app/ferrofed-server/tests/it/contact_point/relayed.rs: no_iua_person_id_reaches_a_node
  • app/ferrofed-server/tests/it/contribution_write.rs: a_contribution_its_path_node_controls_reaches_it_once_byte_identical, a_simplified_contribution_its_path_node_controls_reaches_it_once_byte_identical
  • app/ferrofed-server/tests/it/conveyance.rs: a_caller_claim_carrying_the_patient_stops_the_query_before_any_node, a_professional_claim_carrying_the_patient_stops_the_query_before_any_node
  • app/ferrofed-server/tests/it/declared.rs: a_free_text_parameter_passes_unclassified, a_malformed_path_uid_is_refused_by_position_and_no_node_is_asked, a_malformed_version_at_time_is_refused_and_no_node_is_asked, a_well_formed_version_at_time_reaches_the_node_byte_identical, an_accept_that_admits_nothing_listed_is_a_406_that_asks_no_node, an_unlisted_content_type_is_a_415_that_asks_no_node, the_listed_values_of_a_commit_reach_the_node_and_no_client_text
  • app/ferrofed-server/tests/it/definition.rs: a_definition_request_carries_only_what_its_operation_declares, a_malformed_declared_value_is_refused_before_the_missing_target
  • app/ferrofed-server/tests/it/directive.rs: no_node_receives_the_directive_and_each_receives_the_undirected_node_query, the_organisation_selector_asks_every_endpoint_the_organisation_manages
  • app/ferrofed-server/tests/it/e2e/track10.rs (e2e): a_committed_dv_identifier_arrives_at_a_ferroehr_node_byte_identical, the_four_positions_reach_neither_ferroehr_node_on_any_path
  • app/ferrofed-server/tests/it/ehr_by_subject.rs: a_plus_in_the_subject_is_a_literal_plus, a_short_subject_inside_the_registry_base_path_is_never_forwarded, a_short_subject_inside_the_routed_ehr_id_still_forwards, a_subject_not_given_once_or_an_undeclared_parameter_is_a_400_that_asks_nobody, a_subject_one_member_holds_is_that_members_ehr_read_by_its_ehr_id, a_subject_several_members_hold_is_a_409_listing_them_and_asks_nobody, a_subject_that_is_no_utf8_text_is_a_400_that_asks_no_resolver, the_targeting_header_names_which_of_several_holders_answers
  • app/ferrofed-server/tests/it/ehr_id_collision.rs: an_ehr_id_that_is_no_uuid_is_never_named_by_an_incident, no_incident_or_log_line_names_a_patient_identifier
  • app/ferrofed-server/tests/it/ehr_scope.rs: an_ehr_id_that_is_no_uuid_is_never_probed_nor_sent, neither_form_carries_the_patient_identifier_to_a_node
  • app/ferrofed-server/tests/it/fhir/header.rs: the_header_is_the_supplier_s_and_no_header_value_reaches_a_node
  • app/ferrofed-server/tests/it/fhir/receive.rs: a_document_is_written_to_its_member_by_its_ehr_id_alone
  • app/ferrofed-server/tests/it/fhir/summary.rs: the_summary_is_an_eps_document_from_both_members_and_no_identifier_reaches_a_node
  • app/ferrofed-server/tests/it/follow_up.rs: a_version_read_reaches_the_node_byte_identical_and_carries_no_identifier
  • app/ferrofed-server/tests/it/mitz/config.rs: the_pseudonym_listed_as_the_bsn_is_refused
  • app/ferrofed-server/tests/it/mitz/decision.rs: the_bsn_reaches_mitz_only_and_no_node_log_or_error
  • app/ferrofed-server/tests/it/nl_gf.rs: a_bsn_system_listed_as_the_pseudonym_is_refused_at_load, the_pseudonymised_walkthrough_runs_end_to_end_and_no_node_sees_the_pseudonym
  • app/ferrofed-server/tests/it/nvi_nuts.rs: the_nuts_token_reaches_the_nvi_alone
  • app/ferrofed-server/tests/it/outbound.rs: a_clinician_predicate_reaches_the_node_unchanged, a_short_identifier_inside_the_nodes_ehr_id_is_answered, an_identifier_in_the_clients_query_string_and_headers_is_never_forwarded, either_carrier_and_a_projection_reach_a_node_as_its_ehr_id_alone, the_identifier_on_another_path_is_a_400_that_asks_nobody
  • app/ferrofed-server/tests/it/outbound_id.rs: a_client_request_id_never_reaches_a_node_on_the_fan_out, a_failed_query_is_logged_under_the_id_its_request_line_records, two_requests_reach_the_nodes_under_two_ids, with_no_client_id_the_response_and_every_node_share_the_minted_id
  • app/ferrofed-server/tests/it/path_ehr_id/probe.rs: neither_the_probe_nor_the_routed_read_carries_an_identifier_or_the_clients_credential
  • app/ferrofed-server/tests/it/pdqm/flow.rs: neither_identifier_reaches_a_log_line_a_metric_or_a_node
  • app/ferrofed-server/tests/it/probed_ehr_id.rs: a_read_whose_ehr_id_is_a_uuid_is_still_resolved_by_the_probe, a_read_whose_ehr_id_is_no_uuid_and_that_nothing_routes_is_refused_and_probes_nobody, an_ehr_id_that_is_no_uuid_is_forwarded_to_the_named_node_alone_and_then_indexed
  • app/ferrofed-server/tests/it/query_get.rs: a_client_ehr_id_in_the_query_string_is_dropped
  • app/ferrofed-server/tests/it/routing/hygiene.rs: an_identifier_in_a_client_header_never_reaches_the_node_nor_does_its_authorization, an_identifier_in_a_query_parameter_is_refused_before_anything_is_sent
  • app/ferrofed-server/tests/it/routing_log.rs: no_event_of_a_routed_request_names_the_clients_id
  • app/ferrofed-server/tests/it/traces/traceparent.rs: an_identifier_hidden_in_the_clients_trace_id_reaches_no_node_and_no_span
  • app/ferrofed-server/tests/it/track10/mock.rs: a_committed_dv_identifier_arrives_at_the_node_byte_identical, a_panicking_handler_holding_the_identifier_leaves_it_on_neither_stderr_nor_the_log, the_identifier_in_a_party_identified_predicate_reaches_no_node, the_identifier_in_a_projection_reaches_no_node, the_identifier_in_an_external_ref_predicate_reaches_no_node, the_identifier_in_the_ehr_id_slot_is_never_probed_at_a_node, the_identifier_in_the_query_string_or_a_header_reaches_no_node, the_identifier_on_the_single_node_route_reaches_no_node
  • app/ferrofed-server/tests/it/versioned_write.rs: a_new_ehr_lands_byte_identical_at_the_one_named_node, a_versioned_write_lands_byte_identical_and_carries_no_identifier_outside_its_body
  • crates/openehr-federation/tests/it/aql/directive.rs: a_directed_patient_query_reaches_the_node_as_the_undirected_one_does, the_organisation_selector_never_reaches_a_node
  • crates/openehr-federation/tests/it/aql/golden.rs: golden_case_02_keeps_the_directive_and_its_projections_out_of_the_node_query
  • crates/openehr-federation/tests/it/aql/guard.rs: a_clinician_or_facility_predicate_is_dispatched_unchanged, the_same_path_compared_with_the_patient_identifier_is_refused
  • crates/openehr-federation/tests/it/aql/hygiene.rs: a_seated_identifier_is_either_kept_from_the_node_or_refused, no_pushed_row_key_carries_the_patient, no_recombined_aggregate_query_carries_the_patient_identifier, the_avg_rewrite_reaches_the_node_without_the_patient
  • crates/openehr-federation/tests/it/aql/scope.rs: a_patient_query_in_the_from_form_dispatches_the_canonical_scope_and_no_identifier, the_patient_identifier_written_as_an_ehr_id_is_refused_in_either_form

CP-27

6 tests.

  • tools/ferrofed-testkit/tests/it/e2e/node_profile.rs (e2e): ferroehr_is_checked_against_the_identifier_integrity_conditions, ferroehr_is_checked_for_an_ehr_created_without_a_subject, ferroehr_is_invocable_on_its_local_ehr_id_alone
  • tools/ferrofed-testkit/tests/it/e2e/node_profile/ehrbase.rs (e2e): ehrbase_is_checked_against_the_identifier_integrity_conditions, ehrbase_is_checked_for_an_ehr_created_without_a_subject, ehrbase_is_invocable_on_its_local_ehr_id_alone

CP-28

18 tests.

  • app/ferrofed-engine/src/hygiene/mod.rs: the_targeting_headers_are_withheld_from_every_operation
  • app/ferrofed-server/src/facade/target.rs: a_conflict_names_both_sets_and_answers_its_own_code
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): the_endpoint_header_selects_what_the_directive_selects
  • app/ferrofed-server/tests/it/routing/selection.rs: a_node_named_in_a_query_parameter_is_refused_and_never_routed, the_organisation_header_routes_to_the_one_endpoint_it_manages, the_routing_headers_select_one_endpoint_and_never_two_sets
  • app/ferrofed-server/tests/it/stored/invocation.rs: a_stored_query_is_targeted_by_the_header_as_by_the_directive
  • app/ferrofed-server/tests/it/targeting.rs: a_header_and_a_directive_that_differ_are_refused_400_naming_both_sets, a_header_and_a_directive_that_select_the_same_set_proceed, a_query_parameter_targets_nothing, an_aggregate_the_header_directs_at_one_endpoint_reaches_it_unchanged, an_identifier_a_header_names_that_the_registry_does_not_know_is_refused_400, an_unknown_header_identifier_is_refused_even_beside_a_valid_directive, no_node_receives_a_targeting_header_or_its_value, the_endpoint_header_selects_the_node_set_as_the_directive_does, the_organisation_header_asks_every_endpoint_the_organisation_manages, the_two_headers_that_differ_are_refused_400
  • app/ferrofed-server/tests/it/template_fan_out.rs: a_star_beside_an_organisation_naming_fewer_members_is_a_conflict

CP-29

5 tests.

  • app/ferrofed-server/tests/it/dedup.rs: under_version_identity_one_row_comes_back_and_the_copy_is_named
  • app/ferrofed-server/tests/it/dedup_write.rs: a_write_against_the_surviving_row_while_its_owner_is_down_is_a_409_and_reaches_no_node, a_write_through_the_owners_ehr_id_reaches_the_owner_alone_and_claims_no_copy, every_refusal_names_the_controlling_system_and_quotes_nothing_of_the_request, with_the_owner_up_a_write_through_the_copys_ehr_id_is_still_a_409

CP-30

34 tests.

  • app/ferrofed-engine/tests/it/fanout/all_or_nothing.rs: a_time_out_and_a_node_error_together_are_a_504, an_unreachable_node_is_offline_and_a_504, one_node_error_fails_the_query_424_with_the_nodes_error, one_node_timing_out_fails_the_query_504_with_the_envelope
  • app/ferrofed-engine/tests/it/fanout/best_effort.rs: a_consent_denied_node_is_a_200_with_the_rest_in_either_mode, a_node_error_under_best_effort_is_a_200_naming_the_nodes_error, a_time_out_under_best_effort_is_a_200_with_the_answering_rows, an_offline_node_under_best_effort_is_a_200_reporting_it, every_node_not_resolved_is_a_200_with_no_rows_in_either_mode, members_out_of_scope_never_clear_complete_in_either_mode
  • app/ferrofed-engine/tests/it/fanout/consent.rs: a_403_carrying_a_listed_code_is_consent_denied_and_fails_nothing
  • app/ferrofed-engine/tests/it/oversized.rs: an_answer_past_the_bound_is_node_error_and_fails_the_query_424
  • app/ferrofed-server/tests/it/completeness.rs: all_stated_explicitly_is_accepted_and_fails_closed, partial_where_best_effort_is_not_offered_is_refused, partial_where_offered_is_a_200_with_the_answering_nodes_rows
  • app/ferrofed-server/tests/it/consent.rs: a_member_the_prefilter_leaves_in_is_asked_and_its_refusal_still_reported, a_node_the_localizer_names_still_refuses_and_the_query_succeeds, with_no_consent_service_a_node_refusal_is_reported_and_the_query_succeeds
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): an_undirected_query_asks_only_the_members_the_localizer_names
  • app/ferrofed-server/tests/it/e2e/track4.rs (e2e): a_node_answering_an_error_fails_the_query_424_and_is_named_node_error, a_slow_node_is_abandoned_at_the_per_node_timeout_and_named_time_out, an_unreachable_node_fails_the_query_504_and_is_named_offline, found_nowhere_and_consent_denied_are_200_and_never_424, partial_returns_the_answering_nodes_rows_only_where_offered
  • app/ferrofed-server/tests/it/e2e/track7.rs (e2e): a_member_the_consent_service_admits_still_refuses_and_the_query_succeeds, with_no_consent_service_a_node_refusal_is_reported_and_the_query_succeeds
  • app/ferrofed-server/tests/it/errors.rs: a_424_and_a_504_echo_the_clients_q, a_node_error_under_all_or_nothing_is_a_424_carrying_the_envelope, a_node_not_found_inside_a_fan_out_is_a_node_error_and_a_424, a_node_timing_out_under_all_or_nothing_is_a_504_carrying_the_envelope, a_node_timing_out_under_best_effort_is_a_200_reporting_it, an_unreachable_node_under_all_or_nothing_is_a_504_carrying_the_envelope
  • app/ferrofed-server/tests/it/facade/query.rs: a_node_error_carries_the_nodes_message_with_the_subject_masked
  • app/ferrofed-server/tests/it/overload.rs: a_member_answer_past_the_read_bound_is_node_error_and_fails_the_query_424

CP-31

19 tests.

  • app/ferrofed-engine/tests/it/fanout/all_or_nothing.rs: a_node_answering_after_the_overall_budget_contributes_nothing, one_node_timing_out_fails_the_query_504_with_the_envelope
  • app/ferrofed-engine/tests/it/fanout/budget.rs: a_longer_wait_leaves_the_configured_budget_in_force, a_shortened_budget_abandons_a_node_the_configured_one_would_wait_for, a_zero_wait_asks_no_node_and_reports_every_node_time_out, abandoning_one_node_never_aborts_another_in_flight, time_spent_before_the_dispatch_comes_out_of_the_overall_budget
  • app/ferrofed-engine/tests/it/fanout/decision.rs: a_client_wait_shortens_the_budget_and_never_extends_it
  • app/ferrofed-server/tests/it/e2e/track4.rs (e2e): a_client_wait_shortens_the_budget_and_never_extends_it, a_slow_node_is_abandoned_at_the_per_node_timeout_and_named_time_out
  • app/ferrofed-server/tests/it/endpoint_report.rs: latency_is_reported_exactly_for_the_endpoints_dispatched_to
  • app/ferrofed-server/tests/it/timeouts.rs: a_longer_wait_never_extends_the_configured_budget, a_shorter_wait_shortens_the_budget_and_is_reported, a_shorter_wait_under_partial_returns_the_answering_rows, a_slow_node_under_the_default_timeouts_answers_the_504_envelope, a_zero_wait_asks_no_node_and_reports_every_node_time_out, respond_async_beside_a_shorter_wait_still_shortens_the_budget, respond_async_never_exempts_a_request_from_the_overall_budget, the_overall_budget_fires_before_the_tightest_accepted_request_timeout

CP-32

145 tests.

  • app/ferrofed-engine/tests/it/fanout/aggregate.rs: a_count_past_what_a_json_number_holds_is_an_error, a_node_that_does_not_answer_fails_the_aggregate_504, a_recombining_plan_is_refused_best_effort_before_dispatch, a_value_the_recombination_cannot_use_fails_the_query_424, an_avg_over_integers_answers_an_integer, the_node_answers_recombine_into_one_row
  • app/ferrofed-engine/tests/it/fanout/distinct.rs: a_row_two_nodes_return_takes_one_slot_of_the_limit
  • app/ferrofed-engine/tests/it/fanout/order.rs: a_bounded_offset_page_is_sliced_from_k_plus_n_rows_per_node, a_bounded_window_out_of_the_federation_order_fails_the_query_424, a_cut_out_of_the_federation_order_fails_the_query_424, a_node_answering_past_its_limit_fails_the_query_424, interleaved_node_answers_merge_into_the_global_top_n, tied_keys_merge_identically_whichever_node_answers_first, under_best_effort_a_disagreeing_node_leaves_the_others_top_n
  • app/ferrofed-server/tests/it/aggregate.rs: a_failing_node_fails_the_aggregate_424_with_no_row, a_partial_request_for_a_recombined_aggregate_is_refused_400, the_client_receives_one_recombined_row_in_its_own_columns, with_nothing_declared_the_aggregate_is_refused_400
  • app/ferrofed-server/tests/it/distinct.rs: a_duplicate_straddling_the_page_edge_is_answered_once
  • app/ferrofed-server/tests/it/e2e/aggregate.rs (e2e): an_undirected_avg_is_the_mean_weighted_by_the_counts_each_node_returns
  • app/ferrofed-server/tests/it/e2e/track5.rs (e2e): an_undirected_aggregate_is_recombined_or_refused_and_a_directed_one_answered, order_by_and_limit_return_the_global_top_rows_deterministically
  • app/ferrofed-server/tests/it/order.rs: a_bounded_offset_page_asks_each_node_for_k_plus_n_rows, a_bounded_offset_page_is_computed_afresh_and_carries_no_cursor, a_distinct_function_of_an_unselected_path_under_a_limit_is_refused_400, a_distinct_function_of_selected_paths_returns_the_same_rows_on_every_repeat, a_distinct_whole_object_under_a_limit_is_refused_400, a_node_out_of_the_federation_order_fails_the_query_424, a_page_past_the_configured_window_is_refused_400_naming_the_bound, an_ehr_only_query_returns_the_same_rows_on_every_repeat, bounded_pages_tied_across_their_edges_repeat_and_tile, the_client_gets_the_global_top_n_without_the_hidden_column, the_reject_strategy_refuses_any_offset_past_zero_400
  • app/ferrofed-server/tests/it/order_key.rs: a_limit_on_a_dv_text_key_is_refused_400_and_asks_no_node, top_on_a_dv_text_key_is_refused_400_and_asks_no_node, with_no_limit_a_dv_text_key_is_answered_in_one_order_on_every_repeat
  • crates/openehr-federation/tests/it/aql/aggregate.rs: a_distinct_count_does_not_decompose, a_function_left_out_of_the_declaration_is_refused, a_plain_column_beside_an_aggregate_is_refused, a_recombined_aggregate_is_never_answered_best_effort, an_aggregate_directed_to_two_endpoints_is_recombined, an_indecomposable_aggregate_suggests_both_alternatives, avg_is_asked_of_each_node_as_its_sum_and_count, distinct_breaks_the_decomposition, every_declared_function_but_avg_is_dispatched_as_written, several_aggregates_map_to_their_node_columns, the_columns_are_the_clients_query_not_the_dispatched_one, with_nothing_declared_every_undirected_aggregate_is_refused
  • crates/openehr-federation/tests/it/aql/comparable.rs: a_bounded_page_on_a_comparable_key_is_answered, a_bounded_page_on_an_incomparable_key_is_refused, a_later_incomparable_key_is_refused_and_located, a_limit_on_a_collection_is_refused, a_limit_on_a_dv_text_order_key_is_refused, a_limit_on_a_path_the_rm_does_not_resolve_is_refused, a_limit_on_a_whole_rm_object_is_refused, a_limit_on_an_element_value_is_refused, a_limit_on_primitives_and_ordered_data_values_is_answered, an_unscoped_limit_on_an_incomparable_key_is_refused, the_fetch_member_on_an_incomparable_key_is_refused, top_on_an_incomparable_key_is_refused, under_distinct_a_bounded_page_with_a_whole_rm_object_is_refused, under_distinct_a_limit_on_an_incomparable_order_by_key_is_refused, under_distinct_a_limit_with_a_collection_is_refused, under_distinct_a_limit_with_a_dv_text_is_refused, under_distinct_a_limit_with_a_path_the_rm_does_not_resolve_is_refused, under_distinct_a_limit_with_a_whole_rm_object_is_refused, under_distinct_a_limit_with_an_element_value_is_refused, under_distinct_a_limit_with_ordered_data_values_and_primitives_is_pinned, under_distinct_with_no_limit_an_incomparable_path_is_not_a_key, with_no_limit_an_incomparable_key_is_sent_as_written_and_ordered_at_the_tier
  • crates/openehr-federation/tests/it/aql/dedup.rs: a_limit_without_order_by_is_ordered_on_the_uid, under_order_by_the_row_key_is_the_dedup_key
  • crates/openehr-federation/tests/it/aql/function.rs: a_date_and_time_function_is_forwarded_across_a_fan_out, a_function_name_is_read_in_any_case, a_function_outside_aql_directed_to_two_endpoints_is_refused, a_function_outside_aql_is_refused_before_the_aggregate_beside_it, a_function_outside_aql_is_refused_in_a_patient_query_across_nodes, a_function_outside_aql_nested_in_an_aql_function_is_refused, a_numeric_function_is_forwarded_across_a_fan_out, a_string_function_is_forwarded_across_a_fan_out, an_aggregate_follows_the_decomposition_rules, an_undirected_function_outside_aql_in_select_is_refused, an_undirected_function_outside_aql_in_where_is_refused, the_refusal_suggests_both_alternatives, the_terminology_function_is_forwarded_across_a_fan_out
  • crates/openehr-federation/tests/it/aql/golden.rs: golden_case_05_is_refused_under_reject_and_paged_under_bounded, golden_case_06_is_refused_with_nothing_declared_and_recombined_under_the_default_set
  • crates/openehr-federation/tests/it/aql/hygiene.rs: no_pushed_row_key_carries_the_patient
  • crates/openehr-federation/tests/it/aql/offset.rs: a_page_past_the_bound_is_refused_naming_the_bound, a_page_whose_window_is_the_bound_is_accepted, a_window_that_overflows_is_past_the_bound, an_ehr_only_page_asks_each_node_for_k_plus_n_rows_tie_broken_on_the_ehr_id, an_offset_with_no_limit_is_refused_under_the_bounded_strategy, an_offset_with_no_order_by_is_refused_under_the_bounded_strategy, an_unscoped_query_is_paged_the_same_way, the_bounded_strategy_asks_each_node_for_k_plus_n_rows_and_never_pushes_offset, the_offset_and_fetch_members_page_like_the_clauses_under_the_bounded_strategy, the_reject_strategy_refuses_an_offset_past_zero
  • crates/openehr-federation/tests/it/aql/order.rs: a_containment_with_no_versioned_object_is_keyed_on_its_ehr, a_folder_is_never_a_key_and_a_query_with_no_key_is_dispatched_as_written, a_patient_query_scoped_to_one_ehr_pushes_no_ehr_key, a_selected_ehr_id_is_the_tie_break_where_it_is, a_version_outranks_the_ehr_and_the_ehr_outranks_its_status, an_ehr_only_query_is_tie_broken_on_the_ehr_id, an_ehr_status_with_no_ehr_class_is_keyed_on_its_uid, under_distinct_a_bounded_page_with_an_unpinned_function_is_refused, under_distinct_a_function_of_selected_paths_is_pinned_by_them, under_distinct_a_limit_with_a_function_of_an_unselected_path_is_refused, under_distinct_a_limit_with_a_value_from_outside_the_row_is_refused, under_distinct_an_ehr_only_query_gets_no_ehr_id_column, under_distinct_an_unpinned_function_with_no_limit_is_answered, without_distinct_a_function_column_is_pinned_by_the_row_key
  • crates/openehr-federation/tests/it/aql/rules.rs: an_undirected_aggregate_is_refused_with_its_reason
  • crates/openehr-federation/tests/it/combine.rs: a_node_that_does_not_answer_one_row_is_refused, a_value_of_the_wrong_kind_refuses_its_node_and_leaves_no_row, a_value_the_gateway_cannot_write_exactly_is_an_error_never_a_rounding, an_aggregate_over_no_value_is_null_and_a_count_is_zero, an_avg_whose_sum_and_count_disagree_refuses_its_node, avg_over_integers_is_the_nearest_integer_a_tie_to_the_even_one, avg_over_integers_rounds_once_over_the_federation_sum_and_count, avg_with_a_real_node_sum_is_the_decimal_mean, every_recombined_function_is_the_aggregate_over_the_union, min_and_max_over_date_times_compare_instants_and_keep_the_written_value, reals_add_in_decimal_arithmetic, the_recombination_does_not_depend_on_the_order_the_nodes_answered_in, the_recombined_row_is_cut_at_the_limit_and_offset, values_no_one_order_compares_refuse_every_node_that_holds_one, with_no_answer_there_is_no_row
  • crates/openehr-federation/tests/it/dedup/distinct.rs: under_dedup_a_node_cut_on_two_case_variants_is_refused
  • crates/openehr-federation/tests/it/dedup/order.rs: a_case_variant_copy_at_a_page_edge_ranks_as_its_version_and_keeps_its_text, a_node_that_orders_uids_byte_for_byte_across_case_is_refused_at_its_cut, a_suppressed_copy_does_not_take_a_slot_of_the_limit, without_dedup_a_uid_orders_by_code_point_as_sent
  • crates/openehr-federation/tests/it/dedup/properties.rs: dedup_with_order_by_limit_and_a_bounded_page_is_the_page_of_the_deduplicated_union
  • crates/openehr-federation/tests/it/distinct.rs: a_duplicate_straddling_a_page_edge_takes_one_slot, distinct_runs_before_the_limit, distinct_with_order_by_and_a_bounded_page_is_the_page_of_the_distinct_union, distinct_without_order_by_keeps_limit_distinct_values_of_the_union
  • crates/openehr-federation/tests/it/merge.rs: a_cut_node_out_of_the_federation_order_is_refused, a_node_whose_k_plus_n_rows_disagree_with_the_federation_order_is_refused, an_uncut_node_may_answer_in_any_order, the_bounded_offset_page_is_the_page_of_the_full_merged_set, the_bounded_offset_page_matches_the_full_merge_for_every_split, the_merge_does_not_depend_on_the_order_the_nodes_answered_in, the_pushed_down_merge_is_the_order_and_limit_of_the_union

CP-33

41 tests.

  • app/ferrofed-server/tests/it/caller_bindings.rs: a_caller_with_no_query_has_no_binding, another_caller_never_sees_the_binding, the_caller_who_queried_is_routed_by_its_binding_first
  • app/ferrofed-server/tests/it/contribution_write.rs: a_contribution_without_a_target_is_never_probed_for
  • app/ferrofed-server/tests/it/created_ehr_id.rs: a_binding_placing_the_ehr_id_at_a_refuses_a_create_at_b, a_create_at_b_of_an_ehr_id_the_index_holds_at_a_is_refused_and_sends_nothing, an_unknown_ehr_id_is_created_where_named_and_then_indexed_there, two_creates_racing_for_one_ehr_id_at_two_members_raise_the_index_insert_alarm
  • app/ferrofed-server/tests/it/e2e/track11.rs (e2e): a_read_and_a_query_of_the_duplicate_are_refused_and_only_the_probe_reaches_a_node, a_versioned_write_no_earlier_step_routes_is_refused_and_no_node_is_asked, once_the_index_holds_both_claimants_no_read_or_write_reaches_either_node
  • app/ferrofed-server/tests/it/e2e/track6.rs (e2e): a_follow_up_read_of_a_row_reaches_the_cdr_that_holds_it_with_its_uid_unchanged, an_unseen_ehr_id_is_probed_read_only_and_a_write_to_it_is_never_probed
  • app/ferrofed-server/tests/it/ehr_id_collision.rs: a_binding_collision_names_both_claimants_and_raises_one_incident, a_probe_collision_is_a_409_naming_both_with_one_incident_and_neither_is_read, a_write_in_collision_is_refused_409_and_reaches_no_node, an_ehr_id_that_is_no_uuid_is_never_named_by_an_incident, an_explicit_target_routes_an_ehr_id_in_collision_to_the_named_node, no_incident_or_log_line_names_a_patient_identifier, the_index_insert_alarm_fires_once_and_the_index_then_routes_neither, the_querying_callers_binding_finds_the_collision_first_and_routes_neither
  • app/ferrofed-server/tests/it/ehr_scope.rs: two_members_holding_the_ehr_id_are_a_409_and_neither_is_queried
  • app/ferrofed-server/tests/it/follow_up.rs: a_version_read_reaches_the_node_byte_identical_and_carries_no_identifier, an_imported_copy_is_read_at_the_endpoint_the_client_names, an_imported_copy_is_read_where_the_path_ehr_id_routes_never_at_its_creator
  • app/ferrofed-server/tests/it/path_ehr_id/order.rs: a_held_binding_wins_over_the_index, a_step_naming_two_members_names_no_owner_and_no_later_step_picks_one, the_explicit_target_wins_over_a_binding_and_the_index, the_index_answers_when_no_target_and_no_binding_does
  • app/ferrofed-server/tests/it/path_ehr_id/probe.rs: a_read_no_earlier_step_routes_goes_to_the_one_member_the_probe_finds, a_read_of_the_ehr_itself_is_answered_by_the_owners_probe_answer, a_resolution_teaches_the_index_and_a_follow_up_goes_to_the_resolving_member, the_index_never_overrides_an_explicit_target, the_probe_teaches_the_index_and_a_later_write_is_routed_by_it_unprobed
  • app/ferrofed-server/tests/it/path_ehr_id/refusals.rs: a_member_answering_the_probe_with_an_error_leaves_the_owner_unknown, a_member_that_does_not_answer_the_probe_in_time_leaves_the_owner_unknown, a_read_no_member_holds_is_a_404_no_destination, a_write_no_earlier_step_routes_is_a_400_and_probes_nobody, two_members_holding_the_ehr_id_are_a_409_naming_both_and_neither_is_read
  • app/ferrofed-server/tests/it/versioned_write.rs: a_versioned_write_the_index_routes_reaches_its_controlling_cdr_unprobed, no_write_without_a_target_is_ever_probed_for

CP-33a

3 tests.

  • tools/ferrofed-testkit/tests/it/e2e/admission.rs (e2e): a_candidate_sharing_a_members_system_id_is_reported_and_never_admitted
  • tools/ferrofed-testkit/tests/it/e2e/node_profile.rs (e2e): ferroehr_is_checked_against_the_identifier_integrity_conditions
  • tools/ferrofed-testkit/tests/it/e2e/node_profile/ehrbase.rs (e2e): ehrbase_is_checked_against_the_identifier_integrity_conditions

CP-34

30 tests.

  • app/ferrofed-server/src/facade/route/fan_out.rs: a_failed_member_is_never_reported_as_overall_success
  • app/ferrofed-server/tests/it/definition.rs: a_definition_request_carries_only_what_its_operation_declares, a_definition_request_without_a_target_is_refused_and_no_node_is_asked, a_malformed_declared_value_is_refused_before_the_missing_target, a_nodes_own_error_passes_through_as_the_node_sent_it, a_star_an_unknown_endpoint_and_several_endpoints_are_refused, a_template_list_is_the_one_named_nodes_answer_and_never_a_union, a_template_upload_with_a_target_reaches_only_that_node_byte_identical, the_registry_keeps_its_stored_queries_and_templates_still_route_to_one_node, without_the_registry_a_stored_query_definition_is_the_named_nodes, without_the_registry_a_versioned_stored_query_put_in_another_media_type_is_refused, without_the_registry_a_versioned_stored_query_put_is_the_named_nodes
  • app/ferrofed-server/tests/it/e2e/track9_surface.rs (e2e): a_definition_request_routes_to_the_one_named_node
  • app/ferrofed-server/tests/it/its_rest_areas/definition.rs: the_definition_declaration_states_that_a_request_goes_to_the_one_named_node, the_definition_declaration_states_the_template_fan_out_only_where_offered, the_definition_declaration_states_where_stored_queries_are_held
  • app/ferrofed-server/tests/it/options.rs: the_definition_area_declares_nothing_offered, the_template_fan_out_upload_follows_the_configuration
  • app/ferrofed-server/tests/it/stored/declaration.rs: without_the_registry_a_definition_is_routed_and_no_name_is_invoked
  • app/ferrofed-server/tests/it/template_fan_out.rs: a_definition_request_other_than_an_upload_still_routes_to_one_node, a_member_past_its_timeout_is_reported_and_the_others_keep_the_template, a_named_subset_reaches_only_its_members_and_reports_the_rest_excluded, a_plain_upload_naming_no_endpoint_never_fans_out, a_plain_upload_naming_one_endpoint_routes_to_that_node_alone, a_rejecting_nodes_message_is_carried_and_no_other_body_is, a_star_beside_an_organisation_naming_fewer_members_is_a_conflict, every_member_accepting_answers_success_with_every_member_named, every_member_rejecting_is_a_failed_dependency_naming_each, with_one_member_rejecting_the_answer_is_partial_and_names_it, with_the_setting_off_a_star_upload_is_refused_and_nothing_is_sent

CP-35

13 tests.

  • app/ferrofed-server/tests/it/e2e/attributes.rs (e2e): the_example_query_adds_each_nodes_attributes_over_two_cdr_nodes
  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/track1.rs (e2e): an_unmodified_client_gets_one_single_cdr_shaped_result_set, the_columns_are_the_same_whichever_node_answers_first
  • app/ferrofed-server/tests/it/endpoint_attributes.rs: a_query_selecting_no_attribute_keeps_the_single_cdr_row_shape, an_alias_resolves_a_collision_and_both_columns_survive, an_alias_that_leaves_the_collision_standing_is_refused_400, the_example_query_answers_the_example_columns_and_rows
  • app/ferrofed-server/tests/it/facade/query.rs: a_patient_query_is_one_result_set_over_both_nodes
  • crates/openehr-federation/tests/it/aql/attribute.rs: a_query_selecting_no_attribute_keeps_the_single_cdr_shape, an_alias_resolves_the_collision_and_both_columns_survive, an_alias_that_leaves_the_collision_standing_is_refused, the_example_query_names_its_attributes_and_asks_no_node_for_them

CP-36

41 tests.

  • app/ferrofed-server/tests/it/consent.rs: a_directed_query_reaches_the_node_that_checks_consent_itself, a_member_the_prefilter_denies_is_reported_and_never_contacted, a_member_the_prefilter_leaves_in_is_asked_and_its_refusal_still_reported, a_node_the_localizer_names_still_refuses_and_the_query_succeeds, a_prefilter_that_cannot_answer_leaves_every_candidate_to_its_node, the_prefilter_runs_after_localization_over_its_candidates_only, with_no_consent_service_a_node_refusal_is_reported_and_the_query_succeeds
  • app/ferrofed-server/tests/it/consent_everywhere.rs: the_read_by_subject_never_contacts_a_member_the_prefilter_denies, the_read_by_subject_whose_holders_are_all_denied_is_consent_denied
  • app/ferrofed-server/tests/it/consent_withheld/mod.rs: a_read_by_subject_another_member_holds_is_served_with_the_exclusion_withheld, a_read_by_subject_only_a_withheld_member_holds_answers_as_one_no_member_holds, a_withheld_exclusion_is_reported_as_a_member_without_the_patient, a_withheld_exclusion_reads_as_the_others_when_the_crossref_cannot_answer, a_withheld_exclusion_reads_exactly_as_a_member_that_does_not_know_the_patient, by_default_the_exclusion_is_disclosed_and_declared, the_configured_setting_withholds_the_exclusion_and_is_declared, with_disclosure_the_exclusion_stays_consent_denied
  • app/ferrofed-server/tests/it/consent_withheld/node.rs: a_node_refusal_is_reported_as_a_member_without_the_patient, a_node_refusal_reads_exactly_as_a_member_that_does_not_know_the_patient, a_read_by_subject_the_holder_refuses_answers_as_one_no_member_holds, a_routed_read_the_node_refuses_answers_subject_unavailable, an_ask_all_probe_the_holder_refuses_answers_as_one_no_member_holds, with_disclosure_a_node_refusal_stays_consent_denied
  • app/ferrofed-server/tests/it/consent_withheld/not_asked.rs: a_withheld_deployment_answers_a_prefilter_that_did_not_ask_as_one_that_found_nothing
  • app/ferrofed-server/tests/it/consent_withheld/routed.rs: a_read_of_an_ehr_id_the_prefilter_excluded_is_left_to_its_node, a_targeted_read_the_node_refuses_reads_exactly_as_one_the_node_cannot_find, an_ask_all_probe_a_member_refuses_reads_exactly_as_one_no_member_answers
  • app/ferrofed-server/tests/it/contact_point/withheld.rs: a_restricted_patient_and_an_unknown_one_answer_alike, an_excluded_member_and_one_without_the_patient_answer_alike, the_deployments_own_caller_still_sees_the_exclusion_disclosed
  • app/ferrofed-server/tests/it/e2e/pixm.rs (e2e): a_pix_resolved_query_asks_only_the_member_that_knows_the_patient
  • app/ferrofed-server/tests/it/e2e/track7.rs (e2e): a_directed_query_is_consent_checked_at_the_node, a_member_the_consent_service_admits_still_refuses_and_the_query_succeeds, a_member_the_consent_service_denies_is_reported_and_never_dispatched_to, with_no_consent_service_a_node_refusal_is_reported_and_the_query_succeeds
  • app/ferrofed-server/tests/it/mitz/decision.rs: a_denial_and_a_failure_together_deny_one_and_leave_the_other_to_its_node, a_member_mitz_denies_is_consent_denied_and_never_asked, a_member_mitz_permits_is_asked_and_its_node_still_decides
  • app/ferrofed-server/tests/it/pdqm/flow.rs: an_identifier_the_supplier_knows_no_patient_for_is_not_resolved_anywhere
  • app/ferrofed-server/tests/it/resolution.rs: a_member_the_patient_is_not_known_at_is_not_resolved_and_never_asked, a_patient_known_nowhere_is_200_with_no_rows_and_every_member_not_resolved

CP-37

19 tests.

  • app/ferrofed-server/tests/it/directive.rs: a_selected_endpoint_attribute_is_added_to_the_rows_and_asked_of_no_node
  • app/ferrofed-server/tests/it/e2e/attributes.rs (e2e): the_example_query_adds_each_nodes_attributes_over_two_cdr_nodes
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): a_directive_selects_the_node_set_and_leaves_the_row_shape_alone
  • app/ferrofed-server/tests/it/endpoint_attributes.rs: a_query_selecting_no_attribute_keeps_the_single_cdr_row_shape, every_attribute_reads_the_registry_entry_of_its_endpoint, ordering_on_an_attribute_is_refused_400_before_any_node_is_asked, the_example_query_answers_the_example_columns_and_rows, under_distinct_a_shared_organisation_collapses_the_rows, under_distinct_an_endpoint_id_keeps_the_rows_of_two_endpoints_apart
  • crates/openehr-federation/tests/it/aql/attribute.rs: a_query_selecting_no_attribute_keeps_the_single_cdr_shape, every_attribute_the_table_lists_is_selectable, ordering_on_an_attribute_is_refused_with_or_without_a_limit, the_example_query_names_its_attributes_and_asks_no_node_for_them, under_distinct_the_node_is_asked_only_its_own_columns
  • crates/openehr-federation/tests/it/attributes.rs: distinct_on_attributes_alone_keeps_one_row_per_value_and_refuses_no_cut_node, each_row_keeps_the_attributes_of_its_endpoint_in_the_tier_order, under_distinct_a_shared_attribute_value_collapses_the_rows, under_distinct_rows_of_two_endpoints_are_two_values, without_an_order_each_row_keeps_its_endpoint_attributes

CP-40

49 tests.

  • app/ferrofed-server/tests/it/definition.rs: the_registry_keeps_its_stored_queries_and_templates_still_route_to_one_node
  • app/ferrofed-server/tests/it/e2e/stored_postgres.rs (e2e): a_row_naming_its_patient_by_a_literal_is_never_served_or_run, a_version_one_instance_stored_is_run_by_name_at_the_other, two_gateways_racing_one_new_version_store_exactly_one
  • app/ferrofed-server/tests/it/e2e/track9_surface.rs (e2e): a_definition_fan_out_reports_a_one_node_rejection_as_partial, a_stored_query_is_held_at_the_gateway_and_runs_by_name_over_both_members
  • app/ferrofed-server/tests/it/its_rest_areas/definition.rs: the_definition_declaration_states_the_distribution_only_where_offered
  • app/ferrofed-server/tests/it/query_get.rs: a_stored_get_reads_a_q_key_as_a_query_parameter, a_stored_query_runs_by_get_with_and_without_a_version
  • app/ferrofed-server/tests/it/stored/declaration.rs: options_declares_the_registry_and_the_methods_it_serves
  • app/ferrofed-server/tests/it/stored/files.rs: a_definition_file_is_read_listed_and_run_by_name, a_held_version_put_naming_members_at_a_read_only_registry_is_a_405, a_put_at_a_read_only_registry_is_a_405_naming_the_read_methods, the_admin_distribution_at_a_read_only_registry_is_a_405_allowing_nothing
  • app/ferrofed-server/tests/it/stored/held.rs: a_held_definition_naming_its_patient_by_a_literal_refuses_the_start, a_literal_a_shared_store_gains_after_the_start_is_never_served
  • app/ferrofed-server/tests/it/stored/invocation.rs: a_failing_member_fails_the_stored_query_and_the_envelope_still_names_it, a_stored_query_invoked_by_name_fans_out_and_names_the_gateways_definition, no_version_runs_the_latest_and_a_prefix_runs_the_highest_it_matches, query_parameters_bind_into_the_stored_query_as_if_submitted_inline
  • app/ferrofed-server/tests/it/stored/reserved.rs: a_put_into_the_reserved_namespace_is_refused_and_the_held_text_stands, a_store_holding_a_definition_in_the_reserved_namespace_refuses_the_start, each_section_query_runs_by_name_and_no_patient_identifier_reaches_a_node, the_section_queries_are_listed_and_read_at_their_immutable_version
  • app/ferrofed-server/tests/it/stored/storage.rs: a_definition_naming_the_patient_by_a_literal_is_refused_at_put, a_definition_the_rewrite_refuses_whatever_is_bound_is_refused_at_put, a_second_put_of_a_held_name_and_version_is_refused_and_the_text_stands, a_stored_definition_reads_back_as_an_its_rest_stored_query_and_lists, a_stored_version_survives_a_restart_and_stays_immutable, the_store_holds_no_identifier_after_a_definition_is_stored_and_invoked
  • app/ferrofed-server/tests/it/stored_fan_out.rs: a_targeted_definition_is_refused_for_distribution_and_stays_executable, an_invocation_runs_the_registry_aql_even_where_a_nodes_copy_differs, config_check_refuses_definition_fan_out_without_the_registry, options_declares_definition_fan_out_only_where_offered_beside_the_registry, the_drift_report_names_matching_differing_and_missing_members, with_every_member_failing_the_registry_still_holds_the_definition, with_one_member_failing_the_distribution_is_partial_and_the_registry_holds_it, with_the_setting_off_a_get_naming_members_is_refused_and_reads_nothing, with_the_setting_off_a_put_naming_members_is_refused_and_stores_nothing
  • app/ferrofed-server/tests/it/stored_redistribution.rs: a_redistribution_every_member_rejects_is_a_424_and_the_registry_is_unchanged, a_redistribution_one_member_rejects_is_partial_and_the_registry_is_unchanged, a_second_put_of_a_held_version_is_refused_in_every_form, the_admin_action_exists_only_on_the_admin_listener, the_admin_action_reaches_a_member_admitted_after_the_distribution, the_admin_action_refuses_a_held_targeted_definition, the_admin_action_refuses_what_it_cannot_distribute_and_sends_nothing, the_admin_action_sends_the_held_version_to_the_member_that_missed_it, the_admin_listener_is_refused_off_loopback_without_allow_remote, without_distribution_offered_the_admin_action_is_refused

Track 1

3 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/track1.rs (e2e): an_unmodified_client_gets_one_single_cdr_shaped_result_set, the_columns_are_the_same_whichever_node_answers_first

Track 2

7 tests.

  • app/ferrofed-server/tests/it/e2e/crossref.rs (e2e): both_patient_carriers_resolve_to_the_same_rows_over_two_cdr_nodes, one_result_set_over_two_cdr_nodes_and_no_identifier_on_the_wire
  • app/ferrofed-server/tests/it/e2e/pixm.rs (e2e): a_patient_fed_at_both_members_resolves_through_pix_at_both, a_pix_resolved_query_asks_only_the_member_that_knows_the_patient
  • app/ferrofed-server/tests/it/e2e/santempi.rs (e2e): a_patient_each_member_fed_to_santempi_is_answered_by_both
  • app/ferrofed-server/tests/it/e2e/track2.rs (e2e): a_selected_subject_column_is_the_input_and_never_asked_of_a_node, the_pix_manager_resolves_both_carriers_to_each_nodes_own_ehr_id

Track 3

5 tests.

  • app/ferrofed-server/tests/it/e2e/attributes.rs (e2e): the_example_query_adds_each_nodes_attributes_over_two_cdr_nodes
  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): a_directive_selects_the_node_set_and_leaves_the_row_shape_alone, a_named_member_where_the_patient_does_not_resolve_is_reported_not_errored, an_undirected_query_asks_only_the_members_the_localizer_names, the_endpoint_header_selects_what_the_directive_selects

Track 4

7 tests.

  • app/ferrofed-server/tests/it/e2e/track3.rs (e2e): an_undirected_query_asks_only_the_members_the_localizer_names
  • app/ferrofed-server/tests/it/e2e/track4.rs (e2e): a_client_wait_shortens_the_budget_and_never_extends_it, a_node_answering_an_error_fails_the_query_424_and_is_named_node_error, a_slow_node_is_abandoned_at_the_per_node_timeout_and_named_time_out, an_unreachable_node_fails_the_query_504_and_is_named_offline, found_nowhere_and_consent_denied_are_200_and_never_424, partial_returns_the_answering_nodes_rows_only_where_offered

Track 5

4 tests.

  • app/ferrofed-server/tests/it/e2e/aggregate.rs (e2e): an_undirected_avg_is_the_mean_weighted_by_the_counts_each_node_returns
  • app/ferrofed-server/tests/it/e2e/track5.rs (e2e): an_undirected_aggregate_is_recombined_or_refused_and_a_directed_one_answered, duplicates_pass_through_by_default_and_distinct_folds_them_at_the_tier, order_by_and_limit_return_the_global_top_rows_deterministically

Track 6

4 tests.

  • app/ferrofed-server/tests/it/e2e/commit.rs (e2e): a_versioned_write_reaches_its_controlling_node_and_never_another
  • app/ferrofed-server/tests/it/e2e/track6.rs (e2e): a_follow_up_read_of_a_row_reaches_the_cdr_that_holds_it_with_its_uid_unchanged, a_new_ehr_is_created_at_the_one_node_the_client_names, an_unseen_ehr_id_is_probed_read_only_and_a_write_to_it_is_never_probed

Track 7

6 tests.

  • app/ferrofed-server/tests/it/e2e/track7.rs (e2e): a_caller_that_does_not_authenticate_reaches_no_node, a_directed_query_is_consent_checked_at_the_node, a_member_the_consent_service_admits_still_refuses_and_the_query_succeeds, a_member_the_consent_service_denies_is_reported_and_never_dispatched_to, each_node_is_reached_with_its_onward_token_and_told_the_caller, with_no_consent_service_a_node_refusal_is_reported_and_the_query_succeeds

Track 9

7 tests.

  • app/ferrofed-server/tests/it/e2e/commit.rs (e2e): a_composition_committed_through_the_gateway_lands_byte_identical_at_one_node, a_versioned_write_reaches_its_controlling_node_and_never_another
  • app/ferrofed-server/tests/it/e2e/track9.rs (e2e): an_unmodified_client_given_only_the_base_url_reads_and_writes_at_a_prefix
  • app/ferrofed-server/tests/it/e2e/track9_surface.rs (e2e): a_definition_fan_out_reports_a_one_node_rejection_as_partial, a_definition_request_routes_to_the_one_named_node, a_stored_query_is_held_at_the_gateway_and_runs_by_name_over_both_members, the_self_description_lists_the_members_and_demographic_answers_as_declared

Track 10

25 tests.

  • app/ferrofed-engine/tests/it/fapi2/mod.rs: a_callers_token_carrying_the_patient_is_never_sent, no_carrier_to_the_server_or_the_node_names_the_patient
  • app/ferrofed-server/tests/it/access/accessor.rs: the_professional_and_the_patient_reach_no_log_or_metric
  • app/ferrofed-server/tests/it/access/emergency.rs: the_mark_carries_no_patient_identifier_to_a_log_or_a_node
  • app/ferrofed-server/tests/it/access/query.rs: no_patient_template_or_caller_reaches_the_log_a_metric_or_a_node
  • app/ferrofed-server/tests/it/contact_point/relayed.rs: no_iua_person_id_reaches_a_node
  • app/ferrofed-server/tests/it/e2e/track10.rs (e2e): a_committed_dv_identifier_arrives_at_a_ferroehr_node_byte_identical, the_four_positions_reach_neither_ferroehr_node_on_any_path
  • app/ferrofed-server/tests/it/fhir/header.rs: the_header_is_the_supplier_s_and_no_header_value_reaches_a_node
  • app/ferrofed-server/tests/it/fhir/receive.rs: a_document_is_written_to_its_member_by_its_ehr_id_alone
  • app/ferrofed-server/tests/it/fhir/summary.rs: the_summary_is_an_eps_document_from_both_members_and_no_identifier_reaches_a_node
  • app/ferrofed-server/tests/it/pdqm/flow.rs: neither_identifier_reaches_a_log_line_a_metric_or_a_node
  • app/ferrofed-server/tests/it/probed_ehr_id.rs: a_read_whose_ehr_id_is_a_uuid_is_still_resolved_by_the_probe, a_read_whose_ehr_id_is_no_uuid_and_that_nothing_routes_is_refused_and_probes_nobody, an_ehr_id_that_is_no_uuid_is_forwarded_to_the_named_node_alone_and_then_indexed
  • app/ferrofed-server/tests/it/stored/reserved.rs: each_section_query_runs_by_name_and_no_patient_identifier_reaches_a_node
  • app/ferrofed-server/tests/it/traces/traceparent.rs: an_identifier_hidden_in_the_clients_trace_id_reaches_no_node_and_no_span
  • app/ferrofed-server/tests/it/track10/mock.rs: a_committed_dv_identifier_arrives_at_the_node_byte_identical, a_panicking_handler_holding_the_identifier_leaves_it_on_neither_stderr_nor_the_log, the_identifier_in_a_party_identified_predicate_reaches_no_node, the_identifier_in_a_projection_reaches_no_node, the_identifier_in_an_external_ref_predicate_reaches_no_node, the_identifier_in_the_ehr_id_slot_is_never_probed_at_a_node, the_identifier_in_the_query_string_or_a_header_reaches_no_node, the_identifier_on_the_single_node_route_reaches_no_node

Track 11

4 tests.

  • app/ferrofed-server/tests/it/e2e/track11.rs (e2e): a_read_and_a_query_of_the_duplicate_are_refused_and_only_the_probe_reaches_a_node, a_versioned_write_no_earlier_step_routes_is_refused_and_no_node_is_asked, once_the_index_holds_both_claimants_no_read_or_write_reaches_either_node
  • tools/ferrofed-testkit/tests/it/e2e/admission.rs (e2e): a_candidate_sharing_a_members_system_id_is_reported_and_never_admitted