Skip to content

Commit 86412d4

Browse files
sig-submission test: integrate validateSig
1 parent 345ad32 commit 86412d4

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

dmq-node/dmq-node.cabal

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,20 +179,25 @@ test-suite dmq-tests
179179
build-depends:
180180
QuickCheck,
181181
base >=4.14 && <4.22,
182+
binary,
182183
bytestring,
183184
cardano-crypto-class,
184185
cardano-crypto-tests,
186+
cardano-ledger-core,
185187
cborg,
188+
containers,
186189
contra-tracer,
187190
dmq-node,
188-
io-classes,
191+
io-classes:{io-classes, strict-stm},
189192
io-sim,
190193
kes-agent-crypto,
191194
ouroboros-network:{api, framework, protocols, protocols-tests-lib, tests-lib},
192195
quickcheck-instances,
193196
serialise,
194197
tasty,
195198
tasty-quickcheck,
199+
time,
200+
transformers,
196201
typed-protocols:{typed-protocols, codec-properties},
197202
with-utf8,
198203

dmq-node/test/DMQ/Protocol/SigSubmission/Test.hs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,18 @@ module DMQ.Protocol.SigSubmission.Test (tests) where
2626
import Codec.CBOR.Encoding qualified as CBOR
2727
import Codec.CBOR.Read qualified as CBOR
2828
import Codec.CBOR.Write qualified as CBOR
29+
import Control.Concurrent.Class.MonadSTM.Strict
2930
import Control.Monad (zipWithM, (>=>))
3031
import Control.Monad.ST (runST)
32+
import Control.Monad.Trans.Except
3133
import Data.Bifunctor (second)
34+
import Data.Binary qualified as Binary
3235
import Data.ByteString (ByteString)
36+
import Data.ByteString qualified as BS
3337
import Data.ByteString.Lazy qualified as BL
3438
import Data.List.NonEmpty qualified as NonEmpty
39+
import Data.Map qualified as Map
40+
import Data.Time.Clock.POSIX (posixSecondsToUTCTime)
3541
import Data.Typeable
3642
import Data.Word (Word32)
3743
import GHC.TypeNats (KnownNat)
@@ -46,16 +52,20 @@ import Cardano.Crypto.DSIGN.Class qualified as DSIGN
4652
import Cardano.Crypto.KES.Class (KESAlgorithm (..), VerKeyKES, encodeSigKES)
4753
import Cardano.Crypto.KES.Class qualified as KES
4854
import Cardano.Crypto.PinnedSizedBytes (PinnedSizedBytes, psbToByteString)
55+
import Cardano.Crypto.Hash (castHash, hashWith)
4956
import Cardano.Crypto.Seed (mkSeedFromBytes)
57+
import Cardano.Ledger.Hashes (KeyHash (..))
5058
import Cardano.KESAgent.KES.Crypto (Crypto (..))
5159
import Cardano.KESAgent.KES.Evolution qualified as KES
5260
import Cardano.KESAgent.KES.OCert (OCert (..))
5361
import Cardano.KESAgent.KES.OCert qualified as KES
5462
import Cardano.KESAgent.Protocols.StandardCrypto (MockCrypto, StandardCrypto)
5563
import Test.Crypto.Instances
5664

65+
import DMQ.Diffusion.NodeKernel (PoolValidationCtx(..))
5766
import DMQ.Protocol.SigSubmission.Codec
5867
import DMQ.Protocol.SigSubmission.Type
68+
import DMQ.Protocol.SigSubmission.Validate
5969

6070
import Ouroboros.Network.Protocol.TxSubmission2.Test (labelMsg)
6171

@@ -830,15 +840,20 @@ prop_validateSig
830840
)
831841
=> WithConstrKES size kesCrypt (Sig crypto)
832842
-> Property
833-
prop_validateSig constr = ioProperty $ do
843+
prop_validateSig constr = ioProperty do
834844
sig <- runWithConstr constr
835-
return $ case validateSig KES.defEvolutionConfig sig of
845+
countersVar <- newTVarIO Map.empty
846+
let validationCtx =
847+
DMQPoolValidationCtx (posixSecondsToUTCTime 0) Nothing Map.empty countersVar
848+
dummyHash = KeyHash . castHash . hashWith (BS.toStrict . Binary.encode . const (0 :: Int))
849+
result <- runExceptT $ validateSig KES.defEvolutionConfig dummyHash [sig] validationCtx
850+
return case result of
836851
Left err -> counterexample ("KES seed: " ++ show (ctx constr))
837852
. counterexample ("KES vk key: " ++ show (ocertVkHot . getSigOpCertificate . sigOpCertificate $ sig))
838853
. counterexample (show sig)
839854
. counterexample (show err)
840855
$ False
841-
Right () -> property True
856+
Right {} -> property True
842857

843858
prop_validateSig_mockcrypto
844859
:: Blind (WithConstrKES (SeedSizeKES (KES MockCrypto)) (KES MockCrypto) (Sig MockCrypto))

0 commit comments

Comments
 (0)