@hyperlane-xyz/cli 7.2.0 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/commands/core.d.ts +1 -0
- package/dist/src/commands/core.d.ts.map +1 -1
- package/dist/src/commands/core.js +6 -2
- package/dist/src/commands/core.js.map +1 -1
- package/dist/src/config/core.d.ts +2 -1194
- package/dist/src/config/core.d.ts.map +1 -1
- package/dist/src/config/core.js +1 -1
- package/dist/src/config/core.js.map +1 -1
- package/dist/src/deploy/core.d.ts.map +1 -1
- package/dist/src/deploy/core.js +3 -1
- package/dist/src/deploy/core.js.map +1 -1
- package/dist/src/deploy/warp.d.ts.map +1 -1
- package/dist/src/deploy/warp.js +25 -9
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/read/core.d.ts.map +1 -1
- package/dist/src/read/core.js +5 -2
- package/dist/src/read/core.js.map +1 -1
- package/dist/src/status/message.d.ts.map +1 -1
- package/dist/src/status/message.js +1 -1
- package/dist/src/status/message.js.map +1 -1
- package/dist/src/tests/commands/core.d.ts +2 -2
- package/dist/src/tests/commands/core.d.ts.map +1 -1
- package/dist/src/tests/commands/helpers.d.ts +14 -1
- package/dist/src/tests/commands/helpers.d.ts.map +1 -1
- package/dist/src/tests/commands/helpers.js +15 -2
- package/dist/src/tests/commands/helpers.js.map +1 -1
- package/dist/src/tests/core-apply.e2e-test.d.ts +2 -0
- package/dist/src/tests/core-apply.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core-apply.e2e-test.js +155 -0
- package/dist/src/tests/core-apply.e2e-test.js.map +1 -0
- package/dist/src/tests/core-deploy.e2e-test.d.ts +2 -0
- package/dist/src/tests/core-deploy.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core-deploy.e2e-test.js +55 -0
- package/dist/src/tests/core-deploy.e2e-test.js.map +1 -0
- package/dist/src/tests/core-read.e2e-test.d.ts +2 -0
- package/dist/src/tests/core-read.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core-read.e2e-test.js +29 -0
- package/dist/src/tests/core-read.e2e-test.js.map +1 -0
- package/dist/src/tests/relay.e2e-test.js +14 -17
- package/dist/src/tests/relay.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-apply.e2e-test.js +32 -20
- package/dist/src/tests/warp-apply.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-deploy.e2e-test.js +7 -11
- package/dist/src/tests/warp-deploy.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-read.e2e-test.js +3 -11
- package/dist/src/tests/warp-read.e2e-test.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +3 -3
- package/dist/src/tests/core.e2e-test.d.ts +0 -2
- package/dist/src/tests/core.e2e-test.d.ts.map +0 -1
- package/dist/src/tests/core.e2e-test.js +0 -113
- package/dist/src/tests/core.e2e-test.js.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { Wallet, ethers } from 'ethers';
|
|
3
|
+
import { randomAddress, } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
5
|
+
import { hyperlaneCoreDeploy, readCoreConfig } from './commands/core.js';
|
|
6
|
+
import { ANVIL_KEY, CHAIN_2_METADATA_PATH, CHAIN_NAME_2, CORE_CONFIG_PATH, CORE_READ_CONFIG_PATH_2, DEFAULT_E2E_TEST_TIMEOUT, } from './commands/helpers.js';
|
|
7
|
+
describe('hyperlane core deploy e2e tests', async function () {
|
|
8
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
9
|
+
let signer;
|
|
10
|
+
let initialOwnerAddress;
|
|
11
|
+
before(async () => {
|
|
12
|
+
const chainMetadata = readYamlOrJson(CHAIN_2_METADATA_PATH);
|
|
13
|
+
const provider = new ethers.providers.JsonRpcProvider(chainMetadata.rpcUrls[0].http);
|
|
14
|
+
const wallet = new Wallet(ANVIL_KEY);
|
|
15
|
+
signer = wallet.connect(provider);
|
|
16
|
+
initialOwnerAddress = await signer.getAddress();
|
|
17
|
+
});
|
|
18
|
+
it('should create a core deployment with the signer as the mailbox owner', async () => {
|
|
19
|
+
await hyperlaneCoreDeploy(CHAIN_NAME_2, CORE_CONFIG_PATH);
|
|
20
|
+
const coreConfig = await readCoreConfig(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
21
|
+
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
22
|
+
expect(coreConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
23
|
+
// Assuming that the ProtocolFeeHook is used for deployment
|
|
24
|
+
expect(coreConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
25
|
+
});
|
|
26
|
+
it('should create a core deployment with the mailbox owner set to the address in the config', async () => {
|
|
27
|
+
const coreConfig = await readYamlOrJson(CORE_CONFIG_PATH);
|
|
28
|
+
const newOwner = randomAddress().toLowerCase();
|
|
29
|
+
coreConfig.owner = newOwner;
|
|
30
|
+
writeYamlOrJson(CORE_READ_CONFIG_PATH_2, coreConfig);
|
|
31
|
+
// Deploy the core contracts with the updated mailbox owner
|
|
32
|
+
await hyperlaneCoreDeploy(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
33
|
+
// Verify that the owner has been set correctly without modifying any other owner values
|
|
34
|
+
const updatedConfig = await readCoreConfig(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
35
|
+
expect(updatedConfig.owner.toLowerCase()).to.equal(newOwner);
|
|
36
|
+
expect(updatedConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
37
|
+
// Assuming that the ProtocolFeeHook is used for deployment
|
|
38
|
+
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
39
|
+
});
|
|
40
|
+
it('should create a core deployment with ProxyAdmin owner of the mailbox set to the address in the config', async () => {
|
|
41
|
+
const coreConfig = await readYamlOrJson(CORE_CONFIG_PATH);
|
|
42
|
+
const newOwner = randomAddress().toLowerCase();
|
|
43
|
+
coreConfig.proxyAdmin = { owner: newOwner };
|
|
44
|
+
writeYamlOrJson(CORE_READ_CONFIG_PATH_2, coreConfig);
|
|
45
|
+
// Deploy the core contracts with the updated mailbox owner
|
|
46
|
+
await hyperlaneCoreDeploy(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
47
|
+
// Verify that the owner has been set correctly without modifying any other owner values
|
|
48
|
+
const updatedConfig = await readCoreConfig(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
49
|
+
expect(updatedConfig.owner).to.equal(initialOwnerAddress);
|
|
50
|
+
expect(updatedConfig.proxyAdmin?.owner.toLowerCase()).to.equal(newOwner);
|
|
51
|
+
// Assuming that the ProtocolFeeHook is used for deployment
|
|
52
|
+
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=core-deploy.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-deploy.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/core-deploy.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-read.e2e-test.d.ts","sourceRoot":"","sources":["../../../src/tests/core-read.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { Wallet, ethers } from 'ethers';
|
|
3
|
+
import { readYamlOrJson } from '../utils/files.js';
|
|
4
|
+
import { hyperlaneCoreDeploy, readCoreConfig } from './commands/core.js';
|
|
5
|
+
import { ANVIL_KEY, CHAIN_2_METADATA_PATH, CHAIN_NAME_2, CORE_CONFIG_PATH, CORE_READ_CONFIG_PATH_2, DEFAULT_E2E_TEST_TIMEOUT, } from './commands/helpers.js';
|
|
6
|
+
describe('hyperlane core read e2e tests', async function () {
|
|
7
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
8
|
+
let signer;
|
|
9
|
+
let initialOwnerAddress;
|
|
10
|
+
before(async () => {
|
|
11
|
+
const chainMetadata = readYamlOrJson(CHAIN_2_METADATA_PATH);
|
|
12
|
+
const provider = new ethers.providers.JsonRpcProvider(chainMetadata.rpcUrls[0].http);
|
|
13
|
+
const wallet = new Wallet(ANVIL_KEY);
|
|
14
|
+
signer = wallet.connect(provider);
|
|
15
|
+
initialOwnerAddress = await signer.getAddress();
|
|
16
|
+
});
|
|
17
|
+
it('should read a core deployment', async () => {
|
|
18
|
+
await hyperlaneCoreDeploy(CHAIN_NAME_2, CORE_CONFIG_PATH);
|
|
19
|
+
const coreConfig = await readCoreConfig(CHAIN_NAME_2, CORE_READ_CONFIG_PATH_2);
|
|
20
|
+
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
21
|
+
expect(coreConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
22
|
+
expect(coreConfig.requiredHook).not.to.be.undefined;
|
|
23
|
+
expect(coreConfig.defaultHook).not.to.be.undefined;
|
|
24
|
+
expect(coreConfig.defaultIsm).not.to.be.undefined;
|
|
25
|
+
// Assuming that the ProtocolFeeHook is used for deployment
|
|
26
|
+
expect(coreConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=core-read.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-read.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/core-read.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAShD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,QAAQ,CAAC,+BAA+B,EAAE,KAAK;IAC7C,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEvC,IAAI,MAAc,CAAC;IACnB,IAAI,mBAA4B,CAAC;IAEjC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,aAAa,GAAkB,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CACnD,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9B,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElC,mBAAmB,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAE1D,MAAM,UAAU,GAAe,MAAM,cAAc,CACjD,YAAY,EACZ,uBAAuB,CACxB,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACpD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAClD,2DAA2D;QAC3D,MAAM,CAAE,UAAU,CAAC,YAAsC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CACvE,mBAAmB,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import { TokenType } from '@hyperlane-xyz/sdk';
|
|
2
2
|
import { writeYamlOrJson } from '../utils/files.js';
|
|
3
3
|
import { hyperlaneCoreDeploy } from './commands/core.js';
|
|
4
|
-
import { REGISTRY_PATH, hyperlaneRelayer, hyperlaneSendMessage, } from './commands/helpers.js';
|
|
4
|
+
import { CHAIN_NAME_2, CHAIN_NAME_3, CORE_CONFIG_PATH, DEFAULT_E2E_TEST_TIMEOUT, REGISTRY_PATH, TEMP_PATH, hyperlaneRelayer, hyperlaneSendMessage, } from './commands/helpers.js';
|
|
5
5
|
import { hyperlaneWarpDeploy, hyperlaneWarpSendRelay, } from './commands/warp.js';
|
|
6
|
-
const CHAIN_NAME_1 = 'anvil2';
|
|
7
|
-
const CHAIN_NAME_2 = 'anvil3';
|
|
8
6
|
const SYMBOL = 'ETH';
|
|
9
|
-
const WARP_DEPLOY_OUTPUT = `${REGISTRY_PATH}/deployments/warp_routes/${SYMBOL}/${
|
|
10
|
-
const EXAMPLES_PATH = './examples';
|
|
11
|
-
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
12
|
-
const TEST_TIMEOUT = 100000; // Long timeout since these tests can take a while
|
|
7
|
+
const WARP_DEPLOY_OUTPUT = `${REGISTRY_PATH}/deployments/warp_routes/${SYMBOL}/${CHAIN_NAME_2}-${CHAIN_NAME_3}-config.yaml`;
|
|
13
8
|
describe('hyperlane relayer e2e tests', async function () {
|
|
14
|
-
this.timeout(
|
|
9
|
+
this.timeout(2 * DEFAULT_E2E_TEST_TIMEOUT);
|
|
15
10
|
before(async () => {
|
|
16
|
-
await
|
|
17
|
-
|
|
11
|
+
await Promise.all([
|
|
12
|
+
hyperlaneCoreDeploy(CHAIN_NAME_2, CORE_CONFIG_PATH),
|
|
13
|
+
hyperlaneCoreDeploy(CHAIN_NAME_3, CORE_CONFIG_PATH),
|
|
14
|
+
]);
|
|
18
15
|
const warpConfig = {
|
|
19
16
|
anvil2: {
|
|
20
17
|
type: TokenType.native,
|
|
@@ -25,21 +22,21 @@ describe('hyperlane relayer e2e tests', async function () {
|
|
|
25
22
|
symbol: SYMBOL,
|
|
26
23
|
},
|
|
27
24
|
};
|
|
28
|
-
const warpConfigPath =
|
|
25
|
+
const warpConfigPath = `./${TEMP_PATH}/warp-route-config.yaml`;
|
|
29
26
|
writeYamlOrJson(warpConfigPath, warpConfig);
|
|
30
27
|
await hyperlaneWarpDeploy(warpConfigPath);
|
|
31
28
|
});
|
|
32
29
|
describe('relayer', () => {
|
|
33
30
|
it('should relay core messages', async () => {
|
|
34
|
-
const process = hyperlaneRelayer([
|
|
35
|
-
await hyperlaneSendMessage(
|
|
36
|
-
await hyperlaneSendMessage(
|
|
31
|
+
const process = hyperlaneRelayer([CHAIN_NAME_2, CHAIN_NAME_3]);
|
|
32
|
+
await hyperlaneSendMessage(CHAIN_NAME_2, CHAIN_NAME_3);
|
|
33
|
+
await hyperlaneSendMessage(CHAIN_NAME_3, CHAIN_NAME_2);
|
|
37
34
|
await process.kill('SIGINT');
|
|
38
35
|
});
|
|
39
36
|
it('should relay warp messages', async () => {
|
|
40
|
-
const process = hyperlaneRelayer([
|
|
41
|
-
await hyperlaneWarpSendRelay(
|
|
42
|
-
await hyperlaneWarpSendRelay(
|
|
37
|
+
const process = hyperlaneRelayer([CHAIN_NAME_2, CHAIN_NAME_3], WARP_DEPLOY_OUTPUT);
|
|
38
|
+
await hyperlaneWarpSendRelay(CHAIN_NAME_2, CHAIN_NAME_3, WARP_DEPLOY_OUTPUT, false);
|
|
39
|
+
await hyperlaneWarpSendRelay(CHAIN_NAME_3, CHAIN_NAME_2, WARP_DEPLOY_OUTPUT, false);
|
|
43
40
|
await process.kill('SIGINT');
|
|
44
41
|
});
|
|
45
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/relay.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,
|
|
1
|
+
{"version":3,"file":"relay.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/relay.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,GAAG,KAAK,CAAC;AACrB,MAAM,kBAAkB,GAAG,GAAG,aAAa,4BAA4B,MAAM,IAAI,YAAY,IAAI,YAAY,cAAc,CAAC;AAE5H,QAAQ,CAAC,6BAA6B,EAAE,KAAK;IAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAE3C,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC;YACnD,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACpD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,MAAM,EAAE,MAAM;aACf;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,SAAS;gBACzB,MAAM,EAAE,MAAM;aACf;SACF,CAAC;QAEF,MAAM,cAAc,GAAG,KAAK,SAAS,yBAAyB,CAAC;QAC/D,eAAe,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;YAE/D,MAAM,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAEvD,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,GAAG,gBAAgB,CAC9B,CAAC,YAAY,EAAE,YAAY,CAAC,EAC5B,kBAAkB,CACnB,CAAC;YAEF,MAAM,sBAAsB,CAC1B,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,KAAK,CACN,CAAC;YACF,MAAM,sBAAsB,CAC1B,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,KAAK,CACN,CAAC;YAEF,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { Wallet } from 'ethers';
|
|
3
|
-
import { TokenType, } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { HookType, TokenType, normalizeConfig, randomAddress, } from '@hyperlane-xyz/sdk';
|
|
4
4
|
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
5
|
-
import { ANVIL_KEY, REGISTRY_PATH, deployOrUseExistingCore, extendWarpConfig, getDomainId, updateOwner, } from './commands/helpers.js';
|
|
5
|
+
import { ANVIL_KEY, CHAIN_NAME_2, CHAIN_NAME_3, CORE_CONFIG_PATH, DEFAULT_E2E_TEST_TIMEOUT, E2E_TEST_BURN_ADDRESS, EXAMPLES_PATH, REGISTRY_PATH, TEMP_PATH, WARP_CONFIG_PATH_2, WARP_CONFIG_PATH_EXAMPLE, WARP_CORE_CONFIG_PATH_2, deployOrUseExistingCore, extendWarpConfig, getDomainId, updateOwner, } from './commands/helpers.js';
|
|
6
6
|
import { hyperlaneWarpApply, hyperlaneWarpDeploy, readWarpConfig, } from './commands/warp.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const BURN_ADDRESS = '0x0000000000000000000000000000000000000001';
|
|
10
|
-
const EXAMPLES_PATH = './examples';
|
|
11
|
-
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
12
|
-
const WARP_CONFIG_PATH_EXAMPLE = `${EXAMPLES_PATH}/warp-route-deployment.yaml`;
|
|
13
|
-
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
14
|
-
const WARP_CONFIG_PATH_2 = `${TEMP_PATH}/anvil2/warp-route-deployment-anvil2.yaml`;
|
|
15
|
-
const WARP_CORE_CONFIG_PATH_2 = `${REGISTRY_PATH}/deployments/warp_routes/ETH/anvil2-config.yaml`;
|
|
16
|
-
const TEST_TIMEOUT = 100000; // Long timeout since these tests can take a while
|
|
17
|
-
describe('WarpApply e2e tests', async function () {
|
|
7
|
+
describe('hyperlane warp apply e2e tests', async function () {
|
|
8
|
+
this.timeout(2 * DEFAULT_E2E_TEST_TIMEOUT);
|
|
18
9
|
let chain2Addresses = {};
|
|
19
|
-
this.timeout(TEST_TIMEOUT);
|
|
20
10
|
before(async function () {
|
|
21
11
|
await deployOrUseExistingCore(CHAIN_NAME_2, CORE_CONFIG_PATH, ANVIL_KEY);
|
|
22
12
|
chain2Addresses = await deployOrUseExistingCore(CHAIN_NAME_3, CORE_CONFIG_PATH, ANVIL_KEY);
|
|
@@ -30,16 +20,38 @@ describe('WarpApply e2e tests', async function () {
|
|
|
30
20
|
});
|
|
31
21
|
it('should burn owner address', async function () {
|
|
32
22
|
const warpConfigPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
33
|
-
await updateOwner(
|
|
23
|
+
await updateOwner(E2E_TEST_BURN_ADDRESS, CHAIN_NAME_2, warpConfigPath, WARP_CORE_CONFIG_PATH_2);
|
|
34
24
|
const updatedWarpDeployConfig = await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2, warpConfigPath);
|
|
35
|
-
expect(updatedWarpDeployConfig.anvil2.owner).to.equal(
|
|
25
|
+
expect(updatedWarpDeployConfig.anvil2.owner).to.equal(E2E_TEST_BURN_ADDRESS);
|
|
36
26
|
});
|
|
37
27
|
it('should not update the same owner', async () => {
|
|
38
28
|
const warpConfigPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
39
|
-
await updateOwner(
|
|
40
|
-
const { stdout } = await updateOwner(
|
|
29
|
+
await updateOwner(E2E_TEST_BURN_ADDRESS, CHAIN_NAME_2, warpConfigPath, WARP_CORE_CONFIG_PATH_2);
|
|
30
|
+
const { stdout } = await updateOwner(E2E_TEST_BURN_ADDRESS, CHAIN_NAME_2, warpConfigPath, WARP_CORE_CONFIG_PATH_2);
|
|
41
31
|
expect(stdout).to.include('Warp config is the same as target. No updates needed.');
|
|
42
32
|
});
|
|
33
|
+
it('should update hook configuration', async () => {
|
|
34
|
+
const warpDeployPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
35
|
+
// First read the existing config
|
|
36
|
+
const warpDeployConfig = await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2, warpDeployPath);
|
|
37
|
+
// Update with a new hook config
|
|
38
|
+
const owner = randomAddress();
|
|
39
|
+
warpDeployConfig[CHAIN_NAME_2].hook = {
|
|
40
|
+
type: HookType.PROTOCOL_FEE,
|
|
41
|
+
beneficiary: owner,
|
|
42
|
+
maxProtocolFee: '1000000',
|
|
43
|
+
protocolFee: '100000',
|
|
44
|
+
owner,
|
|
45
|
+
};
|
|
46
|
+
// Write the updated config
|
|
47
|
+
await writeYamlOrJson(warpDeployPath, warpDeployConfig);
|
|
48
|
+
// Apply the changes
|
|
49
|
+
await hyperlaneWarpApply(warpDeployPath, WARP_CORE_CONFIG_PATH_2);
|
|
50
|
+
// Read back the config to verify changes
|
|
51
|
+
const updatedConfig = await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2, warpDeployPath);
|
|
52
|
+
// Verify the hook was updated with all properties
|
|
53
|
+
expect(normalizeConfig(updatedConfig[CHAIN_NAME_2].hook)).to.deep.equal(normalizeConfig(warpDeployConfig[CHAIN_NAME_2].hook));
|
|
54
|
+
});
|
|
43
55
|
it('should extend an existing warp route', async () => {
|
|
44
56
|
// Read existing config into a file
|
|
45
57
|
const warpConfigPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
@@ -111,7 +123,7 @@ describe('WarpApply e2e tests', async function () {
|
|
|
111
123
|
const warpDeployPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
112
124
|
// Burn anvil2 owner in config
|
|
113
125
|
const warpDeployConfig = await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2, warpDeployPath);
|
|
114
|
-
warpDeployConfig[CHAIN_NAME_2].owner =
|
|
126
|
+
warpDeployConfig[CHAIN_NAME_2].owner = E2E_TEST_BURN_ADDRESS;
|
|
115
127
|
// Extend with new config
|
|
116
128
|
const randomOwner = new Wallet(ANVIL_KEY).address;
|
|
117
129
|
const extendedConfig = {
|
|
@@ -130,7 +142,7 @@ describe('WarpApply e2e tests', async function () {
|
|
|
130
142
|
const updatedWarpDeployConfig_2 = await readWarpConfig(CHAIN_NAME_2, COMBINED_WARP_CORE_CONFIG_PATH, warpDeployPath);
|
|
131
143
|
const updatedWarpDeployConfig_3 = await readWarpConfig(CHAIN_NAME_3, COMBINED_WARP_CORE_CONFIG_PATH, warpDeployPath);
|
|
132
144
|
// Check that anvil2 owner is burned
|
|
133
|
-
expect(updatedWarpDeployConfig_2.anvil2.owner).to.equal(
|
|
145
|
+
expect(updatedWarpDeployConfig_2.anvil2.owner).to.equal(E2E_TEST_BURN_ADDRESS);
|
|
134
146
|
// Also, anvil3 owner is not burned
|
|
135
147
|
expect(updatedWarpDeployConfig_3.anvil3.owner).to.equal(randomOwner);
|
|
136
148
|
// Check that both chains enrolled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-apply.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-apply.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,
|
|
1
|
+
{"version":3,"file":"warp-apply.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-apply.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EACL,QAAQ,EAER,SAAS,EAET,eAAe,EACf,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,QAAQ,CAAC,gCAAgC,EAAE,KAAK;IAC9C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAE3C,IAAI,eAAe,GAAmB,EAAE,CAAC;IAEzC,MAAM,CAAC,KAAK;QACV,MAAM,uBAAuB,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QACzE,eAAe,GAAG,MAAM,uBAAuB,CAC7C,YAAY,EACZ,gBAAgB,EAChB,SAAS,CACV,CAAC;QAEF,6CAA6C;QAC7C,MAAM,UAAU,GAA0B,cAAc,CACtD,wBAAwB,CACzB,CAAC;QACF,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1D,eAAe,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK;QACd,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK;QACnC,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,WAAW,CACf,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,uBAAuB,CACxB,CAAC;QACF,MAAM,uBAAuB,GAAG,MAAM,cAAc,CAClD,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QACF,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CACnD,qBAAqB,CACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,WAAW,CACf,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,uBAAuB,CACxB,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAClC,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,uBAAuB,CACxB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CACvB,uDAAuD,CACxD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QAEnE,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAC3C,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QAEF,gCAAgC;QAChC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,GAAG;YACpC,IAAI,EAAE,QAAQ,CAAC,YAAY;YAC3B,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,QAAQ;YACrB,KAAK;SACN,CAAC;QAEF,2BAA2B;QAC3B,MAAM,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAExD,oBAAoB;QACpB,MAAM,kBAAkB,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QAElE,yCAAyC;QACzC,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QAEF,kDAAkD;QAClD,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACrE,eAAe,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,mCAAmC;QACnC,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,cAAc,CAAC,YAAY,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;QAE5E,yBAAyB;QACzB,MAAM,MAAM,GAAsB;YAChC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,eAAgB,CAAC,OAAO;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO;YACpC,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,MAAM;SACvB,CAAC;QAEF,MAAM,gBAAgB,CAAC;YACrB,KAAK,EAAE,YAAY;YACnB,aAAa,EAAE,YAAY;YAC3B,cAAc,EAAE,MAAM;YACtB,YAAY,EAAE,uBAAuB;YACrC,cAAc,EAAE,cAAc;SAC/B,CAAC,CAAC;QAEH,MAAM,8BAA8B,GAAG,GAAG,aAAa,wDAAwD,CAAC;QAEhH,0CAA0C;QAC1C,MAAM,wBAAwB,GAAG,MAAM,cAAc,CACnD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,wBAAwB,CAAC,YAAY,CAAC,CAAC,aAAc,CACtD,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/C,0CAA0C;QAC1C,MAAM,wBAAwB,GAAG,MAAM,cAAc,CACnD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,wBAAwB,CAAC,YAAY,CAAC,CAAC,aAAc,CACtD,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,mCAAmC;QACnC,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,cAAc,CAAC,YAAY,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;QAE5E,yBAAyB;QACzB,MAAM,MAAM,GAAsB;YAChC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,eAAgB,CAAC,OAAO;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO;YACpC,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,MAAM;SACvB,CAAC;QAEF,MAAM,gBAAgB,CAAC;YACrB,KAAK,EAAE,YAAY;YACnB,aAAa,EAAE,YAAY;YAC3B,cAAc,EAAE,MAAM;YACtB,YAAY,EAAE,uBAAuB;YACrC,cAAc,EAAE,cAAc;YAC9B,WAAW,EAAE,GAAG,aAAa,+CAA+C;SAC7E,CAAC,CAAC;QAEH,MAAM,8BAA8B,GAAG,GAAG,aAAa,wDAAwD,CAAC;QAEhH,0CAA0C;QAC1C,MAAM,wBAAwB,GAAG,MAAM,cAAc,CACnD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,wBAAwB,CAAC,YAAY,CAAC,CAAC,aAAc,CACtD,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/C,0CAA0C;QAC1C,MAAM,wBAAwB,GAAG,MAAM,cAAc,CACnD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,wBAAwB,CAAC,YAAY,CAAC,CAAC,aAAc,CACtD,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAC3C,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QACF,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,qBAAqB,CAAC;QAE7D,yBAAyB;QACzB,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAClD,MAAM,cAAc,GAAsB;YACxC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,eAAgB,CAAC,OAAO;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,MAAM;SACvB,CAAC;QAEF,gBAAgB,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC;QAChD,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClD,MAAM,kBAAkB,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QAElE,MAAM,8BAA8B,GAAG,GAAG,aAAa,wDAAwD,CAAC;QAEhH,MAAM,yBAAyB,GAAG,MAAM,cAAc,CACpD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QACF,MAAM,yBAAyB,GAAG,MAAM,cAAc,CACpD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QACF,oCAAoC;QACpC,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CACrD,qBAAqB,CACtB,CAAC;QAEF,mCAAmC;QACnC,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAErE,kCAAkC;QAClC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,yBAAyB,CAAC,YAAY,CAAC,CAAC,aAAc,CACvD,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,yBAAyB,CAAC,YAAY,CAAC,CAAC,aAAc,CACvD,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,mCAAmC;QACnC,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAC3C,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QACF,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QAE1C,yBAAyB;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,MAAM,cAAc,GAAsB;YACxC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,eAAgB,CAAC,OAAO;YACjC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO;YACpC,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,EAAE,GAAG;SACT,CAAC;QACF,gBAAgB,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC;QAChD,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAClD,MAAM,kBAAkB,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QAElE,MAAM,8BAA8B,GAAG,GAAG,aAAa,wDAAwD,CAAC;QAEhH,0CAA0C;QAC1C,MAAM,yBAAyB,GAAG,MAAM,cAAc,CACpD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE5D,sGAAsG;QACtG,MAAM,gBAAgB,GACpB,yBAAyB,CAAC,YAAY,CAAC,CAAC,cAAe,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5D,gEAAgE;QAChE,MAAM,yBAAyB,GAAG,MAAM,cAAc,CACpD,YAAY,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;QACF,MAAM,gBAAgB,GACpB,yBAAyB,CAAC,YAAY,CAAC,CAAC,cAAe,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,28 +3,24 @@ import chaiAsPromised from 'chai-as-promised';
|
|
|
3
3
|
import { TokenType } from '@hyperlane-xyz/sdk';
|
|
4
4
|
import { WarpSendLogs } from '../send/transfer.js';
|
|
5
5
|
import { writeYamlOrJson } from '../utils/files.js';
|
|
6
|
-
import { ANVIL_KEY, REGISTRY_PATH, deploy4626Vault, deployOrUseExistingCore, deployToken, sendWarpRouteMessageRoundTrip, } from './commands/helpers.js';
|
|
6
|
+
import { ANVIL_KEY, CHAIN_NAME_2, CHAIN_NAME_3, CORE_CONFIG_PATH, DEFAULT_E2E_TEST_TIMEOUT, REGISTRY_PATH, TEMP_PATH, deploy4626Vault, deployOrUseExistingCore, deployToken, sendWarpRouteMessageRoundTrip, } from './commands/helpers.js';
|
|
7
7
|
import { hyperlaneWarpDeploy, readWarpConfig } from './commands/warp.js';
|
|
8
8
|
chai.use(chaiAsPromised);
|
|
9
9
|
const expect = chai.expect;
|
|
10
10
|
chai.should();
|
|
11
|
-
const CHAIN_NAME_2 = 'anvil2';
|
|
12
|
-
const CHAIN_NAME_3 = 'anvil3';
|
|
13
|
-
const EXAMPLES_PATH = './examples';
|
|
14
|
-
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
15
|
-
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
16
11
|
const WARP_CONFIG_PATH = `${TEMP_PATH}/warp-route-deployment-deploy.yaml`;
|
|
17
12
|
const WARP_CORE_CONFIG_PATH_2_3 = `${REGISTRY_PATH}/deployments/warp_routes/VAULT/anvil2-anvil3-config.yaml`;
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
describe('hyperlane warp deploy e2e tests', async function () {
|
|
14
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
20
15
|
let chain2Addresses = {};
|
|
21
16
|
let chain3Addresses = {};
|
|
22
17
|
let token;
|
|
23
18
|
let vault;
|
|
24
|
-
this.timeout(TEST_TIMEOUT);
|
|
25
19
|
before(async function () {
|
|
26
|
-
chain2Addresses = await
|
|
27
|
-
|
|
20
|
+
[chain2Addresses, chain3Addresses] = await Promise.all([
|
|
21
|
+
deployOrUseExistingCore(CHAIN_NAME_2, CORE_CONFIG_PATH, ANVIL_KEY),
|
|
22
|
+
deployOrUseExistingCore(CHAIN_NAME_3, CORE_CONFIG_PATH, ANVIL_KEY),
|
|
23
|
+
]);
|
|
28
24
|
token = await deployToken(ANVIL_KEY, CHAIN_NAME_2);
|
|
29
25
|
vault = await deploy4626Vault(ANVIL_KEY, CHAIN_NAME_2, token.address);
|
|
30
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-deploy.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-deploy.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;AAEd,MAAM,
|
|
1
|
+
{"version":3,"file":"warp-deploy.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-deploy.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
3
|
-
import { ANVIL_KEY,
|
|
3
|
+
import { ANVIL_KEY, CHAIN_NAME_2, CORE_CONFIG_PATH, DEFAULT_E2E_TEST_TIMEOUT, TEMP_PATH, WARP_CONFIG_PATH_2, WARP_CONFIG_PATH_EXAMPLE, WARP_CORE_CONFIG_PATH_2, deployOrUseExistingCore, } from './commands/helpers.js';
|
|
4
4
|
import { hyperlaneWarpDeploy, readWarpConfig } from './commands/warp.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
8
|
-
const WARP_CONFIG_PATH_EXAMPLE = `${EXAMPLES_PATH}/warp-route-deployment.yaml`;
|
|
9
|
-
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
10
|
-
const WARP_CONFIG_PATH_2 = `${TEMP_PATH}/anvil2/warp-route-deployment-anvil2.yaml`;
|
|
11
|
-
const WARP_CORE_CONFIG_PATH_2 = `${REGISTRY_PATH}/deployments/warp_routes/ETH/anvil2-config.yaml`;
|
|
12
|
-
const TEST_TIMEOUT = 60000; // Long timeout since these tests can take a while
|
|
13
|
-
describe('WarpRead e2e tests', async function () {
|
|
5
|
+
describe('hyperlane warp read e2e tests', async function () {
|
|
6
|
+
this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
|
|
14
7
|
let anvil2Config;
|
|
15
|
-
this.timeout(TEST_TIMEOUT);
|
|
16
8
|
before(async function () {
|
|
17
9
|
await deployOrUseExistingCore(CHAIN_NAME_2, CORE_CONFIG_PATH, ANVIL_KEY);
|
|
18
10
|
// Create a new warp config using the example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-read.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-read.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"warp-read.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-read.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE,QAAQ,CAAC,+BAA+B,EAAE,KAAK;IAC7C,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEvC,IAAI,YAAmC,CAAC;IAExC,MAAM,CAAC,KAAK;QACV,MAAM,uBAAuB,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEzE,6CAA6C;QAC7C,MAAM,iBAAiB,GAA0B,cAAc,CAC7D,wBAAwB,CACzB,CAAC;QACF,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3D,eAAe,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK;QACd,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK;QAC7C,MAAM,cAAc,GAAG,GAAG,SAAS,+BAA+B,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,cAAc,CACrC,YAAY,EACZ,uBAAuB,EACvB,cAAc,CACf,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAC/C,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAChC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "7.
|
|
1
|
+
export declare const VERSION = "7.3.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '7.
|
|
1
|
+
export const VERSION = '7.3.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperlane-xyz/cli",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.3.0",
|
|
4
4
|
"description": "A command-line utility for common Hyperlane operations",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@aws-sdk/client-kms": "^3.577.0",
|
|
7
7
|
"@aws-sdk/client-s3": "^3.577.0",
|
|
8
8
|
"@hyperlane-xyz/registry": "6.1.0",
|
|
9
|
-
"@hyperlane-xyz/sdk": "7.
|
|
10
|
-
"@hyperlane-xyz/utils": "7.
|
|
9
|
+
"@hyperlane-xyz/sdk": "7.3.0",
|
|
10
|
+
"@hyperlane-xyz/utils": "7.3.0",
|
|
11
11
|
"@inquirer/core": "9.0.10",
|
|
12
12
|
"@inquirer/figures": "1.0.5",
|
|
13
13
|
"@inquirer/prompts": "3.3.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.e2e-test.d.ts","sourceRoot":"","sources":["../../../src/tests/core.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import { Wallet, ethers } from 'ethers';
|
|
3
|
-
import { ProxyAdmin__factory } from '@hyperlane-xyz/core';
|
|
4
|
-
import { randomAddress, } from '@hyperlane-xyz/sdk';
|
|
5
|
-
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
6
|
-
import { hyperlaneCoreApply, hyperlaneCoreDeploy, readCoreConfig, } from './commands/core.js';
|
|
7
|
-
import { ANVIL_KEY, REGISTRY_PATH } from './commands/helpers.js';
|
|
8
|
-
const CHAIN_NAME = 'anvil2';
|
|
9
|
-
const EXAMPLES_PATH = './examples';
|
|
10
|
-
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
11
|
-
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
12
|
-
const CORE_READ_CONFIG_PATH = `${TEMP_PATH}/anvil2/core-config-read.yaml`;
|
|
13
|
-
const TEST_TIMEOUT = 100000; // Long timeout since these tests can take a while
|
|
14
|
-
describe('hyperlane core e2e tests', async function () {
|
|
15
|
-
this.timeout(TEST_TIMEOUT);
|
|
16
|
-
let signer;
|
|
17
|
-
let initialOwnerAddress;
|
|
18
|
-
before(async () => {
|
|
19
|
-
const chainMetadata = readYamlOrJson(`${REGISTRY_PATH}/chains/${CHAIN_NAME}/metadata.yaml`);
|
|
20
|
-
const provider = new ethers.providers.JsonRpcProvider(chainMetadata.rpcUrls[0].http);
|
|
21
|
-
const wallet = new Wallet(ANVIL_KEY);
|
|
22
|
-
signer = wallet.connect(provider);
|
|
23
|
-
initialOwnerAddress = await signer.getAddress();
|
|
24
|
-
});
|
|
25
|
-
describe('core.deploy', () => {
|
|
26
|
-
it('should create a core deployment with the signer as the mailbox owner', async () => {
|
|
27
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_CONFIG_PATH);
|
|
28
|
-
const coreConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
29
|
-
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
30
|
-
expect(coreConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
31
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
32
|
-
expect(coreConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
33
|
-
});
|
|
34
|
-
it('should create a core deployment with the mailbox owner set to the address in the config', async () => {
|
|
35
|
-
const coreConfig = await readYamlOrJson(CORE_CONFIG_PATH);
|
|
36
|
-
const newOwner = randomAddress().toLowerCase();
|
|
37
|
-
coreConfig.owner = newOwner;
|
|
38
|
-
writeYamlOrJson(CORE_READ_CONFIG_PATH, coreConfig);
|
|
39
|
-
// Deploy the core contracts with the updated mailbox owner
|
|
40
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
41
|
-
// Verify that the owner has been set correctly without modifying any other owner values
|
|
42
|
-
const updatedConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
43
|
-
expect(updatedConfig.owner.toLowerCase()).to.equal(newOwner);
|
|
44
|
-
expect(updatedConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
45
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
46
|
-
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
47
|
-
});
|
|
48
|
-
it('should create a core deployment with ProxyAdmin owner of the mailbox set to the address in the config', async () => {
|
|
49
|
-
const coreConfig = await readYamlOrJson(CORE_CONFIG_PATH);
|
|
50
|
-
const newOwner = randomAddress().toLowerCase();
|
|
51
|
-
coreConfig.proxyAdmin = { owner: newOwner };
|
|
52
|
-
writeYamlOrJson(CORE_READ_CONFIG_PATH, coreConfig);
|
|
53
|
-
// Deploy the core contracts with the updated mailbox owner
|
|
54
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
55
|
-
// Verify that the owner has been set correctly without modifying any other owner values
|
|
56
|
-
const updatedConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
57
|
-
expect(updatedConfig.owner).to.equal(initialOwnerAddress);
|
|
58
|
-
expect(updatedConfig.proxyAdmin?.owner.toLowerCase()).to.equal(newOwner);
|
|
59
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
60
|
-
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe('core.apply', () => {
|
|
64
|
-
it('should update the mailbox owner', async () => {
|
|
65
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_CONFIG_PATH);
|
|
66
|
-
const coreConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
67
|
-
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
68
|
-
const newOwner = randomAddress().toLowerCase();
|
|
69
|
-
coreConfig.owner = newOwner;
|
|
70
|
-
writeYamlOrJson(CORE_READ_CONFIG_PATH, coreConfig);
|
|
71
|
-
await hyperlaneCoreApply(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
72
|
-
// Verify that the owner has been set correctly without modifying any other owner values
|
|
73
|
-
const updatedConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
74
|
-
expect(updatedConfig.owner.toLowerCase()).to.equal(newOwner);
|
|
75
|
-
expect(updatedConfig.proxyAdmin?.owner).to.equal(initialOwnerAddress);
|
|
76
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
77
|
-
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
78
|
-
});
|
|
79
|
-
it('should update the ProxyAdmin to a new one for the mailbox', async () => {
|
|
80
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_CONFIG_PATH);
|
|
81
|
-
const coreConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
82
|
-
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
83
|
-
const proxyFactory = new ProxyAdmin__factory().connect(signer);
|
|
84
|
-
const deployTx = await proxyFactory.deploy();
|
|
85
|
-
const newProxyAdmin = await deployTx.deployed();
|
|
86
|
-
coreConfig.proxyAdmin.address = newProxyAdmin.address;
|
|
87
|
-
writeYamlOrJson(CORE_READ_CONFIG_PATH, coreConfig);
|
|
88
|
-
await hyperlaneCoreApply(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
89
|
-
// Verify that the owner has been set correctly without modifying any other owner values
|
|
90
|
-
const updatedConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
91
|
-
expect(updatedConfig.owner).to.equal(initialOwnerAddress);
|
|
92
|
-
expect(updatedConfig.proxyAdmin?.address).to.equal(newProxyAdmin.address);
|
|
93
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
94
|
-
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
95
|
-
});
|
|
96
|
-
it('should update the ProxyAdmin owner for the mailbox', async () => {
|
|
97
|
-
await hyperlaneCoreDeploy(CHAIN_NAME, CORE_CONFIG_PATH);
|
|
98
|
-
const coreConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
99
|
-
expect(coreConfig.owner).to.equal(initialOwnerAddress);
|
|
100
|
-
const newOwner = randomAddress().toLowerCase();
|
|
101
|
-
coreConfig.proxyAdmin.owner = newOwner;
|
|
102
|
-
writeYamlOrJson(CORE_READ_CONFIG_PATH, coreConfig);
|
|
103
|
-
await hyperlaneCoreApply(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
104
|
-
// Verify that the owner has been set correctly without modifying any other owner values
|
|
105
|
-
const updatedConfig = await readCoreConfig(CHAIN_NAME, CORE_READ_CONFIG_PATH);
|
|
106
|
-
expect(updatedConfig.owner).to.equal(initialOwnerAddress);
|
|
107
|
-
expect(updatedConfig.proxyAdmin?.owner.toLowerCase()).to.equal(newOwner);
|
|
108
|
-
// Assuming that the ProtocolFeeHook is used for deployment
|
|
109
|
-
expect(updatedConfig.requiredHook.owner).to.equal(initialOwnerAddress);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
//# sourceMappingURL=core.e2e-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/core.e2e-test.ts"],"names":[],"mappings":"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"}
|