@@ -5,6 +5,7 @@ import org.junit.Test
55import org.junit.runner.RunWith
66import org.junit.runners.JUnit4
77import to.bitkit.utils.Bip21Utils.buildBip21Url
8+ import to.bitkit.utils.Bip21Utils.isDuplicatedBip21
89
910@RunWith(JUnit4 ::class )
1011class Bip21UrlBuilderTest {
@@ -171,4 +172,47 @@ class Bip21UrlBuilderTest {
171172 val expected = " bitcoin:$address ?amount=0.0001&message=Bitkit&lightning=${invoice.encodeToUrl()} "
172173 Assert .assertEquals(expected, buildBip21Url(address, amount, lightningInvoice = invoice))
173174 }
175+
176+ // Tests for isDuplicatedBip21 - Workaround for bitkit-core#63
177+
178+ @Test
179+ fun `isDuplicatedBip21 returns false for single valid BIP21 URI` () {
180+ val input = " bitcoin:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq?amount=0.001&message=Bitkit"
181+ Assert .assertFalse(isDuplicatedBip21(input))
182+ }
183+
184+ @Test
185+ fun `isDuplicatedBip21 returns true when BIP21 URI is duplicated` () {
186+ val first = " bitcoin:bcrt1qr289x0fhg62672e8urudfnxnsr8tcax64xk2vk?amount=0.0000002&message=Bitkit"
187+ val second = " bitcoin:bcrt1qr289x0fhg62672e8urudfnxnsr8tcax64xk2vk?amount=0.0000003&message=Bitkit"
188+ val input = first + second
189+ Assert .assertTrue(isDuplicatedBip21(input))
190+ }
191+
192+ @Test
193+ fun `isDuplicatedBip21 handles case-insensitive bitcoin prefix` () {
194+ val first = " BITCOIN:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq?amount=0.001"
195+ val second = " bitcoin:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq?amount=0.002"
196+ val input = first + second
197+ Assert .assertTrue(isDuplicatedBip21(input))
198+ }
199+
200+ @Test
201+ fun `isDuplicatedBip21 returns false for non-bitcoin URIs` () {
202+ val input = " lnbc500n1p3k9v3pp5kzmj..."
203+ Assert .assertFalse(isDuplicatedBip21(input))
204+ }
205+
206+ @Test
207+ fun `isDuplicatedBip21 returns false for empty string` () {
208+ Assert .assertFalse(isDuplicatedBip21(" " ))
209+ }
210+
211+ @Test
212+ fun `isDuplicatedBip21 handles mixed case duplicated URIs` () {
213+ val first = " Bitcoin:bc1qaddr1?amount=0.001"
214+ val second = " BITCOIN:bc1qaddr2?amount=0.002"
215+ val input = first + second
216+ Assert .assertTrue(isDuplicatedBip21(input))
217+ }
174218}
0 commit comments