Skip to content

Commit

Permalink
fix: cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
janek26 committed Oct 29, 2021
1 parent 2c9e287 commit 82aa438
Show file tree
Hide file tree
Showing 24 changed files with 815 additions and 1,691 deletions.
3 changes: 3 additions & 0 deletions __tests__/__snapshots__/ec.test.ts.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`pedersen 1`] = `"0x5ed2703dfdb505c587700ce2ebfcab5b3515cd7e6114817e6026ec9d4b364ca"`;
23 changes: 11 additions & 12 deletions __tests__/contracts.test.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { BigNumber } from '@ethersproject/bignumber';
import fs from 'fs';
import {
CompiledContract,
Contract,
deployContract,
JsonParser,
randomAddress,
waitForTx,
} from '../src';

const compiledERC20: CompiledContract = JsonParser.parse(
import { CompiledContract, Contract, deployContract, utils, waitForTx } from '../src';

const {
json: { parse },
number: { toBN },
starknet: { randomAddress },
} = utils;

const compiledERC20: CompiledContract = parse(
fs.readFileSync('./__mocks__/ERC20.json').toString('ascii')
);

Expand All @@ -29,7 +28,7 @@ describe('class Contract {}', () => {
const response = await contract.call('balance_of', {
user: wallet,
});
expect(BigNumber.from(response.res)).toStrictEqual(BigNumber.from(0));
expect(toBN(response.res as string).toString()).toStrictEqual(toBN(0).toString());
});
test('add 10 test ERC20 to account', async () => {
const response = await contract.invoke('mint', {
Expand All @@ -48,6 +47,6 @@ describe('class Contract {}', () => {
user: wallet,
});

expect(BigNumber.from(response.res)).toStrictEqual(BigNumber.from(10));
expect(toBN(response.res as string).toString()).toStrictEqual(toBN(10).toString());
});
});
26 changes: 12 additions & 14 deletions __tests__/ec.test.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
import { pedersen as pedersenReal } from '@authereum/starkware-crypto';
import { BigNumber } from '@ethersproject/bignumber';
import { ensure0x, ensureNo0x, hashCalldata, hashMessage } from '../src';
import { getKeyPair, getStarkKey, pedersen, sign } from '../src/ec';
import { removeHexPrefix } from 'enc-utils';

import { getKeyPair, getStarkKey, hashCalldata, hashMessage, pedersen, sign } from '../src';
import { toBN, toHex } from '../src/utils/number';

test('does work with package', () => {
const pk = '0x019800ea6a9a73f94aee6a3d2edf018fc770443e90c7ba121e8303ec6b349279';
const pair = getKeyPair(pk);
// somehow needed, returns error else
expect(BigNumber.from(getStarkKey(pair)).toHexString()).toBe(
'0x033f45f07e1bd1a51b45fc24ec8c8c9908db9e42191be9e169bfcac0c0d99745'
expect(toHex(toBN(getStarkKey(pair)))).toBe(
'0x33f45f07e1bd1a51b45fc24ec8c8c9908db9e42191be9e169bfcac0c0d99745'
);
});

test('pedersen', () => {
const real = ensure0x(pedersenReal(['0x12773', '0x872362']));
const own = pedersen(['0x12773', '0x872362']);
// somehow needed, returns error else
expect(own).toBe(real);
expect(own).toMatchSnapshot();
});

test('hashCalldata()', () => {
Expand All @@ -41,11 +39,11 @@ test('hashMessage()', () => {
);
expect(hashMsg).toBe('0xf7ec4a68876819eed838be83b5d5dc337081f4a5fb8e421f3d9bdef7c69e9b');
const keyPair = getKeyPair(pk);
const { r, s } = sign(keyPair, ensureNo0x(hashMsg));
expect(BigNumber.from(ensure0x(r.toString('hex')))).toStrictEqual(
BigNumber.from('2699852629692218907583414128365108566181098618321049245303767746418549764831')
const { r, s } = sign(keyPair, removeHexPrefix(hashMsg));
expect(r.toString()).toStrictEqual(
toBN('2699852629692218907583414128365108566181098618321049245303767746418549764831').toString()
);
expect(BigNumber.from(ensure0x(s.toString('hex')))).toStrictEqual(
BigNumber.from('2362979021721299440845279407227912881357338080403308888611869245024056250189')
expect(s.toString()).toStrictEqual(
toBN('2362979021721299440845279407227912881357338080403308888611869245024056250189').toString()
);
});
20 changes: 12 additions & 8 deletions __tests__/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
import fs from 'fs';

import {
CompiledContract,
compressProgram,
randomAddress,
JsonParser,
getContractAddresses,
addTransaction,
deployContract,
getBlock,
getCode,
getContractAddresses,
getStorageAt,
getTransactionStatus,
getTransaction,
addTransaction,
deployContract,
getTransactionStatus,
utils,
} from '../src';

const compiledArgentAccount = JsonParser.parse(
const {
json: { parse },
starknet: { compressProgram, randomAddress },
} = utils;

const compiledArgentAccount = parse(
fs.readFileSync('./__mocks__/ArgentAccount.json').toString('ascii')
);

Expand Down
54 changes: 0 additions & 54 deletions __tests__/math.test.ts

This file was deleted.

15 changes: 11 additions & 4 deletions __tests__/utils.browser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,21 @@
*/

import fs from 'fs';
import { compressProgram, isBrowser, JsonParser } from '../src';

const compiledArgentAccount = JsonParser.parse(
import { constants, utils } from '../src';

const { IS_BROWSER } = constants;
const {
json: { parse, stringify },
starknet: { compressProgram },
} = utils;

const compiledArgentAccount = parse(
fs.readFileSync('./__mocks__/ArgentAccount.json').toString('ascii')
);

test('isBrowser', () => {
expect(isBrowser).toBe(true);
expect(IS_BROWSER).toBe(true);
});
describe('compressProgram()', () => {
test('compresses a contract program', () => {
Expand All @@ -21,7 +28,7 @@ describe('compressProgram()', () => {
expect(compressed).toMatchSnapshot();
});
test('works with strings', () => {
const inputProgram = JsonParser.stringify(compiledArgentAccount.program);
const inputProgram = stringify(compiledArgentAccount.program);

const compressed = compressProgram(inputProgram);

Expand Down
26 changes: 20 additions & 6 deletions __tests__/utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import fs from 'fs';
import { compressProgram, makeAddress, isBrowser, JsonParser, getSelectorFromName } from '../src';

const compiledArgentAccount = JsonParser.parse(
import { constants, utils } from '../src';

const { IS_BROWSER } = constants;
const {
json: { parse, stringify },
starknet: { compressProgram, getSelectorFromName, makeAddress },
enc: { hexToDecimalString },
} = utils;

const compiledArgentAccount = parse(
fs.readFileSync('./__mocks__/ArgentAccount.json').toString('ascii')
);

test('isNode', () => {
expect(isBrowser).toBe(false);
expect(IS_BROWSER).toBe(false);
});
describe('compressProgram()', () => {
test('compresses a contract program', () => {
Expand All @@ -17,13 +25,19 @@ describe('compressProgram()', () => {
expect(compressed).toMatchSnapshot();
});
test('works with strings', () => {
const inputProgram = JsonParser.stringify(compiledArgentAccount.program);
const inputProgram = stringify(compiledArgentAccount.program);

const compressed = compressProgram(inputProgram);

expect(compressed).toMatchSnapshot();
});
});
describe('hexToDecimalString()', () => {
test('parse 0xa23', () => {
expect(hexToDecimalString('0xa23')).toBe('2595');
});
});

describe('makeAddress()', () => {
test('test on eth address', () => {
const ethAddress = '0xdFD0F27FCe99b50909de0bDD328Aed6eAbe76BC5';
Expand All @@ -33,7 +47,7 @@ describe('makeAddress()', () => {
expect(starkAddress).toBe('0xdfd0f27fce99b50909de0bdd328aed6eabe76bc5');
});
});
describe('starknetKeccak()', () => {
describe('getSelectorFromName()', () => {
test('hash works for value="test"', () => {
expect(getSelectorFromName('test')).toBe(
'0x22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658'
Expand All @@ -46,7 +60,7 @@ describe('starknetKeccak()', () => {
});
test('hash works for value="mint"', () => {
expect(getSelectorFromName('mint')).toBe(
'0x02f0b3c5710379609eb5495f1ecd348cb28167711b73609fe565a72734550354'
'0x2f0b3c5710379609eb5495f1ecd348cb28167711b73609fe565a72734550354'
);
});
});
47 changes: 25 additions & 22 deletions __tests__/wallet.test.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
import { BigNumber } from '@ethersproject/bignumber';

import fs from 'fs';

import { addHexPrefix } from 'enc-utils';

import {
hashMessage,
CompiledContract,
Contract,
deployContract,
JsonParser,
waitForTx,
randomAddress,
getSelectorFromName,
ensure0x,
getStarkKey,
getKeyPair,
getStarkKey,
hashMessage,
sign,
utils,
waitForTx,
} from '../src';
import { toBN } from '../src/utils/number';

const {
json: { parse },
starknet: { getSelectorFromName, randomAddress },
number: { toHex },
} = utils;

describe('getStarkAccountFromPk()', () => {
test('it works with valid pk', () => {
Expand All @@ -35,10 +40,10 @@ describe('getStarkAccountFromPk()', () => {
});
});

const compiledArgentAccount: CompiledContract = JsonParser.parse(
const compiledArgentAccount: CompiledContract = parse(
fs.readFileSync('./__mocks__/ArgentAccount.json').toString('ascii')
);
const compiledErc20: CompiledContract = JsonParser.parse(
const compiledErc20: CompiledContract = parse(
fs.readFileSync('./__mocks__/ERC20.json').toString('ascii')
);

Expand Down Expand Up @@ -93,18 +98,18 @@ describe('deploy and test Wallet', () => {
test('read nonce', async () => {
const { nonce } = await wallet.call('get_current_nonce');

expect(BigNumber.from(nonce)).toStrictEqual(BigNumber.from(0));
expect(toBN(nonce as string).toString()).toStrictEqual(toBN(0).toString());
});
test('read balance of wallet', async () => {
const { res } = await erc20.call('balance_of', {
user: walletAddress,
});

expect(BigNumber.from(res)).toStrictEqual(BigNumber.from(1000));
expect(toBN(res as string).toString()).toStrictEqual(toBN(1000).toString());
});
test('execute by wallet owner', async () => {
const { nonce } = await wallet.call('get_current_nonce');
const msgHash = ensure0x(
const msgHash = addHexPrefix(
hashMessage(
walletAddress,
erc20Address,
Expand All @@ -113,14 +118,14 @@ describe('deploy and test Wallet', () => {
nonce.toString()
)
);
console.log(msgHash);

const { r, s } = sign(starkKeyPair, msgHash);
const { code, tx_id } = await wallet.invoke('execute', {
to: erc20Address,
selector: getSelectorFromName('transfer'),
calldata: [erc20Address, '10'],
nonce: nonce.toString(),
sig: [ensure0x(r.toString('hex')), ensure0x(s.toString('hex'))],
sig: [toHex(r), toHex(s)],
});

// I want to show the tx number to the tester, so he/she can trace the transaction in the explorer.
Expand All @@ -135,7 +140,7 @@ describe('deploy and test Wallet', () => {
user: walletAddress,
});

expect(BigNumber.from(res)).toStrictEqual(BigNumber.from(990));
expect(toBN(res as string).toString()).toStrictEqual(toBN(990).toString());
});
});

Expand All @@ -149,14 +154,12 @@ test('build tx', async () => {
const selector = getSelectorFromName('transfer');

expect(selector).toBe(
BigNumber.from(
'232670485425082704932579856502088130646006032362877466777181098476241604910'
).toHexString()
toHex(toBN('232670485425082704932579856502088130646006032362877466777181098476241604910'))
);

const msgHash = hashMessage(address, '1', selector, ['6', '7'], '0');
expect(BigNumber.from(msgHash)).toStrictEqual(
BigNumber.from('2221651675559331189881349481637314109810712322791057846116415219218634672652')
expect(toBN(msgHash).toString()).toStrictEqual(
toBN('2221651675559331189881349481637314109810712322791057846116415219218634672652').toString()
);

const { r, s } = sign(keyPair, msgHash);
Expand Down

0 comments on commit 82aa438

Please sign in to comment.