UNPKG

eth-typed-data

Version:

A library to simplifiy interacting with and signing EIP712 typed data

57 lines (50 loc) 2.08 kB
"use strict"; var util = require('ethereumjs-util'); // Example tests var _require = require('..'), EIP712Domain = _require.EIP712Domain; describe('MailExample', function () { // The provided example from the EIP712 PR var MailExample = require('./data/Mail.json'); var _MailExample$request$ = MailExample.request.types, personDef = _MailExample$request$.Person, mailDef = _MailExample$request$.Mail; var _MailExample$results$ = MailExample.results.Mail, encodeType = _MailExample$results$.encodeType, typeHash = _MailExample$results$.typeHash, encodeData = _MailExample$results$.encodeData, hashStruct = _MailExample$results$.hashStruct, signHash = _MailExample$results$.signHash; var Domain, Person, Mail, message; beforeAll(function () { // Build domain Domain = new EIP712Domain(MailExample.request.domain); // Build type constructors Person = Domain.createType('Person', personDef); Mail = Domain.createType('Mail', mailDef); // Build an instance of mail to test message = new Mail(MailExample.request.message); }); test('domainSeparator', function () { expect(util.bufferToHex(Domain.domainSeparator)).toEqual(MailExample.results.domainSeparator); }); test('toSignatureRequest', function () { expect(message.toSignatureRequest()).toEqual(MailExample.request); }); test('toObject', function () { expect(message.toObject()).toEqual(MailExample.request.message); }); test('encodeType', function () { expect(Mail.encodeType()).toEqual(encodeType); }); test('typeHash', function () { expect(util.bufferToHex(Mail.typeHash())).toEqual(typeHash); }); test('encodeData', function () { expect(util.bufferToHex(message.encodeData())).toEqual(encodeData); }); test('hashStruct', function () { expect(util.bufferToHex(message.hashStruct())).toEqual(hashStruct); }); test('signHash', function () { expect(util.bufferToHex(message.signHash())).toEqual(signHash); }); }); // Add more examples with different data structures here: // TODO