@@ -21,13 +21,17 @@ import (
2121
2222 "github.com/smartcontractkit/cld-changesets/datastore/refkey"
2323 "github.com/smartcontractkit/cld-changesets/internal/semvers"
24+ "github.com/smartcontractkit/cld-changesets/internal/testutil/solanatest"
2425
25- // TODO: remove legacymcms import once remaining MCMS changesets are migrated out of legacy/mcms/changesets.
26- legacymcms "github.com/smartcontractkit/cld-changesets/legacy/mcms/changesets"
2726 evmstate "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/evm"
2827 soltestutils "github.com/smartcontractkit/cld-changesets/legacy/pkg/family/solana/testutils"
28+ "github.com/smartcontractkit/cld-changesets/mcms/changesets/deploy"
2929 setconfig "github.com/smartcontractkit/cld-changesets/mcms/changesets/set-config"
3030 _ "github.com/smartcontractkit/cld-changesets/mcms/changesets/set-config/all"
31+ transfertotimelock "github.com/smartcontractkit/cld-changesets/mcms/changesets/transfer-to-timelock"
32+ _ "github.com/smartcontractkit/cld-changesets/mcms/evm/deploy"
33+ _ "github.com/smartcontractkit/cld-changesets/mcms/evm/transfer-to-timelock"
34+ _ "github.com/smartcontractkit/cld-changesets/mcms/solana/deploy"
3135)
3236
3337func contractRef (chainSelector uint64 , contractType cldf.ContractType , qualifier string ) refkey.RefKey {
@@ -88,10 +92,9 @@ func deployEVMMCMSWithTimelock(t *testing.T, rt *runtime.Runtime, selectors ...u
8892 configByChain [selector ] = cfg
8993 }
9094
91- err := rt .Exec (
92- // TODO: replace with new deploy changeset when available
93- runtime .ChangesetTask (cldf .CreateLegacyChangeSet (legacymcms .DeployMCMSWithTimelockV2 ), configByChain ),
94- )
95+ err := rt .Exec (runtime .ChangesetTask (deploy.Changeset {}, deploy.Input {
96+ ConfigByChain : configByChain ,
97+ }))
9598 require .NoError (t , err )
9699}
97100
@@ -110,14 +113,22 @@ func transferEVMMCMSToTimelock(t *testing.T, rt *runtime.Runtime, selector uint6
110113 mcmsState , _ := evmMCMSChainState (t , rt , selector )
111114
112115 err := rt .Exec (
113- runtime .ChangesetTask (cldf .CreateLegacyChangeSet (legacymcms .TransferToMCMSWithTimelockV2 ), legacymcms.TransferToMCMSWithTimelockConfig {
114- ContractsByChain : map [uint64 ][]common.Address {
115- selector : {
116- mcmsState .ProposerMcm .Address (),
117- mcmsState .BypasserMcm .Address (),
118- mcmsState .CancellerMcm .Address (),
116+ runtime .ChangesetTask (transfertotimelock.Changeset {}, transfertotimelock.Input {
117+ Cfg : transfertotimelock.Config {
118+ ContractsByChain : map [uint64 ][]common.Address {
119+ selector : {
120+ mcmsState .ProposerMcm .Address (),
121+ mcmsState .BypasserMcm .Address (),
122+ mcmsState .CancellerMcm .Address (),
123+ },
119124 },
120125 },
126+ MCMS : & cldf.MCMSTimelockProposalInput {
127+ TimelockAction : mcmstypes .TimelockActionBypass ,
128+ ValidUntil : uint32 (time .Now ().Add (2 * time .Hour ).UTC ().Unix ()), //nolint:gosec // test timestamp
129+ TimelockDelay : mcmstypes .NewDuration (0 ),
130+ Description : "transfer MCM to timelock" ,
131+ },
121132 }),
122133 runtime .SignAndExecuteProposalsTask ([]* ecdsa.PrivateKey {cldftesthelpers .TestXXXMCMSSigner }),
123134 )
@@ -136,31 +147,33 @@ func newEVMRuntimeWithDeployAndTransfer(t *testing.T, selector uint64) *runtime.
136147func evmMCMSChainState (t * testing.T , rt * runtime.Runtime , selector uint64 ) (* evmstate.MCMSWithTimelockState , cldf_evm.Chain ) {
137148 t .Helper ()
138149
139- chain := rt .Environment ().BlockChains .EVMChains ()[selector ]
140- addrs , err := rt .State ().AddressBook .AddressesForChain (selector )
141- require .NoError (t , err )
150+ env := rt .Environment ()
151+ chain := env .BlockChains .EVMChains ()[selector ]
142152
143- mcmsState , err := evmstate .MaybeLoadMCMSWithTimelockChainState ( chain , addrs )
153+ states , err := evmstate .MaybeLoadMCMSWithTimelockState ( env , [] uint64 { selector } )
144154 require .NoError (t , err )
155+ require .NotNil (t , states [selector ])
145156
146- return mcmsState , chain
157+ return states [ selector ] , chain
147158}
148159
149160func newSolanaRuntimeWithDeploy (t * testing.T , selector uint64 ) * runtime.Runtime {
150161 t .Helper ()
151162
152- programsPath , programIDs , ab := soltestutils .PreloadMCMS (t , selector )
163+ programsPath , programIDs := soltestutils .LoadMCMSPrograms (t , t . TempDir () )
153164 rt , err := runtime .New (t .Context (), runtime .WithEnvOpts (
154165 environment .WithSolanaContainer (t , []uint64 {selector }, programsPath , programIDs ),
155- environment .WithAddressBook ( ab ),
166+ environment .WithDatastore ( solanatest . PreloadDatastoreWithMCMSPrograms ( t , selector ) ),
156167 environment .WithLogger (logger .Test (t )),
157168 ))
158169 require .NoError (t , err )
159170 require .Contains (t , rt .Environment ().BlockChains .SolanaChains (), selector )
160171
161172 err = rt .Exec (
162- runtime .ChangesetTask (cldf .CreateLegacyChangeSet (legacymcms .DeployMCMSWithTimelockV2 ), map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
163- selector : cldftesthelpers .SingleGroupTimelockConfig (t ),
173+ runtime .ChangesetTask (deploy.Changeset {}, deploy.Input {
174+ ConfigByChain : map [uint64 ]cldfproposalutils.MCMSWithTimelockConfig {
175+ selector : cldftesthelpers .SingleGroupTimelockConfig (t ),
176+ },
164177 }),
165178 )
166179 require .NoError (t , err )
0 commit comments