packages feed

cleveland-0.1.2: test/TestSuite/Cleveland/OperationReplay.hs

-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

module TestSuite.Cleveland.OperationReplay
  ( test_replayOrigination_fails
  , test_replayTransfer_fails
  ) where

import Test.Tasty (TestTree)

import Morley.Tezos.Address (Address)
import Test.Cleveland
import TestSuite.Util (idContract, shouldFailWithMessage)
import TestSuite.Util.Contracts

test_replayTransfer_fails :: TestTree
test_replayTransfer_fails =
  testScenarioOnEmulator "Transfer operation replay is prohibited" $ scenarioEmulated do
    dummyAddress <- chAddress <$> originateSimple @() @() "dummy" () idContract
    contract <- importContract @Address @() @() (contractsDir </> "replay_transfer.tz")
    replayTransfer <- originateSimple "replayTransfer" () contract
    call replayTransfer CallDefault dummyAddress
      & shouldFailWithMessage "Operation replay attempt"

test_replayOrigination_fails :: TestTree
test_replayOrigination_fails =
  testScenarioOnEmulator "Origination operation replay is prohibited" $ scenarioEmulated do
    contract <- importContract @() @() @() (contractsDir </> "replay_origination.tz")
    replayOrigination <- originateSimple "replayOrigination" () contract
    call replayOrigination CallDefault ()
      & shouldFailWithMessage "Operation replay attempt"