packages feed

cleveland-0.2.1: 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 <- toAddress . chAddress <$> originate "dummy" () (idContract @() @())
    contract <- importContract @Address @() @() (contractsDir </> "replay_transfer.tz")
    replayTransfer <- originate "replayTransfer" () contract
    transfer replayTransfer (calling def 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 <- originate "replayOrigination" () contract
    transfer replayOrigination
      & shouldFailWithMessage "Operation replay attempt"