message-encoding.spec.ts 1.98 KB
Newer Older
1 2 3 4 5
import { expect } from '../setup'
import { Contract, Signer } from 'ethers'
import { ethers } from 'hardhat'
import { getContractFactory } from '@eth-optimism/contracts'
import {
6
  CoreCrossChainMessage,
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
  encodeCrossChainMessage,
  hashCrossChainMessage,
} from '../../src'

describe('message encoding utils', () => {
  let signers: Signer[]
  before(async () => {
    signers = (await ethers.getSigners()) as any
  })

  describe('encodeCrossChainMessage', () => {
    let Lib_CrossDomainUtils: Contract
    before(async () => {
      Lib_CrossDomainUtils = (await getContractFactory(
        'TestLib_CrossDomainUtils',
        signers[0]
      ).deploy()) as any
    })

    it('should properly encode a message', async () => {
27
      const message: CoreCrossChainMessage = {
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
        target: '0x' + '11'.repeat(20),
        sender: '0x' + '22'.repeat(20),
        message: '0x' + '1234'.repeat(32),
        messageNonce: 1234,
      }

      const actual = encodeCrossChainMessage(message)
      const expected = await Lib_CrossDomainUtils.encodeXDomainCalldata(
        message.target,
        message.sender,
        message.message,
        message.messageNonce
      )
      expect(actual).to.equal(expected)
    })
  })

  describe('hashCrossChainMessage', () => {
    let MessageEncodingHelper: Contract
    before(async () => {
      MessageEncodingHelper = (await (
        await ethers.getContractFactory('MessageEncodingHelper')
      ).deploy()) as any
    })

    it('should properly hash a message', async () => {
54
      const message: CoreCrossChainMessage = {
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
        target: '0x' + '11'.repeat(20),
        sender: '0x' + '22'.repeat(20),
        message: '0x' + '1234'.repeat(32),
        messageNonce: 1234,
      }

      const actual = hashCrossChainMessage(message)
      const expected = await MessageEncodingHelper.hashXDomainCalldata(
        message.target,
        message.sender,
        message.message,
        message.messageNonce
      )
      expect(actual).to.equal(expected)
    })
  })
})