test that invalid proposals cannot be created

This commit is contained in:
Hongrui Fang 2022-11-02 00:35:48 +08:00
parent 996797995a
commit 5fc8a188a0
2 changed files with 24 additions and 5 deletions

View file

@ -18,12 +18,13 @@ module Sample.Proposal.Create (
timeRangeNotClosedParameters, timeRangeNotClosedParameters,
invalidProposalStatusParameters, invalidProposalStatusParameters,
fakeSSTParameters, fakeSSTParameters,
wrongGovernorRedeemer,
) where ) where
import Agora.Governor ( import Agora.Governor (
Governor (..), Governor (..),
GovernorDatum (..), GovernorDatum (..),
GovernorRedeemer (CreateProposal), GovernorRedeemer (CreateProposal, MutateGovernor),
) )
import Agora.Proposal ( import Agora.Proposal (
ProposalDatum (..), ProposalDatum (..),
@ -122,6 +123,8 @@ data Parameters = Parameters
-- ^ The status of the newly created proposal. -- ^ The status of the newly created proposal.
, fakeSST :: Bool , fakeSST :: Bool
-- ^ Whether to use SST that doesn't belong to the stake validator. -- ^ Whether to use SST that doesn't belong to the stake validator.
, wrongGovernorRedeemer :: Bool
-- ^ Use 'MutateGovernor' as the governor redeemer
} }
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -355,7 +358,7 @@ createProposal ps = builder
[ script governorValidatorHash [ script governorValidatorHash
, withValue governorValue , withValue governorValue
, withDatum governorInputDatum , withDatum governorInputDatum
, withRedeemer governorRedeemer , withRedeemer $ mkGovernorRedeemer ps
, withRef governorRef , withRef governorRef
] ]
, output $ , output $
@ -416,8 +419,11 @@ stakeRedeemer :: StakeRedeemer
stakeRedeemer = PermitVote stakeRedeemer = PermitVote
-- | Spend the governor with the 'CreateProposal' redeemer. -- | Spend the governor with the 'CreateProposal' redeemer.
governorRedeemer :: GovernorRedeemer mkGovernorRedeemer :: Parameters -> GovernorRedeemer
governorRedeemer = CreateProposal mkGovernorRedeemer ps =
if ps.wrongGovernorRedeemer
then MutateGovernor
else CreateProposal
-- | Mint the PST with an arbitrary redeemer. Doesn't really matter. -- | Mint the PST with an arbitrary redeemer. Doesn't really matter.
proposalPolicyRedeemer :: () proposalPolicyRedeemer :: ()
@ -437,6 +443,7 @@ totallyValidParameters =
, timeRangeClosed = True , timeRangeClosed = True
, proposalStatus = Draft , proposalStatus = Draft
, fakeSST = False , fakeSST = False
, wrongGovernorRedeemer = False
} }
invalidOutputGovernorDatumParameters :: Parameters invalidOutputGovernorDatumParameters :: Parameters
@ -495,6 +502,12 @@ fakeSSTParameters =
{ fakeSST = True { fakeSST = True
} }
wrongGovernorRedeemer :: Parameters
wrongGovernorRedeemer =
totallyValidParameters
{ wrongGovernorRedeemer = True
}
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
{- | Create a test tree that runs the proposal minting policy, the governor {- | Create a test tree that runs the proposal minting policy, the governor
@ -527,7 +540,7 @@ mkTestTree
"governor" "governor"
governorValidator governorValidator
governorInputDatum governorInputDatum
governorRedeemer (mkGovernorRedeemer ps)
(spend governorRef) (spend governorRef)
stakeTest = stakeTest =

View file

@ -91,6 +91,12 @@ specs =
True True
False False
False False
, Create.mkTestTree
"wrong governor redeemer"
Create.wrongGovernorRedeemer
False
False
True
] ]
] ]
, group , group