ble-reticulum/tests
torlando-tech 9a0a4963e8 fix: verify connection is still alive before rejecting duplicate identity
When a peer disconnects, identity_to_address is NOT cleaned up immediately -
it's only removed after a 2-second grace period. However, _check_duplicate_identity
was not checking if the existing address is still connected before rejecting.

This caused legitimate reconnections from the same identity (after MAC rotation
or reconnection) to be incorrectly rejected as "duplicates" during the grace
period or when cleanup was delayed.

The fix adds two checks before rejecting:
1. If pending_detach exists for this identity (old connection already gone)
2. If existing address is not in connected_peers or peers dict

Also adds TDD tests that demonstrate the bug and verify the fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 03:34:17 -05:00
..
conftest.py fix: update paths in installer, tests, and workflows for package rename 2025-12-29 23:58:18 -05:00
mock_ble_driver.py fix(tests): update tests for driver callback signature and Python 3.14 compatibility 2026-01-18 01:26:57 -05:00
test_ble_duplicate_identity_stale.py fix: verify connection is still alive before rejecting duplicate identity 2026-01-18 03:34:17 -05:00
test_ble_peer_interface.py fix(tests): update tests for driver callback signature and Python 3.14 compatibility 2026-01-18 01:26:57 -05:00
test_bleak_threading_hang.py Initial commit: BLE Reticulum interface 2025-10-26 19:14:14 -04:00
test_bleak_with_exec_loading.py Initial commit: BLE Reticulum interface 2025-10-26 19:14:14 -04:00
test_bluez_state_cleanup.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_breddr_fallback_prevention.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_config_directory.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_dbus_disconnect_monitoring.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_error_recovery.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_fragmentation.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_gatt_server.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_gatt_server_readiness.py fix(ble): Add D-Bus verification to prevent GATT server initialization race 2025-11-10 19:51:23 -05:00
test_hci_error_fixes.py fix: update paths in installer, tests, and workflows for package rename 2025-12-29 23:58:18 -05:00
test_identity_cache.py test: fix test suite for BLE interface changes 2026-01-01 14:03:59 -05:00
test_identity_hash.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_identity_mapping_cleanup.py fix: Clean up identity mappings on disconnect to prevent stale connections 2025-11-13 15:37:54 -05:00
test_installer.sh refactor: make libffi-dev conditional for armhf (32-bit ARM) only 2025-10-29 11:02:51 -04:00
test_integration.py fix: update paths in installer, tests, and workflows for package rename 2025-12-29 23:58:18 -05:00
test_interface_cleanup.py test: add comprehensive tests for interface cleanup methods 2026-01-01 19:32:17 -05:00
test_mac_rotation_blacklist_bug.py fix: verify connection is still alive before rejecting duplicate identity 2026-01-18 03:34:17 -05:00
test_multi_device_simulation.py Initial commit: BLE Reticulum interface 2025-10-26 19:14:14 -04:00
test_peer_address_mac_rotation.py fix(tests): update tests for driver callback signature and Python 3.14 compatibility 2026-01-18 01:26:57 -05:00
test_peripheral_disconnect_cleanup.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_prioritization.py fix: update paths in installer, tests, and workflows for package rename 2025-12-29 23:58:18 -05:00
test_scanner_connection_coordination.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_stale_connection_polling.py refactor: rename package from RNS.Interfaces to ble_reticulum 2025-12-29 23:30:07 -05:00
test_v2_2_identity_handshake.py fix(tests): update tests for driver callback signature and Python 3.14 compatibility 2026-01-18 01:26:57 -05:00
test_v2_2_mac_sorting.py test: fix test suite for BLE interface changes 2026-01-01 14:03:59 -05:00
test_v2_2_race_conditions.py fix(tests): update tests for driver callback signature and Python 3.14 compatibility 2026-01-18 01:26:57 -05:00