test that invalid proposals cannot be created

This commit is contained in:
Hongrui Fang 2022-11-02 00:35:48 +08:00
parent 823ebc95a5
commit afe7d8d399
No known key found for this signature in database
GPG key ID: F10AB2CCE24113DD
2 changed files with 24 additions and 5 deletions

View file

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

View file

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