mirror of
https://github.com/ACINQ/eclair.git
synced 2025-02-24 14:50:46 +01:00
Add backward-compatibility tests on some database codecs (#1554)
* add backward compat tests on cmd codecs * add backward compat test on feerate codec
This commit is contained in:
parent
b728520ad7
commit
eea1ba99b9
2 changed files with 44 additions and 0 deletions
|
@ -17,8 +17,14 @@
|
|||
package fr.acinq.eclair.wire
|
||||
|
||||
import fr.acinq.eclair.channel._
|
||||
import fr.acinq.eclair.wire.CommonCodecs.{bytes32, varsizebinarydata}
|
||||
import fr.acinq.eclair.wire.FailureMessageCodecs.failureMessageCodec
|
||||
import fr.acinq.eclair.{randomBytes, randomBytes32}
|
||||
import org.scalatest.funsuite.AnyFunSuite
|
||||
import scodec.DecodeResult
|
||||
import scodec.bits.BitVector
|
||||
import scodec.codecs._
|
||||
import shapeless.HNil
|
||||
|
||||
/**
|
||||
* Created by PM on 31/05/2016.
|
||||
|
@ -40,4 +46,32 @@ class CommandCodecsSpec extends AnyFunSuite {
|
|||
assert(msg === decoded.value)
|
||||
}
|
||||
}
|
||||
|
||||
test("backward compatibility") {
|
||||
|
||||
val data32 = randomBytes32
|
||||
val data123 = randomBytes(123)
|
||||
|
||||
val legacyCmdFulfillCodec =
|
||||
(("id" | int64) ::
|
||||
("r" | bytes32) ::
|
||||
("commit" | provide(false)))
|
||||
assert(CommandCodecs.cmdFulfillCodec.decode(legacyCmdFulfillCodec.encode(42 :: data32 :: true :: HNil).require).require ===
|
||||
DecodeResult(CMD_FULFILL_HTLC(42, data32, commit = false, None), BitVector.empty))
|
||||
|
||||
val legacyCmdFailCodec =
|
||||
(("id" | int64) ::
|
||||
("reason" | either(bool, varsizebinarydata, failureMessageCodec)) ::
|
||||
("commit" | provide(false)))
|
||||
assert(CommandCodecs.cmdFailCodec.decode(legacyCmdFailCodec.encode(42 :: Left(data123) :: true :: HNil).require).require ===
|
||||
DecodeResult(CMD_FAIL_HTLC(42, Left(data123), commit = false, None), BitVector.empty))
|
||||
|
||||
val legacyCmdFailMalformedCodec =
|
||||
(("id" | int64) ::
|
||||
("onionHash" | bytes32) ::
|
||||
("failureCode" | uint16) ::
|
||||
("commit" | provide(false)))
|
||||
assert(CommandCodecs.cmdFailMalformedCodec.decode(legacyCmdFailMalformedCodec.encode(42 :: data32 :: 456 :: true :: HNil).require).require ===
|
||||
DecodeResult(CMD_FAIL_MALFORMED_HTLC(42, data32, 456, commit = false, None), BitVector.empty))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,12 +20,16 @@ import java.net.{Inet4Address, Inet6Address, InetAddress}
|
|||
|
||||
import com.google.common.net.InetAddresses
|
||||
import fr.acinq.bitcoin.ByteVector32
|
||||
import fr.acinq.bitcoin._
|
||||
import fr.acinq.bitcoin.Crypto.PrivateKey
|
||||
import fr.acinq.eclair.blockchain.fee.FeeratePerKw
|
||||
import fr.acinq.eclair.crypto.Hmac256
|
||||
import fr.acinq.eclair.wire.CommonCodecs._
|
||||
import fr.acinq.eclair.{UInt64, randomBytes32}
|
||||
import org.scalatest.funsuite.AnyFunSuite
|
||||
import scodec.DecodeResult
|
||||
import scodec.bits.{BitVector, HexStringSyntax}
|
||||
import scodec.codecs.uint32
|
||||
|
||||
/**
|
||||
* Created by t-bast on 20/06/2019.
|
||||
|
@ -251,4 +255,10 @@ class CommonCodecsSpec extends AnyFunSuite {
|
|||
}
|
||||
}
|
||||
|
||||
test("backward compatibility on feerate codec") {
|
||||
val value = 123456
|
||||
val feerate = FeeratePerKw(value sat)
|
||||
assert(feeratePerKw.decode(uint32.encode(value).require).require === DecodeResult(feerate, BitVector.empty))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue