Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
project: cardano-api
pr: 1201
kind:
- test
description: |
Add a regression test in `Test.Cardano.Api.Experimental` (`prop_makeUnsignedTx_plutus_without_pparams`) covering the fix from #1181: `makeUnsignedTx` must return `Left MakeUnsignedTxMissingProtocolParams` when the transaction body contains a Plutus script witness but no protocol parameters.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ where

import Cardano.Api qualified as Api
import Cardano.Api.Experimental qualified as Exp
import Cardano.Api.Experimental.AnyScriptWitness
( AnyPlutusScriptWitness (AnyPlutusSpendingScriptWitness)
, PlutusSpendingScriptWitness (PlutusSpendingScriptWitnessV3)
)
Comment on lines +18 to +21
import Cardano.Api.Experimental.Era (convert)
import Cardano.Api.Experimental.Tx qualified as Exp
import Cardano.Api.Genesis qualified as Genesis
Expand All @@ -32,6 +36,7 @@ import Cardano.Ledger.Core qualified as L
import Cardano.Ledger.Dijkstra.Genesis (DijkstraGenesis (..))
import Cardano.Ledger.Mary.Value qualified as Mary
import Cardano.Ledger.Plutus.Data qualified as L
import Cardano.Ledger.Plutus.Language qualified as Plutus
import Cardano.Slotting.EpochInfo qualified as Slotting
import Cardano.Slotting.Slot qualified as Slotting
import Cardano.Slotting.Time qualified as Slotting
Expand Down Expand Up @@ -89,6 +94,12 @@ tests =
"Roundtrip serialiseToCBOR/deserialiseFromCBOR AnyScript"
prop_roundtrip_cbor_any_script
]
, testGroup
"makeUnsignedTx"
[ testProperty
"Plutus scripts without protocol params returns MakeUnsignedTxMissingProtocolParams"
prop_makeUnsignedTx_plutus_without_pparams
]
, testGroup
"calcMinFeeRecursive"
[ testProperty
Expand Down Expand Up @@ -579,6 +590,34 @@ prop_roundtrip_serialise_as_raw_bytes_signed_tx = H.withTests (H.TestLimit 20) $
(Text.decodeUtf8 . Api.serialiseToRawBytesHex)
(first show . Api.deserialiseFromRawBytesHex . Text.encodeUtf8)

-- ---------------------------------------------------------------------------
-- Regression test for makeUnsignedTx
-- ---------------------------------------------------------------------------

-- | Regression test: 'makeUnsignedTx' must return 'Left MakeUnsignedTxMissingProtocolParams'
-- when the transaction body contains a Plutus script witness but no protocol parameters.
-- Protocol parameters are required to compute the script integrity hash (script_data_hash).
prop_makeUnsignedTx_plutus_without_pparams :: Property
prop_makeUnsignedTx_plutus_without_pparams = H.propertyOnce $ do
srcTxIn <- getExampleSrcTxId
let dummyRedeemer = Script.unsafeHashableScriptData $ Script.ScriptDataConstructor 0 []
plutusWit =
Exp.AnyPlutusScriptWitness $
AnyPlutusSpendingScriptWitness $
PlutusSpendingScriptWitnessV3 $
Comment on lines +606 to +607
Exp.PlutusScriptWitness
Plutus.SPlutusV3
(Exp.PReferenceScript srcTxIn)
Exp.NoScriptDatum
dummyRedeemer
(Script.ExecutionUnits 0 0)
txBodyContent =
Exp.defaultTxBodyContent
& Exp.setTxIns [(srcTxIn, plutusWit)]
& Exp.setTxFee 0
Exp.makeUnsignedTx Exp.ConwayEra txBodyContent
H.=== Left Exp.MakeUnsignedTxMissingProtocolParams

-- ---------------------------------------------------------------------------
-- Property tests for calcMinFeeRecursive
-- ---------------------------------------------------------------------------
Expand Down
Loading