============================= test session starts =============================
platform win32 -- Python 3.12.11, pytest-9.0.0, pluggy-1.6.0 -- C:\Users\DELL\github\PyMLS\.venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\DELL\github\PyMLS
configfile: pyproject.toml
testpaths: tests
collecting ... collected 173 items

tests/test_api_session.py::TestAPISession::test_create_add_commit_join_and_message SKIPPED [  0%]
tests/test_ciphersuites.py::TestCiphersuites::test_all_ciphersuites PASSED [  1%]
tests/test_ciphersuites.py::TestCiphersuites::test_all_supported_ciphersuites PASSED [  1%]
tests/test_ciphersuites.py::TestCiphersuites::test_ciphersuite_consistency PASSED [  2%]
tests/test_ciphersuites.py::TestCiphersuites::test_ciphersuite_properties PASSED [  2%]
tests/test_ciphersuites.py::TestCiphersuites::test_find_by_triple_invalid PASSED [  3%]
tests/test_ciphersuites.py::TestCiphersuites::test_find_by_triple_valid PASSED [  4%]
tests/test_ciphersuites.py::TestCiphersuites::test_get_ciphersuite_by_id_invalid PASSED [  4%]
tests/test_ciphersuites.py::TestCiphersuites::test_get_ciphersuite_by_id_valid PASSED [  5%]
tests/test_ciphersuites.py::TestCiphersuites::test_get_ciphersuite_by_name_invalid PASSED [  5%]
tests/test_ciphersuites.py::TestCiphersuites::test_get_ciphersuite_by_name_valid PASSED [  6%]
tests/test_ciphersuites.py::TestCiphersuites::test_list_ciphersuite_ids PASSED [  6%]
tests/test_ciphersuites.py::TestCiphersuites::test_list_ciphersuite_names PASSED [  7%]
tests/test_codec_mls.py::TestCodecMLS::test_decode_proposals_insufficient_data PASSED [  8%]
tests/test_codec_mls.py::TestCodecMLS::test_encode_decode_commit_roundtrip PASSED [  8%]
tests/test_codec_mls.py::TestCodecMLS::test_encode_decode_empty_proposals PASSED [  9%]
tests/test_codec_mls.py::TestCodecMLS::test_encode_decode_proposals_roundtrip PASSED [  9%]
tests/test_codec_mls.py::TestCodecMLS::test_encode_decode_single_proposal PASSED [ 10%]
tests/test_codec_mls.py::TestCodecMLS::test_encode_decode_welcome_roundtrip PASSED [ 10%]
tests/test_crypto_provider.py::TestCryptoProvider::test_active_ciphersuite PASSED [ 11%]
tests/test_crypto_provider.py::TestCryptoProvider::test_aead_different_aad PASSED [ 12%]
tests/test_crypto_provider.py::TestCryptoProvider::test_aead_key_size PASSED [ 12%]
tests/test_crypto_provider.py::TestCryptoProvider::test_aead_nonce_size PASSED [ 13%]
tests/test_crypto_provider.py::TestCryptoProvider::test_aead_roundtrip PASSED [ 13%]
tests/test_crypto_provider.py::TestCryptoProvider::test_aead_wrong_aad PASSED [ 14%]
tests/test_crypto_provider.py::TestCryptoProvider::test_derive_key_pair PASSED [ 15%]
tests/test_crypto_provider.py::TestCryptoProvider::test_derive_key_pair_different_seeds PASSED [ 15%]
tests/test_crypto_provider.py::TestCryptoProvider::test_derive_secret PASSED [ 16%]
tests/test_crypto_provider.py::TestCryptoProvider::test_expand_with_label_different_contexts PASSED [ 16%]
tests/test_crypto_provider.py::TestCryptoProvider::test_generate_key_pair PASSED [ 17%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hash PASSED      [ 17%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hash_different_inputs PASSED [ 18%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hmac_deterministic PASSED [ 19%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hmac_sign_verify PASSED [ 19%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hpke_different_info SKIPPED [ 20%]
tests/test_crypto_provider.py::TestCryptoProvider::test_hpke_roundtrip SKIPPED [ 20%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kdf_expand PASSED [ 21%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kdf_expand_different_lengths PASSED [ 21%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kdf_extract PASSED [ 22%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kdf_extract_deterministic PASSED [ 23%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kdf_hash_len PASSED [ 23%]
tests/test_crypto_provider.py::TestCryptoProvider::test_kem_pk_size PASSED [ 24%]
tests/test_crypto_provider.py::TestCryptoProvider::test_labeled_expand_and_derive PASSED [ 24%]
tests/test_crypto_provider.py::TestCryptoProvider::test_set_ciphersuite PASSED [ 25%]
tests/test_crypto_provider.py::TestCryptoProvider::test_set_ciphersuite_invalid PASSED [ 26%]
tests/test_crypto_provider.py::TestCryptoProvider::test_sign_verify PASSED [ 26%]
tests/test_crypto_provider.py::TestCryptoProvider::test_sign_with_label_verify_with_label PASSED [ 27%]
tests/test_crypto_provider.py::TestCryptoProvider::test_supported_ciphersuites PASSED [ 27%]
tests/test_crypto_utils.py::TestCryptoUtils::test_secure_wipe_all_bytes_zeroed PASSED [ 28%]
tests/test_crypto_utils.py::TestCryptoUtils::test_secure_wipe_empty PASSED [ 28%]
tests/test_crypto_utils.py::TestCryptoUtils::test_secure_wipe_in_place PASSED [ 29%]
tests/test_crypto_utils.py::TestCryptoUtils::test_secure_wipe_large PASSED [ 30%]
tests/test_crypto_utils.py::TestCryptoUtils::test_secure_wipe_small PASSED [ 30%]
tests/test_data_structures_roundtrip.py::TestDataStructuresRoundtrip::test_commit_roundtrip PASSED [ 31%]
tests/test_data_structures_roundtrip.py::TestDataStructuresRoundtrip::test_proposals_roundtrip PASSED [ 31%]
tests/test_data_structures_roundtrip.py::TestDataStructuresRoundtrip::test_welcome_roundtrip PASSED [ 32%]
tests/test_extensions.py::TestExtensions::test_build_parse_capabilities_data PASSED [ 32%]
tests/test_extensions.py::TestExtensions::test_build_parse_capabilities_data_empty PASSED [ 33%]
tests/test_extensions.py::TestExtensions::test_build_parse_required_capabilities PASSED [ 34%]
tests/test_extensions.py::TestExtensions::test_build_parse_required_capabilities_empty PASSED [ 34%]
tests/test_extensions.py::TestExtensions::test_extension_roundtrip_all_types PASSED [ 35%]
tests/test_extensions.py::TestExtensions::test_extension_serialize_deserialize PASSED [ 35%]
tests/test_extensions.py::TestExtensions::test_make_capabilities_ext PASSED [ 36%]
tests/test_extensions.py::TestExtensions::test_make_key_id_ext PASSED    [ 36%]
tests/test_extensions.py::TestExtensions::test_make_parent_hash_ext PASSED [ 37%]
tests/test_extensions.py::TestExtensions::test_make_parse_external_pub_ext PASSED [ 38%]
tests/test_extensions.py::TestExtensions::test_make_parse_lifetime_ext PASSED [ 38%]
tests/test_extensions.py::TestExtensions::test_serialize_deserialize_extensions_empty PASSED [ 39%]
tests/test_extensions.py::TestExtensions::test_serialize_deserialize_extensions_multiple PASSED [ 39%]
tests/test_fuzz_deserialize.py::TestFuzzDeserialize::test_ciphertext_fuzz PASSED [ 40%]
tests/test_fuzz_deserialize.py::TestFuzzDeserialize::test_plaintext_fuzz PASSED [ 41%]
tests/test_group_flow.py::TestGroupFlow::test_add_join_and_message SKIPPED [ 41%]
tests/test_groupinfo_verification.py::TestGroupInfoVerification::test_groupinfo_signature_verification_with_tree_extension PASSED [ 42%]
tests/test_hpke_labels.py::TestHPKELabels::test_encode_encrypt_context_empty SKIPPED [ 42%]
tests/test_hpke_labels.py::TestHPKELabels::test_encode_encrypt_context_roundtrip_structure SKIPPED [ 43%]
tests/test_hpke_labels.py::TestHPKELabels::test_encode_encrypt_context_with_data SKIPPED [ 43%]
tests/test_hpke_labels.py::TestHPKELabels::test_encrypt_decrypt_with_label_different_contexts SKIPPED [ 44%]
tests/test_hpke_labels.py::TestHPKELabels::test_encrypt_decrypt_with_label_different_labels SKIPPED [ 45%]
tests/test_hpke_labels.py::TestHPKELabels::test_encrypt_decrypt_with_label_empty_plaintext SKIPPED [ 45%]
tests/test_hpke_labels.py::TestHPKELabels::test_encrypt_decrypt_with_label_roundtrip SKIPPED [ 46%]
tests/test_interop_wire.py::TestInteropWire::test_encode_application_preserves_structure PASSED [ 46%]
tests/test_interop_wire.py::TestInteropWire::test_encode_decode_application_roundtrip PASSED [ 47%]
tests/test_interop_wire.py::TestInteropWire::test_encode_decode_handshake_roundtrip PASSED [ 47%]
tests/test_interop_wire.py::TestInteropWire::test_encode_handshake_preserves_structure PASSED [ 48%]
tests/test_kem_derive_key_pair.py::test_derive_key_pair_is_deterministic PASSED [ 49%]
tests/test_key_schedule.py::TestKeySchedule::test_derivations_and_sender_nonce PASSED [ 49%]
tests/test_messages_functions.py::TestMessagesFunctions::test_protect_unprotect_app PASSED [ 50%]
tests/test_messages_functions.py::TestMessagesFunctions::test_sender_data_encrypt_decrypt PASSED [ 50%]
tests/test_messages_functions.py::TestMessagesFunctions::test_sign_verify_and_membership PASSED [ 51%]
tests/test_messages_utils.py::TestMessagesUtils::test_add_zero_padding_needs_padding PASSED [ 52%]
tests/test_messages_utils.py::TestMessagesUtils::test_add_zero_padding_no_padding_needed PASSED [ 52%]
tests/test_messages_utils.py::TestMessagesUtils::test_add_zero_padding_various_sizes PASSED [ 53%]
tests/test_messages_utils.py::TestMessagesUtils::test_add_zero_padding_zero_pad_to PASSED [ 53%]
tests/test_messages_utils.py::TestMessagesUtils::test_apply_application_padding_already_aligned PASSED [ 54%]
tests/test_messages_utils.py::TestMessagesUtils::test_apply_application_padding_block_size PASSED [ 54%]
tests/test_messages_utils.py::TestMessagesUtils::test_apply_application_padding_zero_block PASSED [ 55%]
tests/test_messages_utils.py::TestMessagesUtils::test_apply_remove_application_padding_roundtrip PASSED [ 56%]
tests/test_messages_utils.py::TestMessagesUtils::test_apply_remove_application_padding_various_sizes PASSED [ 56%]
tests/test_messages_utils.py::TestMessagesUtils::test_compute_ciphertext_aad PASSED [ 57%]
tests/test_messages_utils.py::TestMessagesUtils::test_compute_ciphertext_aad_different_types PASSED [ 57%]
tests/test_messages_utils.py::TestMessagesUtils::test_compute_ciphertext_aad_empty PASSED [ 58%]
tests/test_messages_utils.py::TestMessagesUtils::test_remove_application_padding_empty PASSED [ 58%]
tests/test_messages_utils.py::TestMessagesUtils::test_remove_application_padding_malformed PASSED [ 59%]
tests/test_messages_utils.py::TestMessagesUtils::test_strip_trailing_zeros PASSED [ 60%]
tests/test_messages_utils.py::TestMessagesUtils::test_strip_trailing_zeros_all_zeros PASSED [ 60%]
tests/test_messages_utils.py::TestMessagesUtils::test_strip_trailing_zeros_empty PASSED [ 61%]
tests/test_messages_utils.py::TestMessagesUtils::test_strip_trailing_zeros_mixed PASSED [ 61%]
tests/test_messages_utils.py::TestMessagesUtils::test_strip_trailing_zeros_no_zeros PASSED [ 62%]
tests/test_mls_group_external_and_persist.py::TestMLSGroupExternalAndPersist::test_external_commit_processing PASSED [ 63%]
tests/test_mls_group_external_and_persist.py::TestMLSGroupExternalAndPersist::test_persistence PASSED [ 63%]
tests/test_negative.py::TestNegative::test_invalid_commit_signature_raises PASSED [ 64%]
tests/test_negative.py::TestNegative::test_process_commit_missing_referenced_proposal_raises PASSED [ 64%]
tests/test_proposal_ordering_flags.py::test_commit_path_required_psk_only PASSED [ 65%]
tests/test_proposal_ordering_flags.py::test_commit_path_required_update_remove_gce PASSED [ 65%]
tests/test_psk_binder.py::TestPSKBinder::test_commit_carries_psk_binder PASSED [ 66%]
tests/test_ratchet_tree_full.py::test_full_tree_welcome_roundtrip PASSED [ 67%]
tests/test_ratchet_tree_full.py::test_parent_hash_changes_on_path_update PASSED [ 67%]
tests/test_ratchet_tree_ops.py::TestRatchetTreeOps::test_add_and_tree_hash PASSED [ 68%]
tests/test_ratchet_tree_ops.py::TestRatchetTreeOps::test_update_path_and_merge PASSED [ 68%]
tests/test_ratchet_tree_ops.py::TestRatchetTreeOps::test_welcome_tree_extension_roundtrip PASSED [ 69%]
tests/test_ratchet_tree_truncation.py::test_truncate_immediately_on_remove PASSED [ 69%]
tests/test_refs.py::TestRefs::test_encode_ref_hash_input_empty PASSED    [ 70%]
tests/test_refs.py::TestRefs::test_encode_ref_hash_input_structure PASSED [ 71%]
tests/test_refs.py::TestRefs::test_encode_ref_hash_input_with_data PASSED [ 71%]
tests/test_refs.py::TestRefs::test_key_package_ref_vs_proposal_ref_different PASSED [ 72%]
tests/test_refs.py::TestRefs::test_make_key_package_ref PASSED           [ 72%]
tests/test_refs.py::TestRefs::test_make_key_package_ref_deterministic PASSED [ 73%]
tests/test_refs.py::TestRefs::test_make_key_package_ref_different_values PASSED [ 73%]
tests/test_refs.py::TestRefs::test_make_proposal_ref PASSED              [ 74%]
tests/test_refs.py::TestRefs::test_make_proposal_ref_deterministic PASSED [ 75%]
tests/test_refs.py::TestRefs::test_make_proposal_ref_different_values PASSED [ 75%]
tests/test_refs.py::TestRefs::test_refs_with_empty_value PASSED          [ 76%]
tests/test_secret_tree.py::TestSecretTree::test_application_and_handshake_paths PASSED [ 76%]
tests/test_secret_tree.py::TestSecretTree::test_multi_leaf_isolation PASSED [ 77%]
tests/test_secret_tree_window.py::test_secret_tree_window_out_of_order_and_eviction PASSED [ 78%]
tests/test_secret_tree_window.py::test_secret_tree_window_handshake_branch PASSED [ 78%]
tests/test_tls.py::TestTLSCodec::test_multiple_vectors PASSED            [ 79%]
tests/test_tls.py::TestTLSCodec::test_opaque16_roundtrip PASSED          [ 79%]
tests/test_tls.py::TestTLSCodec::test_opaque24_roundtrip PASSED          [ 80%]
tests/test_tls.py::TestTLSCodec::test_opaque8_roundtrip PASSED           [ 80%]
tests/test_tls.py::TestTLSCodec::test_opaque_length_limits PASSED        [ 81%]
tests/test_tls.py::TestTLSCodec::test_read_uint_insufficient_data PASSED [ 82%]
tests/test_tls.py::TestTLSCodec::test_read_uint_with_offset PASSED       [ 82%]
tests/test_tls.py::TestTLSCodec::test_read_vector_insufficient_data PASSED [ 83%]
tests/test_tls.py::TestTLSCodec::test_uint16_roundtrip PASSED            [ 83%]
tests/test_tls.py::TestTLSCodec::test_uint24_roundtrip PASSED            [ 84%]
tests/test_tls.py::TestTLSCodec::test_uint32_roundtrip PASSED            [ 84%]
tests/test_tls.py::TestTLSCodec::test_uint64_roundtrip PASSED            [ 85%]
tests/test_tls.py::TestTLSCodec::test_uint8_roundtrip PASSED             [ 86%]
tests/test_tls.py::TestTLSCodec::test_vector_invalid_length_bytes PASSED [ 86%]
tests/test_tls.py::TestTLSCodec::test_vector_length_limits PASSED        [ 87%]
tests/test_tls.py::TestTLSCodec::test_vector_roundtrip PASSED            [ 87%]
tests/test_transcript_bootstrap.py::test_transcript_bootstrap_initial_interim PASSED [ 88%]
tests/test_tree_math.py::TestTreeMath::test_copath PASSED                [ 89%]
tests/test_tree_math.py::TestTreeMath::test_direct_path PASSED           [ 89%]
tests/test_tree_math.py::TestTreeMath::test_direct_path_and_copath_relationship PASSED [ 90%]
tests/test_tree_math.py::TestTreeMath::test_left PASSED                  [ 90%]
tests/test_tree_math.py::TestTreeMath::test_level PASSED                 [ 91%]
tests/test_tree_math.py::TestTreeMath::test_log2 PASSED                  [ 91%]
tests/test_tree_math.py::TestTreeMath::test_node_width PASSED            [ 92%]
tests/test_tree_math.py::TestTreeMath::test_parent PASSED                [ 93%]
tests/test_tree_math.py::TestTreeMath::test_right PASSED                 [ 93%]
tests/test_tree_math.py::TestTreeMath::test_root PASSED                  [ 94%]
tests/test_tree_math.py::TestTreeMath::test_sibling PASSED               [ 94%]
tests/test_tree_math.py::TestTreeMath::test_tree_structure_consistency PASSED [ 95%]
tests/test_update_path_shape.py::test_create_update_path_shape_two_leaves PASSED [ 95%]
tests/test_validations_rules.py::TestValidations::test_commit_matches_refs PASSED [ 96%]
tests/test_validations_rules.py::TestValidations::test_remove_bounds PASSED [ 97%]
tests/test_validations_rules.py::TestValidations::test_unique_adds_by_user PASSED [ 97%]
tests/test_vectors_key_schedule.py::TestKeyScheduleVectors::test_vector_fields_present PASSED [ 98%]
tests/test_x509_policy.py::TestX509Policy::test_policy_accepts_valid_cert PASSED [ 98%]
tests/test_x509_policy.py::TestX509Policy::test_policy_rejects_missing_eku PASSED [ 99%]
tests/test_x509_policy.py::TestX509Policy::test_policy_rejects_missing_ku PASSED [100%]

======================= 162 passed, 11 skipped in 4.22s =======================
