diff --git a/.changes/20260828_214439_cardano-cli_palas_dijkstra_witnessing_test.yml b/.changes/20260828_214439_cardano-cli_palas_dijkstra_witnessing_test.yml new file mode 100644 index 0000000000..09dd55b087 --- /dev/null +++ b/.changes/20260828_214439_cardano-cli_palas_dijkstra_witnessing_test.yml @@ -0,0 +1,6 @@ +description: | + Added an end-to-end test covering Dijkstra transaction witnessing: build-raw, witness and assemble, asserting the text envelope types along the way. +kind: +- test +pr: 1432 +project: cardano-cli diff --git a/cardano-cli/cardano-cli.cabal b/cardano-cli/cardano-cli.cabal index 76bd2c288e..3291cbf4e6 100644 --- a/cardano-cli/cardano-cli.cabal +++ b/cardano-cli/cardano-cli.cabal @@ -483,6 +483,7 @@ test-suite cardano-cli-golden Test.Golden.CreateStaked Test.Golden.CreateTestnetData Test.Golden.Debug.TransactionView + Test.Golden.Dijkstra.Transaction.Assemble Test.Golden.ErrorsSpec Test.Golden.Genesis.Common Test.Golden.Governance.Action diff --git a/cardano-cli/test/cardano-cli-golden/Test/Golden/Dijkstra/Transaction/Assemble.hs b/cardano-cli/test/cardano-cli-golden/Test/Golden/Dijkstra/Transaction/Assemble.hs new file mode 100644 index 0000000000..5727805f53 --- /dev/null +++ b/cardano-cli/test/cardano-cli-golden/Test/Golden/Dijkstra/Transaction/Assemble.hs @@ -0,0 +1,76 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Test.Golden.Dijkstra.Transaction.Assemble where + +import Control.Monad (void) + +import Test.Cardano.CLI.Util + +import Hedgehog (Property) +import Hedgehog.Extras.Test qualified as H + +-- Check that a witness written by `transaction witness` in the Dijkstra era +-- can be read back by `transaction assemble` to form a transaction. +-- Regression test for https://github.com/IntersectMBO/cardano-cli/issues/1422 + +hprop_golden_dijkstra_transaction_assemble_witness_signing_key :: Property +hprop_golden_dijkstra_transaction_assemble_witness_signing_key = + watchdogProp . propertyOnce $ H.moduleWorkspace "tmp" $ \tempDir -> do + txBodyFile <- noteTempFile tempDir "tx-body" + + -- Create tx body file + void $ + execCardanoCLI + [ "dijkstra" + , "transaction" + , "build-raw" + , "--tx-in" + , "2392d2b1200b5139fe555c81261697b29a8ccf561c5c783d46e78a479d977053#0" + , "--tx-out" + , "addr1q94cxl99qvtwunsqqv6g9mgj3zrawtpt4edsgwxkjtwpy5dsezcht90tmwfur7t5hc9fk8hjd3r5vjwec2h8vmk3xh8s7er7t3+100" + , "--fee" + , "12" + , "--tx-body-file" + , txBodyFile + ] + + -- Sign it with a single signing key, as a detached witness file + witnessFile <- noteTempFile tempDir "single-signing-key-witness" + signingKeyFile <- + noteInputFile "test/cardano-cli-golden/files/input/conway/keys/payment_keys/signing_key" + + void $ + execCardanoCLI + [ "dijkstra" + , "transaction" + , "witness" + , "--tx-body-file" + , txBodyFile + , "--signing-key-file" + , signingKeyFile + , "--mainnet" + , "--out-file" + , witnessFile + ] + + goldenWitnessFile <- H.note "test/cardano-cli-golden/files/golden/dijkstra/transaction/witness_out" + H.diffFileVsGoldenFile witnessFile goldenWitnessFile + + -- Assemble the body and the witness back into a signed transaction + signedTxFile <- noteTempFile tempDir "signed-tx" + void $ + execCardanoCLI + [ "dijkstra" + , "transaction" + , "assemble" + , "--tx-body-file" + , txBodyFile + , "--witness-file" + , witnessFile + , "--out-file" + , signedTxFile + ] + + goldenSignedTxFile <- + H.note "test/cardano-cli-golden/files/golden/dijkstra/transaction/assemble_out" + H.diffFileVsGoldenFile signedTxFile goldenSignedTxFile diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/assemble_out b/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/assemble_out new file mode 100644 index 0000000000..5e3443e3a1 --- /dev/null +++ b/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/assemble_out @@ -0,0 +1,5 @@ +{ + "type": "Tx DijkstraEra", + "description": "Ledger Cddl Format", + "cborHex": "83a300d90102818258202392d2b1200b5139fe555c81261697b29a8ccf561c5c783d46e78a479d977053000181825839016b837ca50316ee4e00033482ed128887d72c2bae5b0438d692dc1251b0c8b17595ebdb93c1f974be0a9b1ef26c474649d9c2ae766ed135cf1864020ca100d90102818258208dc60533b5dfa60a530955a696323a2ef4f14e8bc95a8f84cf6c441fea4234275840bb76dd0b00d3b7567437d659c6783245e97250d9b0d94d9136f9e1bc85dcc0b82a8ba9e4c225d6f78fb63f65452f2e6b3ce6ea9f8e637f1d6d499a8da48a1d0df6" +} diff --git a/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/witness_out b/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/witness_out new file mode 100644 index 0000000000..448d8a2ec1 --- /dev/null +++ b/cardano-cli/test/cardano-cli-golden/files/golden/dijkstra/transaction/witness_out @@ -0,0 +1,5 @@ +{ + "type": "TxWitness DijkstraEra", + "description": "Key Witness ShelleyEra", + "cborHex": "8258208dc60533b5dfa60a530955a696323a2ef4f14e8bc95a8f84cf6c441fea4234275840bb76dd0b00d3b7567437d659c6783245e97250d9b0d94d9136f9e1bc85dcc0b82a8ba9e4c225d6f78fb63f65452f2e6b3ce6ea9f8e637f1d6d499a8da48a1d0d" +}