diff --git a/CHANGELOG.md b/CHANGELOG.md index 48301bf..0c74888 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,22 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - (Notify of any improvements related to security vulnerabilities or potential risks.) --- +## [1.0.1] - 2025-01-09 + +### Added +- Enhanced WhatsOnChainBroadcaster network handling: + - Added support for Network enum initialization (Network.MAINNET/Network.TESTNET) + - Added robust backward compatibility for string network parameters ('main'/'test'/'mainnet'/'testnet') + - Added input validation and clear error messages for invalid network parameters + - Added type hints and docstrings for better code clarity +- Added comprehensive test suite for WhatsOnChainBroadcaster: + - Added test cases for Network enum initialization + - Added test cases for string-based network parameters + - Added validation tests for invalid network inputs + - Added URL construction validation tests + +--- + ## [1.0.0] - 2024-12-23 diff --git a/tests/test_woc.py b/tests/test_woc.py new file mode 100644 index 0000000..2cdf35a --- /dev/null +++ b/tests/test_woc.py @@ -0,0 +1,33 @@ +import pytest +from bsv.broadcasters.whatsonchain import WhatsOnChainBroadcaster +from bsv.constants import Network +from bsv.broadcaster import BroadcastResponse, BroadcastFailure + + +class TestWhatsOnChainBroadcast: + def test_network_enum(self): + # Initialize with Network enum + broadcaster = WhatsOnChainBroadcaster(Network.MAINNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster(Network.TESTNET) + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + def test_network_string(self): + # Initialize with string (backward compatibility) + broadcaster = WhatsOnChainBroadcaster("main") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("test") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("mainnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/main/tx/raw" + + broadcaster = WhatsOnChainBroadcaster("testnet") + assert broadcaster.URL == "https://api.whatsonchain.com/v1/bsv/test/tx/raw" + + def test_invalid_network(self): + # Test invalid network string + with pytest.raises(ValueError, match="Invalid network string:"): + WhatsOnChainBroadcaster("invalid_network") \ No newline at end of file