You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.0 KiB
55 lines
2.0 KiB
require('@openzeppelin/test-helpers');
|
|
const { toEthSignedMessageHash, toDataWithIntendedValidatorHash } = require('../../helpers/sign');
|
|
const { domainSeparator, hashTypedData } = require('../../helpers/eip712');
|
|
|
|
const { expect } = require('chai');
|
|
|
|
const MessageHashUtils = artifacts.require('$MessageHashUtils');
|
|
|
|
contract('MessageHashUtils', function () {
|
|
beforeEach(async function () {
|
|
this.messageHashUtils = await MessageHashUtils.new();
|
|
|
|
this.message = '0x' + Buffer.from('abcd').toString('hex');
|
|
this.messageHash = web3.utils.sha3(this.message);
|
|
this.verifyingAddress = web3.utils.toChecksumAddress(web3.utils.randomHex(20));
|
|
});
|
|
|
|
context('toEthSignedMessageHash', function () {
|
|
it('prefixes bytes32 data correctly', async function () {
|
|
expect(await this.messageHashUtils.methods['$toEthSignedMessageHash(bytes32)'](this.messageHash)).to.equal(
|
|
toEthSignedMessageHash(this.messageHash),
|
|
);
|
|
});
|
|
|
|
it('prefixes dynamic length data correctly', async function () {
|
|
expect(await this.messageHashUtils.methods['$toEthSignedMessageHash(bytes)'](this.message)).to.equal(
|
|
toEthSignedMessageHash(this.message),
|
|
);
|
|
});
|
|
});
|
|
|
|
context('toDataWithIntendedValidatorHash', function () {
|
|
it('returns the digest correctly', async function () {
|
|
expect(
|
|
await this.messageHashUtils.$toDataWithIntendedValidatorHash(this.verifyingAddress, this.message),
|
|
).to.equal(toDataWithIntendedValidatorHash(this.verifyingAddress, this.message));
|
|
});
|
|
});
|
|
|
|
context('toTypedDataHash', function () {
|
|
it('returns the digest correctly', async function () {
|
|
const domain = {
|
|
name: 'Test',
|
|
version: 1,
|
|
chainId: 1,
|
|
verifyingContract: this.verifyingAddress,
|
|
};
|
|
const structhash = web3.utils.randomHex(32);
|
|
const expectedDomainSeparator = await domainSeparator(domain);
|
|
expect(await this.messageHashUtils.$toTypedDataHash(expectedDomainSeparator, structhash)).to.equal(
|
|
hashTypedData(domain, structhash),
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|