diff --git a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift index 97529c7a01a..eb58984367e 100644 --- a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift +++ b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/DataTransformersTests.swift @@ -85,11 +85,12 @@ final class DataTransformersTests: XCTestCase { } func testParseAddressBech32m() { - // Valid testnet bech32m address - let address = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // A real DIP-0018 testnet platform address (tdash1...). + let address = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" let data = AddressTransformer.parseAddress(address) - // Should return data if Bech32m decoder works, nil otherwise - XCTAssertTrue(data == nil || data?.count == 21) + XCTAssertEqual(data?.count, 21, "a valid tdash1 address must decode to the 21-byte payload") + // The pre-DIP-0018 HRP is rejected. + XCTAssertNil(AddressTransformer.parseAddress("tdashevo1qz4242424242424242424242424242424g4dj6u7")) } func testParseAddressInvalid() { diff --git a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift index 68f21874f6e..54343dc0e30 100644 --- a/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift +++ b/packages/swift-sdk/SwiftTests/SwiftDashSDKTests/ValidationTests.swift @@ -76,15 +76,19 @@ final class ValidationTests: XCTestCase { } func testValidateBech32mAddress_valid() { - // Valid testnet address (tdashevo1...) - // Using a well-formed bech32m address - let validTestnetAddress = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // A real DIP-0018 testnet platform address (tdash1..., 21-byte + // payload, valid bech32m checksum) — proof-verified on testnet. + let validTestnetAddress = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" XCTAssertTrue(AddressValidator.validateBech32mAddress(validTestnetAddress)) } func testValidateBech32mAddress_invalid() { // Wrong HRP XCTAssertFalse(AddressValidator.validateBech32mAddress("bitcoin1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq")) + // Pre-DIP-0018 HRP ("tdashevo") — rejected since the DIP-0018 + // decode fix; the canonical testnet HRP is "tdash". + XCTAssertFalse( + AddressValidator.validateBech32mAddress("tdashevo1qz4242424242424242424242424242424g4dj6u7")) // No separator XCTAssertFalse(AddressValidator.validateBech32mAddress("tdashevoqqqqqqqqqqq")) // Empty @@ -98,8 +102,8 @@ final class ValidationTests: XCTestCase { let hexAddr = "00aaff11223344556677889900aabbccddeeff0011" XCTAssertTrue(AddressValidator.validateAddress(hexAddr)) - // Bech32m address (if valid) - let bech32mAddr = "tdashevo1qz4242424242424242424242424242424g4dj6u7" + // DIP-0018 bech32m address + let bech32mAddr = "tdash1kzdl4c3apkekqevkqrzctgagv2v2ng5hysegt5x4" XCTAssertTrue(AddressValidator.validateAddress(bech32mAddr)) // Invalid