From c0f24aef1f5be9bde706795801b83e231ed973f4 Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Tue, 16 Apr 2024 10:33:02 +0200 Subject: [PATCH] Fix golden spec for draft empty commit --- hydra-node/src/Hydra/API/HTTPServer.hs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hydra-node/src/Hydra/API/HTTPServer.hs b/hydra-node/src/Hydra/API/HTTPServer.hs index 642b84b81a9..4fb60b22440 100644 --- a/hydra-node/src/Hydra/API/HTTPServer.hs +++ b/hydra-node/src/Hydra/API/HTTPServer.hs @@ -6,7 +6,7 @@ module Hydra.API.HTTPServer where import Hydra.Prelude import Cardano.Ledger.Core (PParams) -import Data.Aeson (KeyValue ((.=)), object, withEmbeddedJSON, withObject, (.:)) +import Data.Aeson (KeyValue ((.=)), object, withObject, (.:)) import Data.Aeson qualified as Aeson import Data.Aeson.Types (parseFail) import Data.ByteString.Lazy qualified as LBS @@ -87,20 +87,19 @@ instance IsTx tx => ToJSON (DraftCommitTxRequest tx) where toJSON utxoToCommit instance IsTx tx => FromJSON (DraftCommitTxRequest tx) where - parseJSON js = fullVariant js <|> simpleVariant js <|> emptyVariant js + parseJSON js = asum [fullVariant js, simpleVariant js] where fullVariant = withObject "FullCommitRequest" $ \o -> do blueprintTx :: tx <- o .: "blueprintTx" utxo <- o .: "utxo" pure FullCommitRequest{blueprintTx, utxo} - simpleVariant = withEmbeddedJSON "SimpleCommitRequest" $ \v -> do - SimpleCommitRequest <$> parseJSON v - - emptyVariant = withObject "EmptyCommit" $ \o -> do - if o == mempty - then pure $ SimpleCommitRequest mempty - else parseFail "Failed to parse JSON as SimpleCommitRequest" + simpleVariant = withObject "SimpleCommitRequest" $ \o -> do + if null o + then pure (SimpleCommitRequest mempty) + else case Aeson.decode $ Aeson.encode o of + Nothing -> parseFail "Failed to parse json as SimpleCommitRequest" + Just utxoToCommit -> pure (SimpleCommitRequest utxoToCommit) instance (Arbitrary tx, Arbitrary (UTxOType tx)) => Arbitrary (DraftCommitTxRequest tx) where arbitrary = genericArbitrary