[INFO] fetching crate fraiseql-auth 2.0.0...
[INFO] testing fraiseql-auth-2.0.0 against beta-2026-03-05 for beta-1.95-1
[INFO] extracting crate fraiseql-auth 2.0.0 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate fraiseql-auth 2.0.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate fraiseql-auth 2.0.0
[INFO] tweaked toml for crates.io crate fraiseql-auth 2.0.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate fraiseql-auth 2.0.0 on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate fraiseql-auth 2.0.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ab525e8bb716e0b26fa60ea942f90f1e95979011b7e812c65af809d07d8b9bdd
[INFO] running `Command { std: "docker" "start" "-a" "ab525e8bb716e0b26fa60ea942f90f1e95979011b7e812c65af809d07d8b9bdd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ab525e8bb716e0b26fa60ea942f90f1e95979011b7e812c65af809d07d8b9bdd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ab525e8bb716e0b26fa60ea942f90f1e95979011b7e812c65af809d07d8b9bdd", kill_on_drop: false }`
[INFO] [stdout] ab525e8bb716e0b26fa60ea942f90f1e95979011b7e812c65af809d07d8b9bdd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8d14a66590e53d84d7617d7e6255092829369d040eacecde79338fb0adc569e7
[INFO] running `Command { std: "docker" "start" "-a" "8d14a66590e53d84d7617d7e6255092829369d040eacecde79338fb0adc569e7", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling whoami v1.6.1
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling chacha20 v0.9.1
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling poly1305 v0.8.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling chacha20poly1305 v0.10.1
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling axum-macros v0.5.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling jsonwebtoken v9.3.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling sqlx-postgres v0.8.6
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling fraiseql-auth v2.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 20s
[INFO] running `Command { std: "docker" "inspect" "8d14a66590e53d84d7617d7e6255092829369d040eacecde79338fb0adc569e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8d14a66590e53d84d7617d7e6255092829369d040eacecde79338fb0adc569e7", kill_on_drop: false }`
[INFO] [stdout] 8d14a66590e53d84d7617d7e6255092829369d040eacecde79338fb0adc569e7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6e56270286a40e3903a7295bb9ea1e60994718fa01fa25c8d2bae6243fb251ec
[INFO] running `Command { std: "docker" "start" "-a" "6e56270286a40e3903a7295bb9ea1e60994718fa01fa25c8d2bae6243fb251ec", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling temp-env v0.3.6
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling sqlx-postgres v0.8.6
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling fraiseql-auth v2.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 56.22s
[INFO] running `Command { std: "docker" "inspect" "6e56270286a40e3903a7295bb9ea1e60994718fa01fa25c8d2bae6243fb251ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6e56270286a40e3903a7295bb9ea1e60994718fa01fa25c8d2bae6243fb251ec", kill_on_drop: false }`
[INFO] [stdout] 6e56270286a40e3903a7295bb9ea1e60994718fa01fa25c8d2bae6243fb251ec
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2473b32012bbd7737c26ea11524c690741590a4c8bc775d3f6d8d50a07a33f5e
[INFO] running `Command { std: "docker" "start" "-a" "2473b32012bbd7737c26ea11524c690741590a4c8bc775d3f6d8d50a07a33f5e", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.42s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fraiseql_auth-dd3625484e682301)
[INFO] [stdout] 
[INFO] [stdout] running 433 tests
[INFO] [stdout] test audit_logger::tests::test_audit_entry_creation ... ok
[INFO] [stdout] test audit_logger::tests::test_audit_entry_field_sizes_within_bounds ... ok
[INFO] [stdout] test audit_logger::tests::test_bounds_constants_are_reasonable ... ok
[INFO] [stdout] test audit_logger::tests::test_bounds_constants_match_documentation ... ok
[INFO] [stdout] test audit_logger::tests::test_audit_logger_logs_failure ... ok
[INFO] [stdout] test audit_logger::tests::test_audit_entry_sizes_reasonable_for_serialization ... ok
[INFO] [stdout] test audit_logger::tests::test_event_type_strings ... ok
[INFO] [stdout] test audit_logger::tests::test_global_audit_logger_is_singleton ... ok
[INFO] [stdout] test audit_logger::tests::test_memory_per_entry_constant_is_reasonable ... ok
[INFO] [stdout] test audit_logger::tests::test_error_message_bound_accommodates_typical_errors ... ok
[INFO] [stdout] test audit_logger::tests::test_operation_bound_covers_all_audit_operations ... ok
[INFO] [stdout] test audit_logger::tests::test_secret_type_strings ... ok
[INFO] [stdout] test constant_time::tests::test_compare_different_bytes ... ok
[INFO] [stdout] test constant_time::tests::test_compare_different_lengths ... ok
[INFO] [stdout] test constant_time::tests::test_compare_different_strings ... ok
[INFO] [stdout] test constant_time::tests::test_compare_empty ... ok
[INFO] [stdout] test constant_time::tests::test_compare_jwt_constant ... ok
[INFO] [stdout] test constant_time::tests::test_compare_jwt_constant_different ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_different_length_longer_actual ... ok
[INFO] [stdout] test constant_time::tests::test_compare_equal_bytes ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_different_length_shorter_actual ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_exact_fixed_length ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_zero_length ... ok
[INFO] [stdout] test constant_time::tests::test_null_bytes_comparison ... ok
[INFO] [stdout] test constant_time::tests::test_jwt_constant_different_lengths ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_timing_consistency ... ok
[INFO] [stdout] test constant_time::tests::test_jwt_constant_padding ... ok
[INFO] [stdout] test constant_time::tests::test_compare_len_safe ... ok
[INFO] [stdout] test constant_time::tests::test_compare_jwt_constant_prevents_length_attack ... ok
[INFO] [stdout] test constant_time::tests::test_timing_attack_prevention_early_difference ... ok
[INFO] [stdout] test constant_time::tests::test_timing_attack_prevention_late_difference ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_comparison_consistency ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_comparison_is_commutative ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_csrf_token_invalid ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_csrf_token_valid ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_different_lengths ... ok
[INFO] [stdout] test constant_time::tests::test_very_long_tokens ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_brute_force_attempt_early_match ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_different_tokens_return_false ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_empty_tokens_equal ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_equal_tokens_return_true ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_hmac_signatures_different ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_hmac_signatures_equal ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_jwt_tampered_payload ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_jwt_valid_signature ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_mismatch_at_middle ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_mismatch_at_start ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_mismatch_position_doesnt_affect_comparison ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_session_token_invalid_session_id ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_session_token_invalid_signature ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_single_bit_flip ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_session_token_valid ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_token_with_all_byte_values ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_token_with_null_bytes ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_unicode_in_tokens ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_database_query_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_error_debug_shows_internal ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_very_long_tokens ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_all_auth_errors_have_consistent_user_message ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_database_connection_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_database_constraint_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_error_display_uses_user_message ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_expired_session_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_internal_message_contains_full_details ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_invalid_session_token_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_jwt_expired_token_generic ... ok
[INFO] [stdout] test constant_time::tests::test_all_byte_values ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_equal_length ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_jwt_invalid_issuer_sanitized ... ok
[INFO] [stdout] test constant_time::tests::test_compare_padded_exceeds_max_buffer ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_jwt_invalid_signature_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_oidc_network_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_oidc_server_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_permission_denied_generic ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_rbac_policy_error_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_revoked_session_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_sanitization_doesnt_lose_information ... ok
[INFO] [stdout] test constant_time::tests::test_compare_equal_strings ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_very_long_error_messages_sanitized ... ok
[INFO] [stdout] test error_sanitizer::tests::test_auth_error_sanitizer_permission ... ok
[INFO] [stdout] test error_sanitizer::tests::test_sanitizable_trait ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_special_characters_in_internal_messages ... ok
[INFO] [stdout] test error_sanitizer::tests::test_sanitized_error_creation ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_all_auth_errors_properly_sanitized ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_all_security_layers_working_together_successfully ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_audit_logging_captures_all_security_events ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_brute_force_attack_blocked_with_audit_trail ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_complete_oauth_flow_with_all_security_layers ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_distributed_attack_per_user_limit_enforced ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_invalid_jwt_signature_detected_safely ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_pkce_state_encryption_integrated_in_oauth_flow ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_rate_limiting_integrated_across_endpoints ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_rate_limiting_windows_independent ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_security_stack_survives_attempted_circumvention ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_session_token_verified_with_constant_time ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_state_encryption_prevents_replay_attacks ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_tampered_state_rejected_with_proper_error ... ok
[INFO] [stdout] test integration_security_tests::integration_security::test_token_comparison_timing_independent_of_mismatch_position ... ok
[INFO] [stdout] test handlers::tests::test_generate_secure_state ... ok
[INFO] [stdout] test jwt::tests::test_claims_is_expired ... ok
[INFO] [stdout] test jwt::tests::test_claims_not_expired ... ok
[INFO] [stdout] test jwt::tests::test_generate_and_validate_token ... ok
[INFO] [stdout] test jwt::tests::test_get_custom_claim ... ok
[INFO] [stdout] test jwt::tests::test_jwt_validator_creation ... ok
[INFO] [stdout] test jwt::tests::test_jwt_validator_invalid_issuer ... ok
[INFO] [stdout] test audit_logger::tests::test_audit_logger_logs_entry ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_jwt_invalid_signature ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_mismatch_at_end ... ok
[INFO] [stdout] test constant_time_tests::constant_time_comparison::test_multiple_bit_flips_same_result ... ok
[INFO] [stdout] test middleware::tests::test_authenticated_user_clone ... ok
[INFO] [stdout] test middleware::tests::test_database_error_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_forbidden_error_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_get_custom_claim ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_jwt_missing_claim_sanitized ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_no_internal_details_in_user_message ... ok
[INFO] [stdout] test error_sanitization_tests::error_sanitization::test_oidc_invalid_client_secret_sanitized ... ok
[INFO] [stdout] test error_sanitizer::tests::test_sanitized_error_display ... ok
[INFO] [stdout] test jwt::tests::test_validate_invalid_signature ... ok
[INFO] [stdout] test middleware::tests::test_all_errors_have_status_codes ... ok
[INFO] [stdout] test middleware::tests::test_config_error_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_has_role_array ... ok
[INFO] [stdout] test middleware::tests::test_internal_error_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_invalid_claim_value_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_has_role_single_string ... ok
[INFO] [stdout] test middleware::tests::test_oidc_metadata_error_returns_server_error ... ok
[INFO] [stdout] test middleware::tests::test_invalid_signature_returns_generic_message ... ok
[INFO] [stdout] test middleware::tests::test_invalid_state_error ... ok
[INFO] [stdout] test middleware::tests::test_oauth_error_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_invalid_token_sanitized ... ok
[INFO] [stdout] test middleware::tests::test_pkce_error_returns_bad_request ... ok
[INFO] [stdout] test middleware::tests::test_token_expired_returns_generic_message ... ok
[INFO] [stdout] test middleware::tests::test_system_time_error_sanitized ... ok
[INFO] [stdout] test monitoring::tests::test_auth_metrics_success_rate ... ok
[INFO] [stdout] test middleware::tests::test_rate_limited_error_message ... ok
[INFO] [stdout] test middleware::tests::test_session_error_sanitized ... ok
[INFO] [stdout] test jwt::tests::test_validate_expired_token ... ok
[INFO] [stdout] test monitoring::tests::test_auth_event_builder ... ok
[INFO] [stdout] test monitoring::tests::test_auth_metrics ... ok
[INFO] [stdout] test oauth::tests::test_failover_manager_primary_available ... ok
[INFO] [stdout] test oauth::tests::test_external_auth_provider_creation ... ok
[INFO] [stdout] test oauth::tests::test_failover_manager_mark_available ... ok
[INFO] [stdout] test oauth::tests::test_failover_manager_fallback ... ok
[INFO] [stdout] test oauth::tests::test_id_token_claims_creation ... ok
[INFO] [stdout] test oauth::tests::test_id_token_claims_expiry ... ok
[INFO] [stdout] test oauth::tests::test_nonce_parameter_generation ... ok
[INFO] [stdout] test oauth::tests::test_nonce_parameter_verification ... ok
[INFO] [stdout] test middleware::tests::test_missing_claim_sanitized ... ok
[INFO] [stdout] test oauth::tests::test_oauth_audit_event_creation ... ok
[INFO] [stdout] test oauth::tests::test_oauth_audit_event_with_error ... ok
[INFO] [stdout] test oauth::tests::test_oauth_audit_event_with_metadata ... ok
[INFO] [stdout] test oauth::tests::test_oauth_audit_event_with_user_id ... ok
[INFO] [stdout] test oauth::tests::test_oauth_session_creation ... ok
[INFO] [stdout] test oauth::tests::test_oauth_session_token_refresh ... ok
[INFO] [stdout] test oauth::tests::test_oidc_provider_config_creation ... ok
[INFO] [stdout] test oauth::tests::test_pkce_challenge_generation ... ok
[INFO] [stdout] test oauth::tests::test_pkce_verification ... ok
[INFO] [stdout] test oauth::tests::test_pkce_verification_fails_with_wrong_verifier ... ok
[INFO] [stdout] test oauth::tests::test_provider_registry_disable_enable ... ok
[INFO] [stdout] test oauth::tests::test_provider_registry_list_enabled ... ok
[INFO] [stdout] test oauth::tests::test_provider_registry_register_and_get ... ok
[INFO] [stdout] test monitoring::tests::test_operation_timer ... ok
[INFO] [stdout] test oauth::tests::test_state_parameter_generation ... ok
[INFO] [stdout] test oauth::tests::test_state_parameter_verification ... ok
[INFO] [stdout] test oauth::tests::test_state_parameter_verification_fails_with_wrong_state ... ok
[INFO] [stdout] test oauth::tests::test_token_refresh_scheduler_cancel ... ok
[INFO] [stdout] test oauth::tests::test_token_refresh_scheduler_schedule_and_retrieve ... ok
[INFO] [stdout] test oauth::tests::test_token_refresh_worker_cancellation ... ok
[INFO] [stdout] test error_sanitizer::tests::test_auth_error_sanitizer_jwt ... ok
[INFO] [stdout] test oauth::tests::test_token_refresh_worker_handles_missing_session ... ok
[INFO] [stdout] test oauth::tests::test_token_refresh_worker_processes_due_refresh ... ok
[INFO] [stdout] test oauth::tests::test_token_response_expiry_calculation ... ok
[INFO] [stdout] test oauth::tests::test_userinfo_creation ... ok
[INFO] [stdout] test oauth::tests::test_token_response_creation ... ok
[INFO] [stdout] test oauth::tests::test_exchange_code_handles_error_response ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_ttl_refresh ... ok
[INFO] [stdout] test oidc_server_client::tests::test_authorization_url_contains_required_pkce_params ... ok
[INFO] [stdout] test oidc_server_client::tests::test_authorization_url_includes_openid_scope ... ok
[INFO] [stdout] test oidc_server_client::tests::test_authorization_url_state_is_percent_encoded ... ok
[INFO] [stdout] test oidc_server_client::tests::test_debug_redacts_client_secret ... ok
[INFO] [stdout] test oidc_server_client::tests::test_from_compiled_schema_absent_auth_returns_none ... ok
[INFO] [stdout] test oidc_server_client::tests::test_from_compiled_schema_missing_endpoints_returns_none ... ok
[INFO] [stdout] test oidc_server_client::tests::test_from_compiled_schema_missing_env_var_returns_none ... ok
[INFO] [stdout] test operation_rbac::tests::test_admin_has_all_permissions ... ok
[INFO] [stdout] test operation_rbac::tests::test_authorize_all ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_fetch_and_retrieve ... ok
[INFO] [stdout] test operation_rbac::tests::test_authorize_all_fails_if_missing_one ... ok
[INFO] [stdout] test operation_rbac::tests::test_authorize_any ... ok
[INFO] [stdout] test oauth::tests::test_oauth2_client_with_scopes ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_force_refresh ... ok
[INFO] [stdout] test operation_rbac::tests::test_custom_role ... ok
[INFO] [stdout] test operation_rbac::tests::test_get_user_permissions ... ok
[INFO] [stdout] test operation_rbac::tests::test_multiple_roles ... ok
[INFO] [stdout] test operation_rbac::tests::test_operator_has_limited_permissions ... ok
[INFO] [stdout] test operation_rbac::tests::test_permission_string_format ... ok
[INFO] [stdout] test operation_rbac::tests::test_viewer_has_minimal_permissions ... ok
[INFO] [stdout] test pkce::tests::test_encrypted_roundtrip_works_end_to_end ... ok
[INFO] [stdout] test pkce::tests::test_encrypted_token_is_longer_than_raw_internal_key ... ok
[INFO] [stdout] test pkce::tests::test_consume_removes_entry_cannot_reuse ... ok
[INFO] [stdout] test pkce::tests::test_create_and_consume_roundtrip ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_missing_kid_returns_none ... ok
[INFO] [stdout] test oauth::tests::test_oauth2_client_creation ... ok
[INFO] [stdout] test pkce::tests::test_is_in_memory_returns_true_for_in_memory_store ... ok
[INFO] [stdout] test pkce::tests::test_s256_challenge_matches_rfc7636_appendix_a ... ok
[INFO] [stdout] test pkce::tests::test_verifier_length_and_charset_are_rfc7636_compliant ... ok
[INFO] [stdout] test pkce::tests::test_unknown_token_returns_not_found ... ok
[INFO] [stdout] test pkce::tests::test_tampered_encrypted_token_returns_not_found ... ok
[INFO] [stdout] test pkce::tests::test_two_distinct_states_dont_interfere ... ok
[INFO] [stdout] test provider::tests::test_pkce_challenge_is_base64_url_safe ... ok
[INFO] [stdout] test provider::tests::test_pkce_validation ... ok
[INFO] [stdout] test provider::tests::test_pkce_verifier_contains_valid_characters ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_org_id_claim_takes_precedence ... ok
[INFO] [stdout] test provider::tests::test_pkce_challenge_generation ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_empty ... ok
[INFO] [stdout] test oauth::tests::test_exchange_code_sends_correct_request ... ok
[INFO] [stdout] test oauth::tests::test_refresh_token_sends_correct_request ... ok
[INFO] [stdout] test provider::tests::test_pkce_generation_is_unique ... ok
[INFO] [stdout] test provider::tests::test_base64_url_encode ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_org_id_from_email_domain ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_roles_fallback ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_org_id_missing ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_org_id_from_claim ... ok
[INFO] [stdout] test providers::auth0::tests::test_map_auth0_roles_underscore_separator ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_roles_from_custom_namespace ... ok
[INFO] [stdout] test providers::auth0::tests::test_extract_roles_missing ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_extract_app_roles ... ok
[INFO] [stdout] test providers::auth0::tests::test_map_auth0_roles_case_insensitive ... ok
[INFO] [stdout] test jwks::tests::test_jwks_cache_network_error ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_get_user_identifier_upn ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_map_azure_roles_case_insensitive ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_extract_app_roles_missing ... ok
[INFO] [stdout] test providers::auth0::tests::test_map_auth0_roles_common_patterns ... ok
[INFO] [stdout] test providers::auth0::tests::test_map_auth0_roles_to_fraiseql ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_map_azure_roles_to_fraiseql ... ok
[INFO] [stdout] test providers::google::tests::test_extract_roles_from_domain_company ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_map_azure_roles_underscore_format ... ok
[INFO] [stdout] test providers::github::tests::test_map_teams_empty ... ok
[INFO] [stdout] test providers::google::tests::test_extract_roles_from_domain_external ... ok
[INFO] [stdout] test providers::google::tests::test_map_groups_case_insensitive ... ok
[INFO] [stdout] test providers::google::tests::test_map_google_workspace_groups_to_roles ... ok
[INFO] [stdout] test providers::keycloak::tests::test_extract_client_roles ... ok
[INFO] [stdout] test providers::keycloak::tests::test_extract_realm_roles ... ok
[INFO] [stdout] test providers::keycloak::tests::test_extract_realm_roles_missing ... ok
[INFO] [stdout] test providers::keycloak::tests::test_map_keycloak_roles_to_fraiseql ... ok
[INFO] [stdout] test providers::keycloak::tests::test_map_roles_case_insensitive ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_all_claims ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_org_id_fallback_to_first_org ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organization_id ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organization_id_missing ... ok
[INFO] [stdout] test providers::github::tests::test_map_teams_no_matches ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_extract_groups ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organization_roles ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organization_roles_missing ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organizations ... ok
[INFO] [stdout] test providers::google::tests::test_map_groups_empty ... ok
[INFO] [stdout] test providers::logto::tests::test_map_logto_roles_case_insensitive ... ok
[INFO] [stdout] test providers::logto::tests::test_map_logto_roles_organization_pattern ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_organizations_missing ... ok
[INFO] [stdout] test providers::logto::tests::test_map_logto_roles_substring_matching ... ok
[INFO] [stdout] test providers::logto::tests::test_map_logto_roles_to_fraiseql ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_roles_from_claim ... ok
[INFO] [stdout] test providers::logto::tests::test_extract_roles_missing ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_groups_fallback_to_roles ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_groups_from_claim ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_groups_missing ... ok
[INFO] [stdout] test providers::azure_ad::tests::test_get_user_identifier_email_fallback ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_org_id_from_claim ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_org_id_from_email_domain ... ok
[INFO] [stdout] test providers::okta::tests::test_get_okta_id ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_org_id_claim_takes_precedence ... ok
[INFO] [stdout] test providers::okta::tests::test_extract_org_id_from_okta_org_claim ... ok
[INFO] [stdout] test providers::github::tests::test_map_github_teams_to_roles ... ok
[INFO] [stdout] test providers::okta::tests::test_map_okta_groups_underscore_separator ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_all_roles_and_org ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_groups_from_array ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_groups_from_string ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_groups_missing ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_org_id_from_claim ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_org_id_from_email_domain ... ok
[INFO] [stdout] test providers::ory::tests::test_extract_org_id_missing ... ok
[INFO] [stdout] test providers::ory::tests::test_map_ory_groups_case_insensitive ... ok
[INFO] [stdout] test providers::okta::tests::test_map_okta_groups_partial_match ... ok
[INFO] [stdout] test providers::okta::tests::test_map_okta_groups_to_fraiseql ... ok
[INFO] [stdout] test providers::tests::test_azure_ad_role_mapping ... ok
[INFO] [stdout] test providers::ory::tests::test_map_ory_groups_to_fraiseql ... ok
[INFO] [stdout] test providers::tests::test_auth0_role_mapping ... ok
[INFO] [stdout] test providers::ory::tests::test_map_ory_groups_keto_patterns ... ok
[INFO] [stdout] test providers::tests::test_logto_role_mapping ... ok
[INFO] [stdout] test providers::tests::test_google_role_mapping ... ok
[INFO] [stdout] test providers::tests::test_keycloak_role_mapping ... ok
[INFO] [stdout] test providers::tests::test_github_role_mapping ... ok
[INFO] [stdout] test providers::tests::test_ory_group_mapping ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_empty_headers ... ok
[INFO] [stdout] test providers::tests::test_okta_group_mapping ... ok
[INFO] [stdout] test providers::okta::tests::test_get_okta_id_missing ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_from_trusted_proxy_x_forwarded_for ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_from_untrusted_proxy_x_forwarded_for ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_invalid_format_x_forwarded_for ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_invalid_format_x_real_ip ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_no_headers ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_spoofing_attempt ... ok
[INFO] [stdout] test proxy::tests::test_extract_client_ip_valid_ipv6 ... ok
[INFO] [stdout] test proxy::tests::test_proxy_config_is_trusted_proxy_invalid_ip ... ok
[INFO] [stdout] test proxy::tests::test_proxy_config_is_trusted_proxy_untrusted_ip ... ok
[INFO] [stdout] test proxy::tests::test_proxy_config_is_trusted_proxy_valid_ip ... ok
[INFO] [stdout] test rate_limiting::tests::test_atomic_check_and_update_not_interleaved ... ok
[INFO] [stdout] test rate_limiting::tests::test_attack_prevention_scenario ... ok
[INFO] [stdout] test rate_limiting::tests::test_concurrent_window_reset_safety ... ok
[INFO] [stdout] test rate_limiting::tests::test_endpoint_combinations ... ok
[INFO] [stdout] test rate_limiting::tests::test_ip_based_rate_limiting ... ok
[INFO] [stdout] test rate_limiting::tests::test_no_toctou_race_condition ... ok
[INFO] [stdout] test proxy::tests::test_proxy_config_localhost_only ... ok
[INFO] [stdout] test rate_limiting::tests::test_clear_limiters ... ok
[INFO] [stdout] test rate_limiting::tests::test_multiple_users_independent ... ok
[INFO] [stdout] test providers::okta::tests::test_map_okta_groups_case_insensitive ... ok
[INFO] [stdout] test providers::okta::tests::test_map_okta_groups_everyone_becomes_viewer ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_active_limiters_count ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limit_config_presets ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_allows_within_limit ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_disabled ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_per_key ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_error_contains_retry_after ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_active_limiters_count ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_clear_limiters ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiting_many_keys ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiter_rejects_over_limit ... ok
[INFO] [stdout] test rate_limiting::tests::test_rate_limiters_default ... ok
[INFO] [stdout] test rate_limiting::tests::test_rejected_login_tracking ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_different_ips_independent_limits ... ok
[INFO] [stdout] test oauth::tests::test_get_userinfo_server_error ... ok
[INFO] [stdout] test rate_limiting::tests::test_concurrent_requests_different_keys_independent ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rate_limit_allows_requests_within_limit ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rate_limit_by_ip ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rate_limit_error_contains_retry_info ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_multiple_users_independent ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_presets ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rate_limit_per_key_independent ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rejected_login_attempts ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_rate_limit_rejects_over_limit ... ok
[INFO] [stdout] test security_config::tests::test_default_config ... ok
[INFO] [stdout] test security_config::tests::test_parse_from_json ... ok
[INFO] [stdout] test security_config::tests::test_apply_env_overrides ... ok
[INFO] [stdout] test security_init::tests::test_init_security_config_from_string ... ok
[INFO] [stdout] test security_init::tests::test_init_security_config_from_json ... ok
[INFO] [stdout] test rate_limiting::tests::test_thread_safe_rate_limiting ... ok
[INFO] [stdout] test security_init::tests::test_init_default_security_config ... ok
[INFO] [stdout] test security_init::tests::test_validate_security_config_leak_sensitive_fails ... ok
[INFO] [stdout] test security_init::tests::test_validate_security_config_success ... ok
[INFO] [stdout] test security_init::tests::test_init_security_config_missing_section ... ok
[INFO] [stdout] test security_init::tests::test_log_security_config ... ok
[INFO] [stdout] test security_tests::security_tests::test_randomness_quality ... ok
[INFO] [stdout] test security_tests::security_tests::test_csrf_state_is_cryptographically_random ... ok
[INFO] [stdout] test security_tests::security_tests::test_csrf_token_uniqueness_and_entropy ... ok
[INFO] [stdout] test security_tests::security_tests::test_csrf_token_url_safe_format ... ok
[INFO] [stdout] test security_tests::security_tests::test_jwt_audience_validation_support ... ok
[INFO] [stdout] test security_tests::security_tests::test_jwt_invalid_issuer_rejection ... ok
[INFO] [stdout] test security_tests::security_tests::test_jwt_expiration_enforcement ... ok
[INFO] [stdout] test session::tests::test_generate_refresh_token ... ok
[INFO] [stdout] test security_tests::security_tests::test_state_expiry_property ... ok
[INFO] [stdout] test session::tests::test_session_data_expired ... ok
[INFO] [stdout] test session::tests::test_hash_token ... ok
[INFO] [stdout] test session::tests::test_in_memory_store_get_session ... ok
[INFO] [stdout] test session::tests::test_in_memory_store_revoke_all_sessions ... ok
[INFO] [stdout] test session_postgres::tests::test_generate_access_token_with_rs256_key ... ok
[INFO] [stdout] test session::tests::test_in_memory_store_create_session ... ok
[INFO] [stdout] test session::tests::test_in_memory_store_revoke_session ... ok
[INFO] [stdout] test rate_limiting_tests::rate_limiting_tests::test_thread_safe_rate_limiting ... ok
[INFO] [stdout] test session::tests::test_session_data_not_expired ... ok
[INFO] [stdout] test oidc_provider::tests::test_add_auth_params ... ok
[INFO] [stdout] test session_postgres::tests::test_generate_access_token_creates_valid_jwt ... ok
[INFO] [stdout] test state_encryption::service_tests::test_aes_two_encryptions_differ ... ok
[INFO] [stdout] test state_encryption::service_tests::test_aes_wrong_key_fails ... ok
[INFO] [stdout] test state_encryption::service_tests::test_chacha_encrypt_decrypt_roundtrip ... ok
[INFO] [stdout] test state_encryption::service_tests::test_chacha_tampered_fails ... ok
[INFO] [stdout] test state_encryption::service_tests::test_aes_encrypt_decrypt_roundtrip ... ok
[INFO] [stdout] test state_encryption::service_tests::test_aes_tampered_fails ... ok
[INFO] [stdout] test state_encryption::service_tests::test_chacha_two_encryptions_differ ... ok
[INFO] [stdout] test state_encryption::service_tests::test_cross_algorithm_fails ... ok
[INFO] [stdout] test state_encryption::service_tests::test_bad_base64_invalid_input ... ok
[INFO] [stdout] test state_encryption::service_tests::test_debug_redacts_key ... ok
[INFO] [stdout] test state_encryption::service_tests::test_empty_ciphertext_invalid_input ... ok
[INFO] [stdout] test state_encryption::service_tests::test_chacha_wrong_key_fails ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_compiled_schema_disabled ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_compiled_schema_enabled ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_compiled_schema_missing ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_compiled_schema_enabled_missing_key_returns_error ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_hex_key_invalid_hex ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_hex_key_valid ... ok
[INFO] [stdout] test state_encryption::service_tests::test_from_hex_key_wrong_length ... ok
[INFO] [stdout] test state_encryption::service_tests::test_too_short_invalid_input ... ok
[INFO] [stdout] test state_encryption::tests::test_null_bytes_in_state ... ok
[INFO] [stdout] test state_encryption::tests::test_different_keys_fail_decryption ... ok
[INFO] [stdout] test state_encryption::tests::test_empty_state ... ok
[INFO] [stdout] test state_encryption::tests::test_encrypt_decrypt ... ok
[INFO] [stdout] test state_encryption::tests::test_encrypt_produces_ciphertext ... ok
[INFO] [stdout] test state_encryption::tests::test_key_generation ... ok
[INFO] [stdout] test state_encryption::tests::test_serialization ... ok
[INFO] [stdout] test state_encryption::tests::test_tampered_nonce_fails ... ok
[INFO] [stdout] test state_encryption::tests::test_random_nonces ... ok
[INFO] [stdout] test state_encryption::tests::test_unicode_state ... ok
[INFO] [stdout] test state_encryption::tests::test_special_characters ... ok
[INFO] [stdout] test state_encryption::tests::test_truncated_ciphertext_fails ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_different_keys_cannot_decrypt ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_encrypt_decrypt_state ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_encrypt_empty_state ... ok
[INFO] [stdout] test state_encryption::tests::test_tampered_ciphertext_fails ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_key_generation_creates_different_keys ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_encrypt_produces_ciphertext ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_serialize_deserialize_encrypted_state ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_tampered_ciphertext_fails_decrypt ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_special_characters_state ... ok
[INFO] [stdout] test oauth::tests::test_get_userinfo_no_endpoint ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_key_generation_creates_32_bytes ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_nonce_prevents_replay ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store_bounded ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_tampered_nonce_fails_decrypt ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_multiple_states ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_replay_prevention ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_unicode_state ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store ... ok
[INFO] [stdout] test state_store::tests::test_state_not_found ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store_cleanup_expired ... ok
[INFO] [stdout] test state_encryption_tests::state_encryption_tests::test_encrypt_long_state ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store_custom_max_size ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store_zero_max_enforced ... ok
[INFO] [stdout] test state_store::tests::test_in_memory_state_store_trait_object ... ok
[INFO] [stdout] test state_encryption::tests::test_long_state ... ok
[INFO] [stdout] test rate_limiting::tests::test_concurrent_requests_from_same_key_respects_limit ... ok
[INFO] [stdout] test oauth::tests::test_get_userinfo_success ... ok
[INFO] [stdout] test oidc_provider::tests::test_oauth_provider_debug ... ok
[INFO] [stdout] test state_encryption::tests::test_large_ciphertext ... ok
[INFO] [stdout] test oauth::tests::test_verify_id_token_rejects_missing_kid ... ok
[INFO] [stdout] test pkce::tests::test_expired_state_returns_state_expired_not_not_found ... ok
[INFO] [stdout] test pkce::tests::test_cleanup_removes_expired_leaves_valid ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 433 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.82s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/concurrency_rate_limiter.rs (/opt/rustwide/target/debug/deps/concurrency_rate_limiter-1184372136dbf1b1)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test test_concurrent_check_and_clear ... ok
[INFO] [stdout] test test_100_threads_exact_limit_enforcement ... ok
[INFO] [stdout] test test_per_key_isolation_under_contention ... ok
[INFO] [stdout] test test_high_contention_single_key ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/error_oidc_integration.rs (/opt/rustwide/target/debug/deps/error_oidc_integration-832e148c69cea2dc)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test oidc_discovery_server_error_returns_metadata_error ... ok
[INFO] [stdout] test oidc_discovery_success_with_valid_metadata ... ok
[INFO] [stdout] test oidc_discovery_missing_required_fields_returns_error ... ok
[INFO] [stdout] test oidc_discovery_connection_refused_returns_error ... ok
[INFO] [stdout] test oidc_discovery_invalid_json_returns_metadata_error ... ok
[INFO] [stderr]      Running tests/error_rate_limiter_memory.rs (/opt/rustwide/target/debug/deps/error_rate_limiter_memory-70ffb4ce5447eac0)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test test_rate_limiter_disabled_skips_tracking ... ok
[INFO] [stdout] test test_rate_limiter_clear_reclaims_memory ... ok
[INFO] [stdout] test test_rate_limiter_memory_bounded_by_entry_count ... ok
[INFO] [stdout] test test_rate_limiter_handles_many_unique_keys ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pkce_roundtrip_test.rs (/opt/rustwide/target/debug/deps/pkce_roundtrip_test-3f66e64a2d89032f)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test test_pkce_state_roundtrip_without_encryption ... ok
[INFO] [stdout] test test_pkce_state_tampered_token_rejected ... ok
[INFO] [stdout] test test_pkce_state_roundtrip_with_encryption ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests fraiseql_auth
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test src/constant_time.rs - constant_time::ConstantTimeOps::compare (line 21) ... ignored
[INFO] [stdout] test src/constant_time.rs - constant_time::ConstantTimeOps::compare_padded (line 75) ... ignored
[INFO] [stdout] test src/oidc_provider.rs - oidc_provider::OidcProvider (line 26) ... ignored
[INFO] [stdout] test src/providers/logto.rs - providers::logto::LogtoOAuth (line 18) ... ignored
[INFO] [stdout] test src/providers/ory.rs - providers::ory::OryOAuth (line 18) ... ignored
[INFO] [stdout] test src/security_init.rs - security_init::init_security_config (line 48) ... ignored
[INFO] [stdout] test src/session.rs - session::SessionStore (line 54) ... ignored
[INFO] [stdout] test src/session.rs - session::SessionStore (line 67) ... ignored
[INFO] [stdout] test src/state_store.rs - state_store::StateStore (line 19) ... ignored
[INFO] [stdout] test src/state_store.rs - state_store::StateStore (line 24) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 10 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2473b32012bbd7737c26ea11524c690741590a4c8bc775d3f6d8d50a07a33f5e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2473b32012bbd7737c26ea11524c690741590a4c8bc775d3f6d8d50a07a33f5e", kill_on_drop: false }`
[INFO] [stdout] 2473b32012bbd7737c26ea11524c690741590a4c8bc775d3f6d8d50a07a33f5e
