cleveland-0.1.0: test/TestSuite/Cleveland/PrefixNetworkScenario.hs
-- SPDX-FileCopyrightText: 2021 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ
module TestSuite.Cleveland.PrefixNetworkScenario
( test_PrefixNetworkScenario
) where
import Data.Fixed (Nano)
import Data.Text (takeEnd)
import Data.Time.Clock.POSIX
import Test.Tasty (TestTree)
import Test.Tasty.HUnit (testCase, (@=?))
import Morley.Client as Client
import Morley.Client.TezosClient.Types (tceAliasPrefixL)
import Morley.Tezos.Crypto (SecretKey, detSecretKey)
import Test.Cleveland
import Test.Cleveland.Internal.Abstract (HasClevelandCaps(moneybagL), Moneybag(Moneybag))
import Test.Cleveland.Internal.Client
(neMoneybagAliasL, neMorleyClientEnvL, neSecretKeyL, runClevelandT)
import Test.Cleveland.Tasty (modifyNetworkEnv, whenNetworkEnabled)
aliasName :: Alias
aliasName = mkAlias "testMoneybagAlias"
aliasPrefix :: Text
aliasPrefix = "testPrefix"
mangleNetworkEnv :: SecretKey -> TestTree -> TestTree
mangleNetworkEnv sk = modifyNetworkEnv $
(neMorleyClientEnvL . mceTezosClientL . tceAliasPrefixL .~ Just aliasPrefix)
. (neSecretKeyL .~ Just sk)
. (neMoneybagAliasL .~ aliasName)
test_PrefixNetworkScenario :: IO TestTree
test_PrefixNetworkScenario = do
-- use 7 digits of the current POSIX time in nanoseconds to generate seed
-- this ensures we test for a fresh key more often than not
-- taking 7 digits ensures that we're generating Ed25519 key.
seed <- encodeUtf8 . takeEnd 7 . show @Text . realToFrac @_ @Nano <$> getPOSIXTime
let key = detSecretKey seed
pure $ mangleNetworkEnv key $ whenNetworkEnabled $ \withEnv ->
testCase "Moneybag alias is not affected by alias prefix" $ withEnv $ \env -> do
Moneybag moneybagAddress <- runClevelandT env $ view moneybagL
actualAlias <- runMorleyClientM (neMorleyClientEnv env) $
Client.getAlias $ AddressResolved moneybagAddress
actualAlias @=? aliasName