import * as chai from 'chai'; import 'mocha'; import { signTypedDataUtils } from '../src/sign_typed_data_utils'; const expect = chai.expect; describe('signTypedDataUtils', () => { describe('signTypedDataHash', () => { const simpleSignTypedDataHashHex = '0xb460d69ca60383293877cd765c0f97bd832d66bca720f7e32222ce1118832493'; const simpleSignTypedData = { types: { EIP712Domain: [ { name: 'name', type: 'string', }, ], Test: [ { name: 'testAddress', type: 'address', }, { name: 'testNumber', type: 'uint256', }, ], }, domain: { name: 'Test', }, message: { testAddress: '0x0000000000000000000000000000000000000000', testNumber: '12345', }, primaryType: 'Test', }; const orderSignTypedDataHashHex = '0x55eaa6ec02f3224d30873577e9ddd069a288c16d6fb407210eecbc501fa76692'; const orderSignTypedData = { types: { EIP712Domain: [ { name: 'name', type: 'string', }, { name: 'version', type: 'string', }, { name: 'verifyingContract', type: 'address', }, ], Order: [ { name: 'makerAddress', type: 'address', }, { name: 'takerAddress', type: 'address', }, { name: 'feeRecipientAddress', type: 'address', }, { name: 'senderAddress', type: 'address', }, { name: 'makerAssetAmount', type: 'uint256', }, { name: 'takerAssetAmount', type: 'uint256', }, { name: 'makerFee', type: 'uint256', }, { name: 'takerFee', type: 'uint256', }, { name: 'expirationTimeSeconds', type: 'uint256', }, { name: 'salt', type: 'uint256', }, { name: 'makerAssetData', type: 'bytes', }, { name: 'takerAssetData', type: 'bytes', }, ], }, domain: { name: '0x Protocol', version: '2', verifyingContract: '0x0000000000000000000000000000000000000000', }, message: { makerAddress: '0x0000000000000000000000000000000000000000', takerAddress: '0x0000000000000000000000000000000000000000', makerAssetAmount: '1000000000000000000', takerAssetAmount: '1000000000000000000', expirationTimeSeconds: '12345', makerFee: '0', takerFee: '0', feeRecipientAddress: '0x0000000000000000000000000000000000000000', senderAddress: '0x0000000000000000000000000000000000000000', salt: '12345', makerAssetData: '0x0000000000000000000000000000000000000000', takerAssetData: '0x0000000000000000000000000000000000000000', exchangeAddress: '0x0000000000000000000000000000000000000000', }, primaryType: 'Order', }; it('creates a hash of the test sign typed data', () => { const hash = signTypedDataUtils.generateTypedDataHash(simpleSignTypedData).toString('hex'); const hashHex = `0x${hash}`; expect(hashHex).to.be.eq(simpleSignTypedDataHashHex); }); it('creates a hash of the order sign typed data', () => { const hash = signTypedDataUtils.generateTypedDataHash(orderSignTypedData).toString('hex'); const hashHex = `0x${hash}`; expect(hashHex).to.be.eq(orderSignTypedDataHashHex); }); }); });