protocol/packages/protocol-utils/test/signature_utils_test.ts
Lawrence Forman edda1edc50
@0x/protocol-utils (#76)
* add new packages

* `@0x/protocol-utils`: Update with latest code from `@0x/contracs-zero-ex` + misc stuff

* @0x/contracts-zero-ex`: Switch to using `@0x/protocol-utils` in most places

* @0x/protocol-types`: Delete this package.

* regen yarn lock

* `@0x/contracts-zero-ex`: Unpin `@0x/protocol-utils` dep.

* `@0x/contracts-integrations`: Fix borken test

* update changelogs

* `@0x/protocol-utils`: Update deps

* `@0x/protocol-utils`: add tests

* `@0x/protocol-utils`: More tests

* `@0x/protocol-utils`: Update readme.

* update deps

* run prettier

* `@0x/contract-artifacts`: Regenerate artifacts

* `@0x/contract-wrappers`: Regenerate wrappers

* `@0x/protocol-utils`: Update changelog

* `@0x/contract-wrappers`: Export stuff for doc gen

* `@0x/protocol-utils`: Use `Web3Wrapper.signTypedDataV4Async()` for MM compatibility.

* upgrade org deps

Co-authored-by: Lawrence Forman <me@merklejerk.com>
2020-12-08 22:08:52 -05:00

77 lines
2.8 KiB
TypeScript

import { chaiSetup, web3Factory, Web3Wrapper } from '@0x/dev-utils';
import { Web3ProviderEngine } from '@0x/subproviders';
import { expect } from 'chai';
import {
ecSignHashWithKey,
eip712SignHashWithKey,
ethSignHashWithKey,
ethSignHashWithProviderAsync,
SignatureType,
} from '../src/signature_utils';
chaiSetup.configure();
describe('signature_utils', () => {
let provider: Web3ProviderEngine;
let signer: string;
const hash = '0x38a8da1ec749de4220312ce7fa62aaf01a6e8c1342cbce81278ae7c8885c2475';
const key = '0xee094b79aa0315914955f2f09be9abe541dcdc51f0aae5bec5453e9f73a471a6';
before(async () => {
provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true });
[signer] = await new Web3Wrapper(provider).getAvailableAddressesAsync();
});
describe('ethSignHashWithProviderAsync()', () => {
it('can sign a hash', async () => {
const actual = await ethSignHashWithProviderAsync(hash, signer, provider);
const expected = {
signatureType: SignatureType.EthSign,
r: '0xc1ea77c46d7aabf3f68f29870bc61eb583f9acb25af5a953ce2bff341b4c456a',
s: '0x66133126ef3058ec52081f9e3dd77103980483f3ab20d0529b14e4b194e7d12d',
v: 27,
};
expect(actual).to.deep.eq(expected);
});
});
describe('ethSignHashWithKey()', () => {
it('can sign a hash', async () => {
const actual = ethSignHashWithKey(hash, key);
const expected = {
signatureType: SignatureType.EthSign,
r: '0xb88b49ba6418464f9b1e703ea0fbba5f9d72576a4d9819e45d4ede7a34afbe73',
s: '0x6c81693f439942eb8c6ac943fab6b9fcc4b48615fcedcede93298f6dc3087ead',
v: 28,
};
expect(actual).to.deep.eq(expected);
});
});
describe('eip712SignHashWithKey()', () => {
it('can sign a hash', async () => {
const actual = eip712SignHashWithKey(hash, key);
const expected = {
signatureType: SignatureType.EIP712,
r: '0x1a01dba0f97d151f696f689e618a8ef6c4e7610a71c2607e18b0d96c741b3e8d',
s: '0x28fd463b90fd20cf17f16ab6831d712e9bce29619db1bef6e7802318d1de09ed',
v: 27,
};
expect(actual).to.deep.eq(expected);
});
});
describe('ecSignHashWithKey()', () => {
it('can sign a hash', async () => {
const actual = ecSignHashWithKey(hash, key);
const expected = {
r: '0x1a01dba0f97d151f696f689e618a8ef6c4e7610a71c2607e18b0d96c741b3e8d',
s: '0x28fd463b90fd20cf17f16ab6831d712e9bce29619db1bef6e7802318d1de09ed',
v: 27,
};
expect(actual).to.deep.eq(expected);
});
});
});