Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZK-559: (part 2) unit tests for shielder-sdk #90

Merged
merged 59 commits into from
Jan 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
22d941a
ZK-559: Add shielder-sdk-crypto package
kroist Jan 6, 2025
fee1b6a
add other packages to workspace
kroist Jan 7, 2025
e9ef3f1
ZK-559: Add WASM implementation of shielder-sdk-crypto
kroist Jan 7, 2025
1d8b114
separate cryptoClient interface
kroist Jan 7, 2025
1cf65dc
upd
kroist Jan 7, 2025
473b8cf
upd to new interface
kroist Jan 7, 2025
c2cf81f
Merge remote-tracking branch 'origin/main' into crypto-wasm
kroist Jan 8, 2025
29177ca
move lint config to workspace
kroist Jan 8, 2025
5e81347
comply with linter
kroist Jan 8, 2025
936d806
return single-threaded
kroist Jan 8, 2025
471a420
ZK-559: fix vite workers (wasm generation part)
kroist Jan 8, 2025
0abb655
Merge remote-tracking branch 'origin/ZK-559-workers-vite-fix' into cr…
kroist Jan 8, 2025
3973738
create patched version for vite
kroist Jan 8, 2025
b13140b
return to normal
kroist Jan 8, 2025
78ae484
add vite patch
kroist Jan 8, 2025
3e7f04e
add readme
kroist Jan 8, 2025
e04a43a
rm all about wasm
kroist Jan 9, 2025
7926432
rm /__internal
kroist Jan 9, 2025
b33159e
integrate into client
kroist Jan 9, 2025
0b011d0
finish
kroist Jan 9, 2025
9a37573
rm tests from CI
kroist Jan 9, 2025
2fd71b8
upd README
kroist Jan 9, 2025
298f56f
module loader
kroist Jan 9, 2025
9335dc7
worker docs
kroist Jan 9, 2025
170ea2e
rm comments
kroist Jan 9, 2025
44f396b
license and authors
kroist Jan 9, 2025
71b060b
Merge branch 'crypto-wasm' into shielder-sdk-rm-impl
kroist Jan 9, 2025
2b16902
add workspace build scripts
kroist Jan 9, 2025
d3b7bbe
upd CI
kroist Jan 9, 2025
bd3eaf3
Merge remote-tracking branch 'origin/main' into shielder-sdk-rm-impl
kroist Jan 10, 2025
77cc8fb
unused args in abstract method
kroist Jan 13, 2025
9a4016b
ZK-559: (part 1) unit tests for shielder-sdk
kroist Jan 13, 2025
d535f08
rm integration test
kroist Jan 13, 2025
f05e0cd
sha256 hash
kroist Jan 13, 2025
63887b8
upd CI
kroist Jan 13, 2025
caad635
disable some lints for tests
kroist Jan 13, 2025
9d72837
Update _ts-checks.yml
kroist Jan 13, 2025
2221d15
Merge remote-tracking branch 'origin/main' into sdk-unit-tests
kroist Jan 14, 2025
3bb925e
deposit action unit tests
kroist Jan 15, 2025
54adf68
more tests and coverage
kroist Jan 15, 2025
0ef5ad7
upd
kroist Jan 15, 2025
1f6c5bc
Merge remote-tracking branch 'origin/main' into sdk-unit-tests
kroist Jan 15, 2025
0bdc174
upd dep name
kroist Jan 15, 2025
0a6803a
upd
kroist Jan 15, 2025
ec024ef
upd
kroist Jan 15, 2025
add2cc5
Merge branch 'sdk-unit-tests' into unit-tests-part-2
kroist Jan 15, 2025
b6bc398
upd
kroist Jan 15, 2025
d5cffba
upd
kroist Jan 15, 2025
e8048b8
upd
kroist Jan 15, 2025
2307140
Merge branch 'sdk-unit-tests' into unit-tests-part-2
kroist Jan 15, 2025
9fbb68c
withdraw tests
kroist Jan 15, 2025
d1762e9
add scalar test values
kroist Jan 16, 2025
f47f862
small changes
kroist Jan 16, 2025
e6eb8b9
utils small change
kroist Jan 16, 2025
505461f
Merge branch 'sdk-unit-tests' into unit-tests-part-2
kroist Jan 16, 2025
bdf1d0e
add simulation throwing tests
kroist Jan 16, 2025
7478ff0
upd
kroist Jan 16, 2025
8e9ba06
rm coverage from lints
kroist Jan 16, 2025
825ba2a
Merge remote-tracking branch 'origin/main' into unit-tests-part-2
kroist Jan 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ts/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ export default tseslint.config(
"eslint.config.mjs",
"**/update-imports.mjs",
"**/jest.config.ts",
"**/__tests/"
"**/__tests/",
"**/coverage/"
]
},
{
Expand Down
38 changes: 11 additions & 27 deletions ts/shielder-sdk/__tests/helpers.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be really cool to see not only coverage percentage but also which lines are covered. Do you know if it's easy to do?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you run pnpm coverage locally, you can see which lines are uncovered, however it's tricky to add that to report.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, it works for me. We probably can also use some vs code extension to overlay this on editor view, but it seems to take some time to configure.

Converter,
CryptoClient,
DepositAdvice,
DepositCircuit,
DepositPubInputs,
Hasher,
NewAccountAdvice,
NewAccountCircuit,
Expand All @@ -19,7 +21,7 @@ import {
import { hexToBigInt } from "viem";

const SCALAR_MODULO = r;
export const ARITY = 7;
export const HASH_RATE = 7;
export const NOTE_VERSION = 0n;

const mockedHash = async (inputs: Scalar[]): Promise<Scalar> => {
Expand All @@ -36,7 +38,7 @@ const mockedHash = async (inputs: Scalar[]): Promise<Scalar> => {
};

const fullArityHash = async (inputs: Scalar[]): Promise<Scalar> => {
const scalarArray: Scalar[] = new Array<Scalar>(ARITY).fill(
const scalarArray: Scalar[] = new Array<Scalar>(HASH_RATE).fill(
Scalar.fromBigint(0n)
);
inputs.forEach((input, index) => {
Expand Down Expand Up @@ -86,7 +88,7 @@ class MockedHasher implements Hasher {
}

poseidonRate(): Promise<number> {
return Promise.resolve(7);
return Promise.resolve(HASH_RATE);
}
}

Expand All @@ -107,48 +109,30 @@ class MockedConverter implements Converter {

class MockedNoteTreeConfig implements NoteTreeConfig {
treeHeight(): Promise<number> {
return Promise.resolve(13);
return Promise.resolve(1);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice that we have control over this and get short test values

}

arity(): Promise<number> {
return Promise.resolve(7);
return Promise.resolve(2);
}
}

class MockedNewAccountCircuit implements NewAccountCircuit {
prove(values: NewAccountAdvice): Promise<Proof> {
const string = JSON.stringify(values);
const encoder = new TextEncoder();
const data = encoder.encode(string);
return Promise.resolve(data);
return Promise.resolve(new Uint8Array());
}

async verify(proof: Proof, pubInputs: NewAccountPubInputs): Promise<boolean> {
const proofString = new TextDecoder().decode(proof);
const advice: NewAccountAdvice = JSON.parse(proofString);

return (
scalarsEqual(pubInputs.hId, await mockedHash([advice.id])) &&
scalarsEqual(
pubInputs.hNote,
await hashedNote(
advice.id,
advice.nullifier,
advice.trapdoor,
advice.initialDeposit
)
) &&
scalarsEqual(pubInputs.initialDeposit, advice.initialDeposit)
);
return Promise.resolve(true);
}
}

class MockedDepositCircuit implements DepositCircuit {
prove(): Promise<Proof> {
prove(values: DepositAdvice): Promise<Proof> {
return Promise.resolve(new Uint8Array());
}

verify(): Promise<boolean> {
async verify(proof: Proof, pubInputs: DepositPubInputs): Promise<boolean> {
guspiel marked this conversation as resolved.
Show resolved Hide resolved
return Promise.resolve(true);
}
}
Expand Down
Loading