mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2024-11-19 09:52:09 +01:00
Add unit test for address creation when we are already watching the script (#4152)
* Add unit test for address creation when we are already watching the script * revert wallet * Add upsert test too * revert test again
This commit is contained in:
parent
374c1d7b9f
commit
4cefa56c99
@ -1,6 +1,17 @@
|
|||||||
package org.bitcoins.wallet.models
|
package org.bitcoins.wallet.models
|
||||||
|
|
||||||
import org.bitcoins.core.api.wallet.db.AddressRecord
|
import org.bitcoins.core.api.wallet.db.{
|
||||||
|
AddressRecord,
|
||||||
|
ScriptPubKeyDb,
|
||||||
|
SegWitAddressDb
|
||||||
|
}
|
||||||
|
import org.bitcoins.core.hd.SegWitHDPath
|
||||||
|
import org.bitcoins.core.protocol.Bech32Address
|
||||||
|
import org.bitcoins.core.protocol.script.{
|
||||||
|
EmptyScriptWitness,
|
||||||
|
P2WPKHWitnessSPKV0
|
||||||
|
}
|
||||||
|
import org.bitcoins.crypto.ECPublicKey
|
||||||
import org.bitcoins.testkit.fixtures.WalletDAOFixture
|
import org.bitcoins.testkit.fixtures.WalletDAOFixture
|
||||||
import org.bitcoins.testkit.wallet.WalletTestUtil
|
import org.bitcoins.testkit.wallet.WalletTestUtil
|
||||||
|
|
||||||
@ -79,4 +90,70 @@ class AddressDAOTest extends WalletDAOFixture {
|
|||||||
assert(!found.contains(created3))
|
assert(!found.contains(created3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
it must "insert an address into the database whose script is already being watched" in {
|
||||||
|
daos =>
|
||||||
|
val spkDAO = daos.scriptPubKeyDAO
|
||||||
|
val addressDAO = daos.addressDAO
|
||||||
|
val addrStr = "bc1qfjex5a4m5w0atqrpwad3zj4vkfkuhun46tge9c"
|
||||||
|
val address = Bech32Address.fromString(addrStr)
|
||||||
|
val spk = address.scriptPubKey.asInstanceOf[P2WPKHWitnessSPKV0]
|
||||||
|
//insert the script first
|
||||||
|
val spkDb = ScriptPubKeyDb(address.scriptPubKey)
|
||||||
|
val createdSpkF = spkDAO.create(spkDb)
|
||||||
|
|
||||||
|
//now try to insert the address in the database
|
||||||
|
val segwitHdPath: SegWitHDPath =
|
||||||
|
SegWitHDPath.fromString("m/84'/0'/0'/0/0")
|
||||||
|
val pubKey: ECPublicKey = ECPublicKey.freshPublicKey
|
||||||
|
val addressDb = SegWitAddressDb.apply(segwitHdPath,
|
||||||
|
pubKey,
|
||||||
|
spk.pubKeyHash,
|
||||||
|
address,
|
||||||
|
EmptyScriptWitness,
|
||||||
|
spk)
|
||||||
|
for {
|
||||||
|
createdSpk <- createdSpkF
|
||||||
|
_ <- addressDAO.create(addressDb)
|
||||||
|
//make sure we can find it now
|
||||||
|
foundOpt <- addressDAO.read(address)
|
||||||
|
} yield {
|
||||||
|
assert(foundOpt.isDefined)
|
||||||
|
assert(foundOpt.get.scriptPubKeyId == createdSpk.id.get)
|
||||||
|
assert(foundOpt.get.address == address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
it must "upsert an address into the database whose script is already being watched" in {
|
||||||
|
daos =>
|
||||||
|
val spkDAO = daos.scriptPubKeyDAO
|
||||||
|
val addressDAO = daos.addressDAO
|
||||||
|
val addrStr = "bc1qfjex5a4m5w0atqrpwad3zj4vkfkuhun46tge9c"
|
||||||
|
val address = Bech32Address.fromString(addrStr)
|
||||||
|
val spk = address.scriptPubKey.asInstanceOf[P2WPKHWitnessSPKV0]
|
||||||
|
//insert the script first
|
||||||
|
val spkDb = ScriptPubKeyDb(address.scriptPubKey)
|
||||||
|
val createdSpkF = spkDAO.create(spkDb)
|
||||||
|
|
||||||
|
//now try to insert the address in the database
|
||||||
|
val segwitHdPath: SegWitHDPath =
|
||||||
|
SegWitHDPath.fromString("m/84'/0'/0'/0/0")
|
||||||
|
val pubKey: ECPublicKey = ECPublicKey.freshPublicKey
|
||||||
|
val addressDb = SegWitAddressDb.apply(segwitHdPath,
|
||||||
|
pubKey,
|
||||||
|
spk.pubKeyHash,
|
||||||
|
address,
|
||||||
|
EmptyScriptWitness,
|
||||||
|
spk)
|
||||||
|
for {
|
||||||
|
createdSpk <- createdSpkF
|
||||||
|
_ <- addressDAO.upsert(addressDb)
|
||||||
|
//make sure we can find it now
|
||||||
|
foundOpt <- addressDAO.read(address)
|
||||||
|
} yield {
|
||||||
|
assert(foundOpt.isDefined)
|
||||||
|
assert(foundOpt.get.scriptPubKeyId == createdSpk.id.get)
|
||||||
|
assert(foundOpt.get.address == address)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user