12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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),
- );
- });
- });
- });
|