Allow alpha and beta pre-release labels in release workflow version validation #2379
+13
−13
GitHub Actions / Test Report - test/Bff.Tests
succeeded
Mar 2, 2026 in 1s
579 passed, 0 failed and 3 skipped
✅ bff/test/Bff.Tests/bin/Release/net10.0/TestResults/Bff.Tests.trx
582 tests were completed in 60s with 579 passed, 0 failed and 3 skipped.
✅ Bff.Tests.Blazor.BffBlazorTests
✅ Can_get_home(setup: BffWithFrontend)
✅ Can_get_home(setup: ManuallyConfiguredBff)
✅ Can_get_home(setup: V4Bff)
✅ Can_get_secure_when_logged_in(setup: BffWithFrontend)
✅ Can_get_secure_when_logged_in(setup: ManuallyConfiguredBff)
✅ Can_get_secure_when_logged_in(setup: V4Bff)
✅ Cannot_get_secure_without_loggin_in(setup: BffWithFrontend)
✅ Cannot_get_secure_without_loggin_in(setup: ManuallyConfiguredBff)
✅ Cannot_get_secure_without_loggin_in(setup: V4Bff)
✅ Without_serverside_sessions_add_blazorserver_fails(setup: BffWithFrontend)
✅ Without_serverside_sessions_add_blazorserver_fails(setup: ManuallyConfiguredBff)
✅ Without_serverside_sessions_add_blazorserver_fails(setup: V4Bff)
✅ Bff.Tests.Blazor.ServerSideTokenStoreTests
✅ Can_add_retrieve_and_remove_tokens
✅ Bff.Tests.PublicApiVerificationTests
✅ VerifyPublicApi_Bff
✅ VerifyPublicApi_Bff_Blazor
✅ VerifyPublicApi_Bff_Blazor_Client
✅ VerifyPublicApi_Bff_EntityFramework
✅ VerifyPublicApi_Bff_Yarp
✅ Duende.Bff.Blazor.Client.UnitTests.AntiForgeryHandlerTests
✅ Adds_expected_header
✅ Duende.Bff.Blazor.Client.UnitTests.BffClientAuthenticationStateProviderTests
✅ timer_stops_when_user_logs_out
✅ when_anonymous_user_in_persistent_state_GetAuthState_returns_anonymous_and_does_not_poll
✅ when_no_user_in_persistent_state_GetAuthState_polls_user_endpoint
✅ when_user_in_persistent_state_GetAuthState_returns_that_user_and_then_polls_user_endpoint
✅ Duende.Bff.Blazor.Client.UnitTests.FetchUserServiceTests
✅ GetUserAsync_maps_claims_into_ClaimsPrincipal
✅ GetUserAsync_returns_anonymous_when_http_request_fails
✅ Duende.Bff.Blazor.Client.UnitTests.ServiceCollectionExtensionsTests
✅ AddBffBlazorClient_can_set_options_with_callback
✅ AddLocalApiHttpClient_configures_HttpClient_base_address
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/\", configuredRemotePath: \"remote-apis\", expectedBaseAddress: \"https://example.com/remote-apis/\")
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/\", configuredRemotePath: null, expectedBaseAddress: \"https://example.com/remote-apis/\")
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/with/base/path/\", configuredRemotePath: \"/custom/route/to/apis\", expectedBaseAddress: \"https://example.com/with/base/path/custom/route/to\"···)
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/with/base/path/\", configuredRemotePath: \"custom/route/to/apis\", expectedBaseAddress: \"https://example.com/with/base/path/custom/route/to\"···)
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/with/base/path\", configuredRemotePath: \"/custom/route/to/apis\", expectedBaseAddress: \"https://example.com/with/base/path/custom/route/to\"···)
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/with/base/path\", configuredRemotePath: \"custom/route/to/apis\", expectedBaseAddress: \"https://example.com/with/base/path/custom/route/to\"···)
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/with/base/path\", configuredRemotePath: null, expectedBaseAddress: \"https://example.com/with/base/path/remote-apis/\")
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com\", configuredRemotePath: \"custom/route/to/apis\", expectedBaseAddress: \"https://example.com/custom/route/to/apis/\")
✅ AddRemoteApiHttpClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com\", configuredRemotePath: null, expectedBaseAddress: \"https://example.com/remote-apis/\")
✅ When_base_address_option_is_default_AddBffBlazorClient_configures_HttpClient_base_address_from_host_env
✅ When_base_address_option_is_default_AddRemoteApiHttpClient_configures_HttpClient_base_address_from_host_env
✅ When_base_address_option_is_default_AddRemoteApiHttpClient_configures_HttpClient_base_address_from_host_env_and_config_callback_is_respected
✅ When_base_address_option_is_default_AddRemoteApiHttpClient_for_typed_clients_configures_HttpClient_base_address_from_host_env
✅ When_base_address_option_is_default_AddRemoteApiHttpClient_for_typed_clients_configures_HttpClient_base_address_from_host_env_and_config_callback_is_respected
✅ When_base_address_option_is_set_AddBffBlazorClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com/\", expectedBaseAddress: \"https://example.com/\")
✅ When_base_address_option_is_set_AddBffBlazorClient_configures_HttpClient_base_address(configuredRemoteAddress: \"https://example.com\", expectedBaseAddress: \"https://example.com/\")
✅ Duende.Bff.EntityFramework.Tests.UserSessionStoreTests
✅ concurrent_deletes_with_exception_handler_and_detatching_should_succeed
✅ CreateUserSessionAsync_should_succeed
✅ CreateUserSessions_are_partitioned_per_frontend
✅ CreateUserSessions_sessions_are_unique_per_frontend
✅ DeleteUserSessionAsync_for_invalid_key_should_succeed
✅ DeleteUserSessionAsync_for_valid_key_should_succeed
✅ DeleteUserSessionAsync_respects_multi_frontends
✅ DeleteUserSessionsAsync_for_invalid_sid_should_do_nothing
✅ DeleteUserSessionsAsync_for_invalid_sub_and_sid_should_succeed
✅ DeleteUserSessionsAsync_for_invalid_sub_should_do_nothing
✅ DeleteUserSessionsAsync_for_missing_sub_and_sid_should_throw
✅ DeleteUserSessionsAsync_for_valid_sid_should_succeed
✅ DeleteUserSessionsAsync_for_valid_sub_and_sid_should_succeed
✅ DeleteUserSessionsAsync_for_valid_sub_should_succeed
✅ GetUserSessionAsync_for_invalid_key_should_return_null
✅ GetUserSessionAsync_for_valid_key_should_succeed
✅ GetUserSessionAsync_should_work_for_multi_frontends
✅ GetUserSessionsAsync_for_invalid_sid_should_return_empty
✅ GetUserSessionsAsync_for_invalid_sub_and_sid_should_succeed
✅ GetUserSessionsAsync_for_invalid_sub_should_return_empty
✅ GetUserSessionsAsync_for_missing_sub_and_sid_should_throw
✅ GetUserSessionsAsync_for_valid_sid_should_succeed
✅ GetUserSessionsAsync_for_valid_sub_and_sid_should_succeed
✅ GetUserSessionsAsync_for_valid_sub_should_succeed
✅ UpdateUserSessionAsync_for_invalid_key_should_succeed
✅ UpdateUserSessionAsync_should_succeed
✅ Duende.Bff.Tests.Benchmarks.BenchmarkTests+Login
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_AnonLocalEndpoint\")
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_ClientCredentialsToken\")
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_LocalEndpoint\")
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_login_to_default\")
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_login_to_frontend_3\")
✅ InvokeBenchmarksAsTests(benchmark: \"MultiFrontendBenchmarks\", testName: \"MultiFrontend_user_token\")
✅ Duende.Bff.Tests.Benchmarks.BenchmarkTests+Proxy
✅ InvokeBenchmarksAsTests(benchmark: \"SingleFrontendBenchmarks\", testName: \"SingleFrontend_AnonLocalEndpoint\")
✅ InvokeBenchmarksAsTests(benchmark: \"SingleFrontendBenchmarks\", testName: \"SingleFrontend_ClientCredentialsToken\")
✅ InvokeBenchmarksAsTests(benchmark: \"SingleFrontendBenchmarks\", testName: \"SingleFrontend_LocalEndpoint\")
✅ InvokeBenchmarksAsTests(benchmark: \"SingleFrontendBenchmarks\", testName: \"SingleFrontend_Login\")
✅ InvokeBenchmarksAsTests(benchmark: \"SingleFrontendBenchmarks\", testName: \"SingleFrontend_UserToken\")
✅ Duende.Bff.Tests.BffFrontendIndexTests
✅ After_login_index_document_is_returned
✅ Can_also_proxy_all_static_assets
✅ Can_customize_index_html
✅ Given_index_can_call_local_api
✅ Given_index_can_call_proxied_endpoint
✅ Index_document_is_returned_on_fallback_path
✅ IndexHtml_is_cached_but_refreshed_when_modifying_frontend
✅ Proxying_static_assets_works_with_path_based_routing
✅ static_assets_proxying_also_allows_query_strings
✅ When_proxying_static_assets_then_index_html_is_also_transformed
✅ When_using_StaticAssets_func_controls(indexHtmlOnly: False)
✅ When_using_StaticAssets_func_controls(indexHtmlOnly: True)
✅ Duende.Bff.Tests.BffFrontendMatchingTests
✅ Can_match_frontend_on_path
✅ Can_select_frontend_based_on_domain_name
✅ Given_single_frontend_then_is_selected
✅ Given_unmatched_frontend_then_default_frontend_is_disabled
✅ When_no_frontend_but_openid_config_then_all_endpoints_are_present
✅ When_no_frontend_matched_then_show_frontend_returns_none
✅ Will_also_respect_xforwarded_host
✅ Duende.Bff.Tests.BffFrontendSigninTests
✅ Can_add_frontends_using_AddFrontends_ExtensionMethod
✅ Can_get_home
✅ Can_hijack_login_and_logout_endpoints_and_call_default
✅ Can_hijack_management_endpoints(endpoint: \"/backchannel\")
✅ Can_hijack_management_endpoints(endpoint: \"/diagnostics\")
✅ Can_hijack_management_endpoints(endpoint: \"/login\")
✅ Can_hijack_management_endpoints(endpoint: \"/logout\")
✅ Can_hijack_management_endpoints(endpoint: \"/silent-login-callback\")
✅ Can_hijack_management_endpoints(endpoint: \"/silent-login\")
✅ Can_hijack_management_endpoints(endpoint: \"/user\")
✅ Can_login
✅ Can_login_perf
✅ can_signin_with_path_based_frontend
✅ cannot_access_secret_page_without_logging_in
✅ Default_settings_augment_frontend_settings
✅ Event_handlers_are_used
✅ Event_handlers_are_used_from_bff_defaults
✅ given_path_based_frontend_cannot_login_on_root
✅ given_path_based_frontend_login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix
✅ given_path_based_frontend_then_can_perform_silent_signin
✅ When_creating_new_frontend_old_config_is_not_reused
✅ When_only_providing_config_then_can_still_log_in
✅ When_only_providing_config_then_cannot_login_to_unmatched_frontend
✅ When_providing_oidc_config_this_is_used_for_matched_frontend
✅ When_updating_frontend_then_subsequent_api_call_uses_updated_token
✅ When_updating_frontend_then_subsequent_login_uses_new_cookiesettings
✅ When_updating_frontend_then_subsequent_login_uses_new_openid_connect_settings
✅ Duende.Bff.Tests.BffHostBuilder.HostBuilder_SessionTests
✅ Can_enable_inmemory_sessions
✅ can_run_using_entity_framework
✅ Can_run_without_session_storage
✅ Cannot_add_cleanup_host_without_entity_framework
✅ Will_cleanup_sessions
✅ Will_cleanup_sessions_even_if_in_other_host
✅ Duende.Bff.Tests.BffOptionsConfigurationTests
✅ calls_outside_http_context_can_get_cookie_configuration(setup: BffWithFrontend)
✅ calls_outside_http_context_can_get_cookie_configuration(setup: ManuallyConfiguredBff)
✅ calls_outside_http_context_can_get_cookie_configuration(setup: V4Bff)
✅ calls_outside_http_context_can_get_oidc_configuration(setup: BffWithFrontend)
✅ calls_outside_http_context_can_get_oidc_configuration(setup: ManuallyConfiguredBff)
✅ calls_outside_http_context_can_get_oidc_configuration(setup: V4Bff)
✅ Duende.Bff.Tests.BffRemoteApiTests
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_stored_named_token_should_forward_user_to_api
✅ When_logged_in_can_proxy_and_get_subject(requiredTokenType: User)
✅ When_logged_in_can_proxy_and_get_subject(requiredTokenType: UserOrClient)
✅ When_logged_in_can_proxy_and_get_subject(requiredTokenType: UserOrNone)
✅ When_not_logged_in_and_retrieving_optional_user_token_then_no_call_to_IUserTokenManager_should_be_made
✅ When_not_logged_in_can_get_token(requiredTokenType: Client)
✅ When_not_logged_in_can_get_token(requiredTokenType: UserOrClient)
✅ When_not_logged_in_can_get_token(requiredTokenType: UserOrNone)
✅ When_not_logged_in_cannot_get_required_user_token
✅ When_not_logged_in_UserOrClient_falls_through_to_client_token
✅ Duende.Bff.Tests.BffScenarioTests
✅ When_using_bff_as_host_and_client_credentials_token_manager_with_no_http_context_still_works
✅ Duende.Bff.Tests.BffWithoutExplicitFrontendTests
✅ Can_login
✅ Duende.Bff.Tests.Configuration.BffBuilderTests
✅ Can_add_frontends_in_multiple_calls
✅ Can_add_multiple_frontends
✅ Can_configure_frontends_in_configuration_as_string(useCdnIndexUrl: False)
✅ Can_configure_frontends_in_configuration_as_string(useCdnIndexUrl: True)
✅ Can_load_default_cookie_configuration
✅ Can_load_default_oidc_configuration
✅ Can_load_frontend_with_all_possible_values_from_configuration
✅ Can_load_frontend_with_all_values_from_configuration
✅ Can_load_frontend_with_minimal_values_from_configuration
✅ Can_load_frontend_with_proxy_config
✅ Cannot_add_duplicate_frontends
✅ When_config_file_is_updated_then_frontend_store_is_updated
✅ when_loading_frontend_default_config_is_applied
✅ When_updating_frontends_in_config_then_are_removed_from_Oidc_cache
⚪ Will_reject_invalid_configuration
✅ Duende.Bff.Tests.Configuration.ConfigBindingTests
✅ Can_load_remote_apis_at_runtime_from_multiple_config_sources
✅ Duende.Bff.Tests.Configuration.OptionsMonitorExplorationTests
✅ OptionMonitorsAreUpdatedAsynchronously
✅ Duende.Bff.Tests.ConventionTests
✅ All_async_methods_should_end_with_Async_and_have_cancellation_token_as_last_parameter
✅ All_interface_async_methods_should_have_cancellation_token_with_default
✅ All_strongly_typed_strings_are_readonly_struct
✅ All_strongly_typed_strings_have_internal_create_method
✅ All_strongly_typed_strings_Have_private_value
✅ All_strongly_typed_strings_should_have_only_expected_constructors
✅ All_strongly_typed_strings_should_have_public_constructor_that_throws
✅ All_types_in_Internal_namespace_should_be_internal
✅ All_types_not_in_Internal_namespace_should_be_sealed_or_static
✅ Duende.Bff.Tests.Diagnostics.FrontendCountDiagnosticEntryTests
✅ Should_print_the_number_of_frontends_during_defined_interval
✅ Duende.Bff.Tests.Endpoints.DPoPRemoteEndpointTests
✅ Can_call_dpop_protected_api_with_client_token
✅ Can_call_dpop_protected_api_with_user_token
✅ DPoP_htu_matches_yarp_destination_when_api_has_path_prefix
✅ HTU_values_are_correctly_verified_for_paths_and_subpaths(mappedPath: \"/api/foo\", targetPath: \"api/foo\", calledPath: \"api/foo/bar\")
✅ HTU_values_are_correctly_verified_for_paths_and_subpaths(mappedPath: \"/api/foo\", targetPath: \"api/foo\", calledPath: \"api/foo\")
✅ HTU_values_are_correctly_verified_for_paths_and_subpaths(mappedPath: \"/api/foo\", targetPath: \"foo\", calledPath: \"api/foo\")
✅ Duende.Bff.Tests.Endpoints.DPoPTestsWithManualAuthentication
✅ When_calling_api_endpoint_with_dpop_enabled_then_dpop_headers_are_sent
✅ When_logging_in_then_dpop_is_sent
✅ Duende.Bff.Tests.Endpoints.LocalEndpointTests
✅ authorization_policy_failure_should_return_403
✅ calls_to_anon_endpoint_should_allow_anonymous(setup: BffWithFrontend)
✅ calls_to_anon_endpoint_should_allow_anonymous(setup: ManuallyConfiguredBff)
✅ calls_to_anon_endpoint_should_allow_anonymous(setup: V4Bff)
✅ calls_to_authorized_local_endpoint_should_succeed(setup: BffWithFrontend)
✅ calls_to_authorized_local_endpoint_should_succeed(setup: ManuallyConfiguredBff)
✅ calls_to_authorized_local_endpoint_should_succeed(setup: V4Bff)
✅ calls_to_authorized_local_endpoint_without_csrf_should_succeed_without_antiforgery_header(setup: BffWithFrontend)
✅ calls_to_authorized_local_endpoint_without_csrf_should_succeed_without_antiforgery_header(setup: ManuallyConfiguredBff)
✅ calls_to_authorized_local_endpoint_without_csrf_should_succeed_without_antiforgery_header(setup: V4Bff)
✅ calls_to_local_endpoint_should_require_antiforgery_header(setup: BffWithFrontend)
✅ calls_to_local_endpoint_should_require_antiforgery_header(setup: ManuallyConfiguredBff)
✅ calls_to_local_endpoint_should_require_antiforgery_header(setup: V4Bff)
✅ calls_to_local_endpoint_without_csrf_should_not_require_antiforgery_header(setup: BffWithFrontend)
✅ calls_to_local_endpoint_without_csrf_should_not_require_antiforgery_header(setup: ManuallyConfiguredBff)
✅ calls_to_local_endpoint_without_csrf_should_not_require_antiforgery_header(setup: V4Bff)
✅ challenge_response_should_return_401(setup: BffWithFrontend)
✅ challenge_response_should_return_401(setup: ManuallyConfiguredBff)
✅ challenge_response_should_return_401(setup: V4Bff)
✅ challenge_response_when_response_handling_skipped_should_trigger_redirect_for_login(setup: BffWithFrontend)
✅ challenge_response_when_response_handling_skipped_should_trigger_redirect_for_login(setup: ManuallyConfiguredBff)
✅ challenge_response_when_response_handling_skipped_should_trigger_redirect_for_login(setup: V4Bff)
✅ fallback_policy_should_not_fail(setup: BffWithFrontend)
✅ fallback_policy_should_not_fail(setup: ManuallyConfiguredBff)
✅ fallback_policy_should_not_fail(setup: V4Bff)
✅ forbidden_api_call_should_return_403(setup: BffWithFrontend)
✅ forbidden_api_call_should_return_403(setup: ManuallyConfiguredBff)
✅ forbidden_api_call_should_return_403(setup: V4Bff)
✅ put_to_local_endpoint_should_succeed(setup: BffWithFrontend)
✅ put_to_local_endpoint_should_succeed(setup: ManuallyConfiguredBff)
✅ put_to_local_endpoint_should_succeed(setup: V4Bff)
✅ unauthenticated_api_call_should_return_401(setup: BffWithFrontend)
✅ unauthenticated_api_call_should_return_401(setup: ManuallyConfiguredBff)
✅ unauthenticated_api_call_should_return_401(setup: V4Bff)
✅ unauthenticated_calls_to_authorized_local_endpoint_should_fail(setup: BffWithFrontend)
✅ unauthenticated_calls_to_authorized_local_endpoint_should_fail(setup: ManuallyConfiguredBff)
✅ unauthenticated_calls_to_authorized_local_endpoint_should_fail(setup: V4Bff)
✅ unauthenticated_non_bff_endpoint_should_return_302_for_login(setup: BffWithFrontend)
✅ unauthenticated_non_bff_endpoint_should_return_302_for_login(setup: ManuallyConfiguredBff)
✅ unauthenticated_non_bff_endpoint_should_return_302_for_login(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.Management.BackchannelLogoutEndpointTests
✅ backchannel_logout_endpoint_for_incorrect_sid_should_not_logout_user(setup: BffWithFrontend)
✅ backchannel_logout_endpoint_for_incorrect_sid_should_not_logout_user(setup: ManuallyConfiguredBff)
✅ backchannel_logout_endpoint_for_incorrect_sid_should_not_logout_user(setup: V4Bff)
✅ backchannel_logout_endpoint_for_incorrect_sub_should_not_logout_user(setup: BffWithFrontend)
✅ backchannel_logout_endpoint_for_incorrect_sub_should_not_logout_user(setup: ManuallyConfiguredBff)
✅ backchannel_logout_endpoint_for_incorrect_sub_should_not_logout_user(setup: V4Bff)
✅ backchannel_logout_endpoint_should_signout(setup: BffWithFrontend)
✅ backchannel_logout_endpoint_should_signout(setup: ManuallyConfiguredBff)
✅ backchannel_logout_endpoint_should_signout(setup: V4Bff)
✅ backchannel_logout_should_allow_anonymous(setup: BffWithFrontend)
✅ backchannel_logout_should_allow_anonymous(setup: ManuallyConfiguredBff)
✅ backchannel_logout_should_allow_anonymous(setup: V4Bff)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_logout_all_sessions(setup: BffWithFrontend)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_logout_all_sessions(setup: ManuallyConfiguredBff)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_logout_all_sessions(setup: V4Bff)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_only_logout_one_session(setup: BffWithFrontend)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_only_logout_one_session(setup: ManuallyConfiguredBff)
✅ when_BackchannelLogoutAllUserSessions_is_false_backchannel_logout_should_only_logout_one_session(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.Management.LoginEndpointTests
✅ can_issue_silent_login_with_prompt_none(setup: BffWithFrontend)
✅ can_issue_silent_login_with_prompt_none(setup: ManuallyConfiguredBff)
✅ can_issue_silent_login_with_prompt_none(setup: V4Bff)
✅ can_use_prompt_supported_by_IdentityServer(setup: BffWithFrontend)
✅ can_use_prompt_supported_by_IdentityServer(setup: ManuallyConfiguredBff)
✅ can_use_prompt_supported_by_IdentityServer(setup: V4Bff)
✅ given_list_of_referers_when_receiving_referer_on_silent_callback_then_allowed(setup: BffWithFrontend)
✅ given_list_of_referers_when_receiving_referer_on_silent_callback_then_allowed(setup: ManuallyConfiguredBff)
✅ given_list_of_referers_when_receiving_referer_on_silent_callback_then_allowed(setup: V4Bff)
✅ given_list_of_referers_with_invalid_referer_then_returns_bad_request(setup: BffWithFrontend)
✅ given_list_of_referers_with_invalid_referer_then_returns_bad_request(setup: ManuallyConfiguredBff)
✅ given_list_of_referers_with_invalid_referer_then_returns_bad_request(setup: V4Bff)
✅ given_list_of_referers_without_missing_header_then_returns_bad_request(setup: BffWithFrontend)
✅ given_list_of_referers_without_missing_header_then_returns_bad_request(setup: ManuallyConfiguredBff)
✅ given_list_of_referers_without_missing_header_then_returns_bad_request(setup: V4Bff)
✅ login_endpoint_should_accept_returnUrl(setup: BffWithFrontend)
✅ login_endpoint_should_accept_returnUrl(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_accept_returnUrl(setup: V4Bff)
✅ login_endpoint_should_authenticatre_and_redirect_to_root(setup: BffWithFrontend)
✅ login_endpoint_should_authenticatre_and_redirect_to_root(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_authenticatre_and_redirect_to_root(setup: V4Bff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix_trailing_slash(setup: BffWithFrontend)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix_trailing_slash(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix_trailing_slash(setup: V4Bff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix(setup: BffWithFrontend)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_custom_prefix(setup: V4Bff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_root_prefix(setup: BffWithFrontend)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_root_prefix(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_challenge_and_redirect_to_root_with_root_prefix(setup: V4Bff)
✅ login_endpoint_should_not_accept_non_local_returnUrl(setup: BffWithFrontend)
✅ login_endpoint_should_not_accept_non_local_returnUrl(setup: ManuallyConfiguredBff)
✅ login_endpoint_should_not_accept_non_local_returnUrl(setup: V4Bff)
✅ login_endpoint_with_existing_session_should_challenge(setup: BffWithFrontend)
✅ login_endpoint_with_existing_session_should_challenge(setup: ManuallyConfiguredBff)
✅ login_endpoint_with_existing_session_should_challenge(setup: V4Bff)
✅ login_should_allow_anonymous(setup: BffWithFrontend)
✅ login_should_allow_anonymous(setup: ManuallyConfiguredBff)
✅ login_should_allow_anonymous(setup: V4Bff)
✅ login_with_unsupported_prompt_is_rejected(setup: BffWithFrontend)
✅ login_with_unsupported_prompt_is_rejected(setup: ManuallyConfiguredBff)
✅ login_with_unsupported_prompt_is_rejected(setup: V4Bff)
✅ silent_login_should_challenge_and_return_silent_login_html(setup: BffWithFrontend)
✅ silent_login_should_challenge_and_return_silent_login_html(setup: ManuallyConfiguredBff)
✅ silent_login_should_challenge_and_return_silent_login_html(setup: V4Bff)
✅ when_unauthenticated_silent_login_should_return_isLoggedIn_false(setup: BffWithFrontend)
✅ when_unauthenticated_silent_login_should_return_isLoggedIn_false(setup: ManuallyConfiguredBff)
✅ when_unauthenticated_silent_login_should_return_isLoggedIn_false(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.Management.LogoutEndpointTests
✅ can_logout_twice(setup: BffWithFrontend)
✅ can_logout_twice(setup: ManuallyConfiguredBff)
✅ can_logout_twice(setup: V4Bff)
✅ logout_endpoint_for_anonymous_user_without_sid_should_succeed(setup: BffWithFrontend)
✅ logout_endpoint_for_anonymous_user_without_sid_should_succeed(setup: ManuallyConfiguredBff)
✅ logout_endpoint_for_anonymous_user_without_sid_should_succeed(setup: V4Bff)
✅ logout_endpoint_for_authenticated_should_require_sid(setup: BffWithFrontend)
✅ logout_endpoint_for_authenticated_should_require_sid(setup: ManuallyConfiguredBff)
✅ logout_endpoint_for_authenticated_should_require_sid(setup: V4Bff)
✅ logout_endpoint_for_authenticated_user_without_sid_should_succeed(setup: BffWithFrontend)
✅ logout_endpoint_for_authenticated_user_without_sid_should_succeed(setup: ManuallyConfiguredBff)
✅ logout_endpoint_for_authenticated_user_without_sid_should_succeed(setup: V4Bff)
✅ logout_endpoint_for_authenticated_when_require_option_is_false_should_not_require_sid(setup: BffWithFrontend)
✅ logout_endpoint_for_authenticated_when_require_option_is_false_should_not_require_sid(setup: ManuallyConfiguredBff)
✅ logout_endpoint_for_authenticated_when_require_option_is_false_should_not_require_sid(setup: V4Bff)
✅ logout_endpoint_should_accept_returnUrl(setup: BffWithFrontend)
✅ logout_endpoint_should_accept_returnUrl(setup: ManuallyConfiguredBff)
✅ logout_endpoint_should_accept_returnUrl(setup: V4Bff)
✅ logout_endpoint_should_allow_anonymous(setup: BffWithFrontend)
✅ logout_endpoint_should_allow_anonymous(setup: ManuallyConfiguredBff)
✅ logout_endpoint_should_allow_anonymous(setup: V4Bff)
✅ logout_endpoint_should_reject_non_local_returnUrl(setup: BffWithFrontend)
✅ logout_endpoint_should_reject_non_local_returnUrl(setup: ManuallyConfiguredBff)
✅ logout_endpoint_should_reject_non_local_returnUrl(setup: V4Bff)
✅ logout_endpoint_should_signout(setup: BffWithFrontend)
✅ logout_endpoint_should_signout(setup: ManuallyConfiguredBff)
✅ logout_endpoint_should_signout(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.Management.ManagementBasePathTests
✅ custom_ManagementBasePath_should_affect_basepath(path: \"/login\", expectedStatusCode: Found)
✅ custom_ManagementBasePath_should_affect_basepath(path: \"/logout\", expectedStatusCode: Found)
✅ custom_ManagementBasePath_should_affect_basepath(path: \"/silent-login-callback\", expectedStatusCode: OK)
✅ custom_ManagementBasePath_should_affect_basepath(path: \"/silent-login\", expectedStatusCode: Found)
✅ custom_ManagementBasePath_should_affect_basepath(path: \"/user\", expectedStatusCode: Unauthorized)
✅ Duende.Bff.Tests.Endpoints.Management.UserEndpointTests
✅ can_enrich_claims_in_user_endpoint_by_performing_a_call_to_a_remote_service
✅ user_endpoint_for_authenticated_user_should_return_claims(setup: BffWithFrontend)
✅ user_endpoint_for_authenticated_user_should_return_claims(setup: ManuallyConfiguredBff)
✅ user_endpoint_for_authenticated_user_should_return_claims(setup: V4Bff)
✅ user_endpoint_for_authenticated_user_with_sid_should_return_claims_including_logout(setup: BffWithFrontend)
✅ user_endpoint_for_authenticated_user_with_sid_should_return_claims_including_logout(setup: ManuallyConfiguredBff)
✅ user_endpoint_for_authenticated_user_with_sid_should_return_claims_including_logout(setup: V4Bff)
✅ user_endpoint_for_authenticated_user_without_csrf_header_should_fail(setup: BffWithFrontend)
✅ user_endpoint_for_authenticated_user_without_csrf_header_should_fail(setup: ManuallyConfiguredBff)
✅ user_endpoint_for_authenticated_user_without_csrf_header_should_fail(setup: V4Bff)
✅ user_endpoint_for_unauthenticated_user_should_fail(setup: BffWithFrontend)
✅ user_endpoint_for_unauthenticated_user_should_fail(setup: ManuallyConfiguredBff)
✅ user_endpoint_for_unauthenticated_user_should_fail(setup: V4Bff)
✅ when_configured_user_endpoint_for_unauthenticated_user_should_return_200_and_empty(setup: BffWithFrontend)
✅ when_configured_user_endpoint_for_unauthenticated_user_should_return_200_and_empty(setup: ManuallyConfiguredBff)
✅ when_configured_user_endpoint_for_unauthenticated_user_should_return_200_and_empty(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.RemoteEndpointTests
✅ calls_to_remote_api_that_returns_forbidden_will_return_forbidden(setup: BffWithFrontend)
✅ calls_to_remote_api_that_returns_forbidden_will_return_forbidden(setup: ManuallyConfiguredBff)
✅ calls_to_remote_api_that_returns_forbidden_will_return_forbidden(setup: V4Bff)
✅ calls_to_remote_api_that_returns_unauthorized_will_return_unauthorized(setup: BffWithFrontend)
✅ calls_to_remote_api_that_returns_unauthorized_will_return_unauthorized(setup: ManuallyConfiguredBff)
✅ calls_to_remote_api_that_returns_unauthorized_will_return_unauthorized(setup: V4Bff)
✅ calls_to_remote_endpoint_should_fail_when_token_retrieval_fails(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_fail_when_token_retrieval_fails(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_fail_when_token_retrieval_fails(setup: V4Bff)
✅ calls_to_remote_endpoint_should_forward_client_token_to_api(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_forward_client_token_to_api(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_forward_client_token_to_api(setup: V4Bff)
✅ calls_to_remote_endpoint_should_forward_user_or_anonymous_to_api(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_forward_user_or_anonymous_to_api(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_forward_user_or_anonymous_to_api(setup: V4Bff)
✅ calls_to_remote_endpoint_should_forward_user_or_client_to_api(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_forward_user_or_client_to_api(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_forward_user_or_client_to_api(setup: V4Bff)
✅ calls_to_remote_endpoint_should_forward_user_to_api(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_forward_user_to_api(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_forward_user_to_api(setup: V4Bff)
✅ calls_to_remote_endpoint_should_require_csrf(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_require_csrf(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_require_csrf(setup: V4Bff)
✅ calls_to_remote_endpoint_should_send_token_from_token_retriever_when_token_retrieval_succeeds(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_should_send_token_from_token_retriever_when_token_retrieval_succeeds(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_should_send_token_from_token_retriever_when_token_retrieval_succeeds(setup: V4Bff)
✅ calls_to_remote_endpoint_with_anon_should_be_anon(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_with_anon_should_be_anon(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_with_anon_should_be_anon(setup: V4Bff)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_not_stored_corresponding_named_token_finds_no_matching_token_should_fail(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_not_stored_corresponding_named_token_finds_no_matching_token_should_fail(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_not_stored_corresponding_named_token_finds_no_matching_token_should_fail(setup: V4Bff)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_stored_named_token_should_forward_user_to_api(setup: BffWithFrontend)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_stored_named_token_should_forward_user_to_api(setup: ManuallyConfiguredBff)
✅ calls_to_remote_endpoint_with_useraccesstokenparameters_having_stored_named_token_should_forward_user_to_api(setup: V4Bff)
✅ Can_register_default_forwarder_config_for_MapRemoteBffApiEndpoint(setup: BffWithFrontend)
✅ Can_register_default_forwarder_config_for_MapRemoteBffApiEndpoint(setup: ManuallyConfiguredBff)
✅ Can_register_default_forwarder_config_for_MapRemoteBffApiEndpoint(setup: V4Bff)
✅ endpoints_that_disable_csrf_should_not_require_csrf_header(setup: BffWithFrontend)
✅ endpoints_that_disable_csrf_should_not_require_csrf_header(setup: ManuallyConfiguredBff)
✅ endpoints_that_disable_csrf_should_not_require_csrf_header(setup: V4Bff)
✅ MapRemoteBffApiEndpoint_can_override_config_to_configure_a_timeout(setup: BffWithFrontend)
✅ MapRemoteBffApiEndpoint_can_override_config_to_configure_a_timeout(setup: ManuallyConfiguredBff)
✅ MapRemoteBffApiEndpoint_can_override_config_to_configure_a_timeout(setup: V4Bff)
✅ MapRemoteBffApiEndpoint_can_override_default_transform(setup: BffWithFrontend)
✅ MapRemoteBffApiEndpoint_can_override_default_transform(setup: ManuallyConfiguredBff)
✅ MapRemoteBffApiEndpoint_can_override_default_transform(setup: V4Bff)
✅ post_to_remote_endpoint_should_forward_user_to_api(setup: BffWithFrontend)
✅ post_to_remote_endpoint_should_forward_user_to_api(setup: ManuallyConfiguredBff)
✅ post_to_remote_endpoint_should_forward_user_to_api(setup: V4Bff)
✅ put_to_remote_endpoint_should_forward_user_to_api(setup: BffWithFrontend)
✅ put_to_remote_endpoint_should_forward_user_to_api(setup: ManuallyConfiguredBff)
✅ put_to_remote_endpoint_should_forward_user_to_api(setup: V4Bff)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: BffWithFrontend)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: ManuallyConfiguredBff)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: V4Bff)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: BffWithFrontend)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: ManuallyConfiguredBff)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: V4Bff)
✅ unauthenticated_calls_to_remote_endpoint_should_return_401(setup: BffWithFrontend)
✅ unauthenticated_calls_to_remote_endpoint_should_return_401(setup: ManuallyConfiguredBff)
✅ unauthenticated_calls_to_remote_endpoint_should_return_401(setup: V4Bff)
✅ when_id_srv_client_is_disabled_then_unauthorized(setup: BffWithFrontend)
✅ when_id_srv_client_is_disabled_then_unauthorized(setup: ManuallyConfiguredBff)
✅ when_id_srv_client_is_disabled_then_unauthorized(setup: V4Bff)
✅ Duende.Bff.Tests.Endpoints.WireupTests
✅ Can_call_map_management_endpoints_with_automapping
✅ Can_call_map_management_endpoints_with_automapping_when_management_path_has_template
✅ Without_auto_wireup_management_endpoints_are_not_mapped
✅ Duende.Bff.Tests.Endpoints.YarpTests
✅ anonymous_call_to_no_token_requirement_route_should_succeed(setup: BffWithFrontend)
✅ anonymous_call_to_no_token_requirement_route_should_succeed(setup: ManuallyConfiguredBff)
✅ anonymous_call_to_no_token_requirement_route_should_succeed(setup: V4Bff)
✅ anonymous_call_to_optional_user_token_route_should_succeed(setup: BffWithFrontend)
✅ anonymous_call_to_optional_user_token_route_should_succeed(setup: ManuallyConfiguredBff)
✅ anonymous_call_to_optional_user_token_route_should_succeed(setup: V4Bff)
✅ anonymous_call_to_user_token_requirement_route_should_fail(setup: BffWithFrontend)
✅ anonymous_call_to_user_token_requirement_route_should_fail(setup: ManuallyConfiguredBff)
✅ anonymous_call_to_user_token_requirement_route_should_fail(setup: V4Bff)
✅ anonymous_call_with_no_csrf_header_to_csrf_route_should_fail(setup: BffWithFrontend)
✅ anonymous_call_with_no_csrf_header_to_csrf_route_should_fail(setup: ManuallyConfiguredBff)
✅ anonymous_call_with_no_csrf_header_to_csrf_route_should_fail(setup: V4Bff)
✅ anonymous_call_with_no_csrf_header_to_no_token_requirement_no_csrf_route_should_succeed(setup: BffWithFrontend)
✅ anonymous_call_with_no_csrf_header_to_no_token_requirement_no_csrf_route_should_succeed(setup: ManuallyConfiguredBff)
✅ anonymous_call_with_no_csrf_header_to_no_token_requirement_no_csrf_route_should_succeed(setup: V4Bff)
✅ authenticated_GET_should_forward_user_to_api_for_user(setup: BffWithFrontend)
✅ authenticated_GET_should_forward_user_to_api_for_user(setup: ManuallyConfiguredBff)
✅ authenticated_GET_should_forward_user_to_api_for_user(setup: V4Bff)
✅ authenticated_Post_should_forward_user_to_api_for_User(setup: BffWithFrontend)
✅ authenticated_Post_should_forward_user_to_api_for_User(setup: ManuallyConfiguredBff)
✅ authenticated_Post_should_forward_user_to_api_for_User(setup: V4Bff)
✅ authenticated_Post_should_forward_user_to_api_for_UserOrNone(setup: BffWithFrontend)
✅ authenticated_Post_should_forward_user_to_api_for_UserOrNone(setup: ManuallyConfiguredBff)
✅ authenticated_Post_should_forward_user_to_api_for_UserOrNone(setup: V4Bff)
✅ authenticated_PUT_should_forward_user_to_api_for_UserOrNone(setup: BffWithFrontend)
✅ authenticated_PUT_should_forward_user_to_api_for_UserOrNone(setup: ManuallyConfiguredBff)
✅ authenticated_PUT_should_forward_user_to_api_for_UserOrNone(setup: V4Bff)
✅ call_to_client_token_route_should_forward_client_token_to_api(setup: BffWithFrontend)
✅ call_to_client_token_route_should_forward_client_token_to_api(setup: ManuallyConfiguredBff)
✅ call_to_client_token_route_should_forward_client_token_to_api(setup: V4Bff)
✅ call_to_user_or_client_token_route_should_forward_user_or_client_token_to_api(setup: BffWithFrontend)
✅ call_to_user_or_client_token_route_should_forward_user_or_client_token_to_api(setup: ManuallyConfiguredBff)
✅ call_to_user_or_client_token_route_should_forward_user_or_client_token_to_api(setup: V4Bff)
✅ can_disable_anti_forgery_check(setup: BffWithFrontend)
✅ can_disable_anti_forgery_check(setup: ManuallyConfiguredBff)
✅ can_disable_anti_forgery_check(setup: V4Bff)
✅ old_anonymous_call_to_optional_user_token_route_should_succeed(setup: BffWithFrontend)
✅ old_anonymous_call_to_optional_user_token_route_should_succeed(setup: ManuallyConfiguredBff)
✅ old_anonymous_call_to_optional_user_token_route_should_succeed(setup: V4Bff)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: BffWithFrontend)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: ManuallyConfiguredBff)
✅ response_status_401_from_remote_endpoint_should_return_401_from_bff(setup: V4Bff)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: BffWithFrontend)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: ManuallyConfiguredBff)
✅ response_status_403_from_remote_endpoint_should_return_403_from_bff(setup: V4Bff)
✅ yarp_works_with_path_based_routing
✅ Duende.Bff.Tests.Headers.ApiAndBffUseForwardedHeaders
✅ bff_host_name_should_propagate_to_api
✅ forwarded_host_name_with_header_forwarding_should_propagate_to_api
✅ Duende.Bff.Tests.Headers.ApiUseForwardedHeaders
✅ bff_host_name_should_propagate_to_api
✅ forwarded_host_name_should_not_propagate_to_api
✅ Duende.Bff.Tests.Headers.GeneralTests
✅ custom_header_should_be_forwarded_and_xforwarded_headers_should_be_created(setup: BffWithFrontend)
✅ custom_header_should_be_forwarded_and_xforwarded_headers_should_be_created(setup: ManuallyConfiguredBff)
✅ custom_header_should_be_forwarded_and_xforwarded_headers_should_be_created(setup: V4Bff)
✅ custom_header_should_be_forwarded(setup: BffWithFrontend)
✅ custom_header_should_be_forwarded(setup: ManuallyConfiguredBff)
✅ custom_header_should_be_forwarded(setup: V4Bff)
✅ If_management_endpoints_are_mapped_manually_then_warning_is_written(setup: BffWithFrontend)
✅ If_management_endpoints_are_mapped_manually_then_warning_is_written(setup: ManuallyConfiguredBff)
✅ If_management_endpoints_are_mapped_manually_then_warning_is_written(setup: V4Bff)
✅ local_endpoint_should_receive_standard_headers(setup: BffWithFrontend)
✅ local_endpoint_should_receive_standard_headers(setup: ManuallyConfiguredBff)
✅ local_endpoint_should_receive_standard_headers(setup: V4Bff)
✅ Will_auto_register_login_endpoints(setup: BffWithFrontend)
✅ Will_auto_register_login_endpoints(setup: ManuallyConfiguredBff)
✅ Will_auto_register_login_endpoints(setup: V4Bff)
✅ Duende.Bff.Tests.IAccessTokenRetriever_Extensibility_tests
✅ When_calling_custom_endpoint_then_AccessTokenRetrievalContext_has_api_address_and_localpath
✅ When_calling_sub_custom_endpoint_then_AccessTokenRetrievalContext_has_api_address_and_localpath
✅ Duende.Bff.Tests.Internal.ClaimsPrincipalRecordTests
✅ Can_convert_between_ClaimsPrincipal_and_ClaimsPrincipalRecord
✅ Can_convert_ClaimsPrincipalRecord_with_default_ClaimsRecord
✅ Can_convert_default_ClaimsPrincipalRecord
✅ ToClaimsPrincipal_handles_null_Claims_from_deserialization
✅ ToClaimsPrincipal_handles_null_Type_in_ClaimRecord_from_deserialization
✅ ToClaimsPrincipal_handles_null_Value_in_ClaimRecord_from_deserialization
✅ Duende.Bff.Tests.LicensingTests
✅ Given_expired_license_then_log_warning
✅ Given_no_license_then_error_log
✅ Given_valid_but_expired_license_then_no_valid_or_trial_mode_logs
✅ Should_log_error_when_trial_mode_authenticated_session_limit_exceeded
✅ Should_not_log_error_when_below_trial_mode_authenticated_session_limit
✅ Duende.Bff.Tests.MultiFrontend.FrontendCollectionTests
✅ Can_load_frontends_from_config
✅ Can_load_frontends_from_constructor
⚪ Cookie_Config_precedence_is_programmatic_defaults_then_configured_defaults_then_frontend_specific
⚪ ODIC_Config_precedence_is_programmatic_defaults_then_configured_defaults_then_frontend_specific
✅ When_frontend_is_removed_then_event_is_raised
✅ When_frontend_is_updated_then_event_is_raised
✅ When_identical_frontend_is_updated_then_no_event_is_raised
✅ Duende.Bff.Tests.MultiFrontend.FrontendSelectorTests
✅ HostHeader_takes_precedence_over_path
✅ Slash_also_functions_as_default_frontend
✅ TryMapFrontend_EmptyStore_ReturnsFalse
✅ TryMapFrontend_FallbackToDefaultFrontend_ReturnsTrue
✅ TryMapFrontend_MatchesByHost_ReturnsTrue
✅ TryMapFrontend_MatchesByHostAndPath_ReturnsTrue
✅ TryMapFrontend_MatchesByHostAndPathUri_ReturnsTrue
✅ TryMapFrontend_MatchesByHostUri_ReturnsTrue
✅ TryMapFrontend_MatchesByPath_logs_warning_on_invalid_case
✅ TryMapFrontend_MatchesByPath_ReturnsTrue
✅ TryMapFrontend_MultipleHosts_MatchesMostSpecific
✅ TryMapFrontend_MultiplePaths_MatchesMostSpecific
✅ TryMapFrontend_NoHostSpecified_MatchesByPath
✅ TryMapFrontend_NoMatches_ReturnsFalse
✅ TryMapFrontend_Will_return_first
✅ When_mapping_duplicate_then_warning_is_written(path: \"/\", uri: null)
✅ When_mapping_duplicate_then_warning_is_written(path: \"/some_path\", uri: \"https://some-url\")
✅ When_mapping_duplicate_then_warning_is_written(path: \"/some_path\", uri: null)
✅ When_mapping_duplicate_then_warning_is_written(path: null, uri: \"https://some-url\")
✅ When_mapping_duplicate_then_warning_is_written(path: null, uri: null)
✅ Duende.Bff.Tests.MultiFrontend.HostHeaderValueTests
✅ Can_compare_with_http_request(input: \"http://uri\", requestUri: \"http://uri\", matches: True, reason: \"default https port\")
✅ Can_compare_with_http_request(input: \"http://uri\", requestUri: \"https://uri\", matches: False, reason: \"different scheme\")
✅ Can_compare_with_http_request(input: \"https://uri:123\", requestUri: \"https://different:123\", matches: False, reason: \"different host, same port\")
✅ Can_compare_with_http_request(input: \"https://uri:123\", requestUri: \"https://uri:321\", matches: False, reason: \"different port\")
✅ Can_compare_with_http_request(input: \"https://uri\", requestUri: \"https://different\", matches: False, reason: \"different host, no port\")
✅ Can_compare_with_http_request(input: \"https://uri\", requestUri: \"https://uri\", matches: True, reason: \"same uri\")
✅ Can_compare_with_http_request(input: \"uri:443\", requestUri: \"https://uri\", matches: True, reason: \"default https port\")
✅ Can_compare_with_http_request(input: \"wss://uri\", requestUri: \"wss://uri\", matches: True, reason: \"Uri with websockets\")
✅ Can_parse_host_header(input: \"host.com:443\", host: \"host.com\", port: 443)
✅ Can_parse_host_header(input: \"host.com:5000\", host: \"host.com\", port: 5000)
✅ Can_parse_host_header(input: \"host.com:80\", host: \"host.com\", port: 80)
✅ Can_parse_host_header(input: \"host.com\", host: \"host.com\", port: 443)
✅ Can_parse_host_header(input: \"http://host.com:80\", host: \"host.com\", port: 80)
✅ Can_parse_host_header(input: \"https://host.com:443\", host: \"host.com\", port: 443)
✅ Can_parse_host_header(input: \"https://host.com:80\", host: \"host.com\", port: 80)
✅ Can_parse_host_header(input: \"https://host.com\", host: \"host.com\", port: 443)
✅ Equals_can_handle_default_ports
✅ Equals_can_handle_explicit_ports
✅ HostHeader_WithExplicitInitialization_SetsProperties
✅ Parse_WithCustomPort_SetsCorrectPort
✅ Parse_WithFragment_IgnoresFragment
✅ Parse_WithValidHttpsUrl_SetsCorrectProperties
✅ Parse_WithValidHttpUrl_SetsCorrectProperties
✅ ToHostStringHandlesDefaultPorts(url: \"http://example.com:80\", hoststring: \"example.com\", port: 80)
✅ ToHostStringHandlesDefaultPorts(url: \"http://example.com:888\", hoststring: \"example.com\", port: 888)
✅ ToHostStringHandlesDefaultPorts(url: \"http://example.com\", hoststring: \"example.com\", port: 80)
✅ ToHostStringHandlesDefaultPorts(url: \"https://example.com:443\", hoststring: \"example.com\", port: 443)
✅ ToHostStringHandlesDefaultPorts(url: \"https://example.com:888\", hoststring: \"example.com\", port: 888)
✅ ToHostStringHandlesDefaultPorts(url: \"https://example.com\", hoststring: \"example.com\", port: 443)
✅ Will_catch_invalid_hostheader(input: \"http:/not\", reason: \"not a valid host header\")
✅ Will_catch_invalid_hostheader(input: \"not:a\", reason: \"not a valid host header\")
✅ Duende.Bff.Tests.MultiFrontend.PathMapperTests
✅ MapPath_WithCaseInsensitiveMatch_UpdatesPathBaseAndPath
✅ MapPath_WithEmptyPathBase_AddsMatchingPathToPathBase
✅ MapPath_WithExactMatchingPath_UpdatesPathBaseAndLeavesEmptyPath
✅ MapPath_WithMatchingPath_UpdatesPathBaseAndPath
✅ MapPath_WithNoMatchingPath_Returns404
✅ MapPath_WithNoMatchingPaths_DoesNotModifyPathBaseOrPath
✅ Duende.Bff.Tests.SessionManagement.CookieSlidingTests
✅ user_endpoint_cookie_should_slide(setup: BffWithFrontend)
✅ user_endpoint_cookie_should_slide(setup: ManuallyConfiguredBff)
✅ user_endpoint_cookie_should_slide(setup: V4Bff)
✅ user_endpoint_when_sliding_flag_is_passed_cookie_should_not_slide(setup: BffWithFrontend)
✅ user_endpoint_when_sliding_flag_is_passed_cookie_should_not_slide(setup: ManuallyConfiguredBff)
✅ user_endpoint_when_sliding_flag_is_passed_cookie_should_not_slide(setup: V4Bff)
✅ user_endpoint_when_uservalidate_renews_and_sliding_flag_is_passed_cookie_should_not_slide(setup: BffWithFrontend)
✅ user_endpoint_when_uservalidate_renews_and_sliding_flag_is_passed_cookie_should_not_slide(setup: ManuallyConfiguredBff)
✅ user_endpoint_when_uservalidate_renews_and_sliding_flag_is_passed_cookie_should_not_slide(setup: V4Bff)
✅ user_endpoint_when_uservalidate_renews_cookie_should_slide(setup: BffWithFrontend)
✅ user_endpoint_when_uservalidate_renews_cookie_should_slide(setup: ManuallyConfiguredBff)
✅ user_endpoint_when_uservalidate_renews_cookie_should_slide(setup: V4Bff)
✅ Duende.Bff.Tests.SessionManagement.RevokeRefreshTokenTests
✅ backchannel_logout_endpoint_should_revoke_refreshtoken(setup: BffWithFrontend)
✅ backchannel_logout_endpoint_should_revoke_refreshtoken(setup: ManuallyConfiguredBff)
✅ backchannel_logout_endpoint_should_revoke_refreshtoken(setup: V4Bff)
✅ logout_should_revoke_refreshtoken(setup: BffWithFrontend)
✅ logout_should_revoke_refreshtoken(setup: ManuallyConfiguredBff)
✅ logout_should_revoke_refreshtoken(setup: V4Bff)
✅ when_setting_disabled_backchannel_logout_endpoint_should_not_revoke_refreshtoken(setup: BffWithFrontend)
✅ when_setting_disabled_backchannel_logout_endpoint_should_not_revoke_refreshtoken(setup: ManuallyConfiguredBff)
✅ when_setting_disabled_backchannel_logout_endpoint_should_not_revoke_refreshtoken(setup: V4Bff)
✅ when_setting_disabled_logout_should_not_revoke_refreshtoken(setup: BffWithFrontend)
✅ when_setting_disabled_logout_should_not_revoke_refreshtoken(setup: ManuallyConfiguredBff)
✅ when_setting_disabled_logout_should_not_revoke_refreshtoken(setup: V4Bff)
✅ Duende.Bff.Tests.SessionManagement.ServerSideTicketStoreTests
✅ Given_multiple_frontends_each_frontend_gets_a_session
✅ Given_multiple_frontends_logout_only_affects_single_frontend
✅ StoreAsync_should_remove_conflicting_entries_prior_to_creating_new_entry(setup: BffWithFrontend)
✅ StoreAsync_should_remove_conflicting_entries_prior_to_creating_new_entry(setup: ManuallyConfiguredBff)
✅ StoreAsync_should_remove_conflicting_entries_prior_to_creating_new_entry(setup: V4Bff)
✅ Duende.Bff.Tests.TestInfra.TestInfraTests
✅ Can_add_api_endpoint_to_bff_host
✅ Can_login_to_bff_host
✅ Can_login_to_identity_server
Loading