1
0
Fork 0
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:
Pierre-Marie Padiou 2020-10-09 17:02:33 +02:00 committed by GitHub
parent b728520ad7
commit eea1ba99b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 0 deletions

View file

@ -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))
}
}

View file

@ -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))
}
}